model database ‣ AQL ‣ Extendable through JS ‣ Replication & sharding ‣ High performance & space efficiency ‣ Powerful Admin Interface ‣ Ashikawa & Guacamole ‣ Started in Sep 2011 ‣ Current Version: 2.2
‘all NoSQL databases’ are probably wrong ‣ “NoSQL databases can’t do joins” ‣ “NoSQL databases don’t support transactions” ‣ A lot of different categories ‣ Graph Databases ‣ Data Structure Servers ‣ Aggregate Oriented Databases ‣ Time Series Databases ‣ … 7
& Column Family ‣ Aggregate Oriented DB: Store an aggregate as one unit ‣ Aggregate: “A cluster of domain objects that can be treated as a single unit” ! ArangoDB ‣ Is an aggregate oriented database ‣ Allow to save documents with logical similarity in collections ‣ Automatic schema recognition for efficient memory handling 8
ArangoDB ‣ Is a graph database that supports property graphs ‣ Custom traversals and built-in graph algorithms Graph Database 9 Type: inproceeding Title: Finite Size Effects Type: proceeding Title: Neural Modeling Type: person Name: Anthony C. C. Coolen Label: written Label: published Pages: 99-120 Type: person Name: Snchez-Andrs Label: edited
Joins ‣ Simple Example: FOR user IN users FILTER user.active == true RETURN { name: user.name } ‣ Other ways of querying: ‣ Query by Example ‣ Graph Traversals ‣ Foxx for extending your API 12
Source: http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/ users friends commenter liker many many many many one one posts comments likes
posts comments likes Why you may want a more expressive query language 14 ‣ Model it as you would in a SQL database ‣ comments gets a commenter_id – then do a join
posts comments likes Why you may want a more expressive query language 15 ‣ Model it as you would in a document store ‣ posts embed comments as an array
posts comments likes Why you may want a more expressive query language 16 ‣ Model it as you would in a graph database ‣ users as nodes, friendships as edges
LET userRelations = ( FOR p IN PATHS( users, relations, "OUTBOUND" ) FILTER p._from == u._id RETURN p ) RETURN { "user" : u, "relations" : userRelations } 18
Transactions ‣ Extending the Web API ‣ Aggregate data from multiple queries into a single response ‣ Carry out data-intensive operations ‣ Individual Graph Traversals 19
ext. Developer APIs ! ‣ ArangoDB has an HTTP API ‣ What if you could talk to the database directly? ‣ It would only need an HTTP API. ‣ What if we could define this API in JavaScript? HTTP APIs 20
recognition, so it is one of the most space efficient document stores. ‣ Although ArangoDB has a wide range of functions, such as MVCC real ACID, schema recognition, etc., it can compete with popular document stores. 26