model database ‣ Convenient querying ‣ Extendable through JS ‣ High performance & space efficiency ‣ Easy to use ‣ Started in Sep 2011 ‣ Current Version: 1.4
(identifiers) ‣ Treat data as opaque (data has no structure) ‣ Can implement scaling and partitioning easily due to simplistic data model ‣ Key-value can be seen as a special case of documents. For many applications this is sufficient, but not for all cases.
still has a unique key) ‣ Allow to save documents with logical similarity in „collections“ ‣ Treat data records as attribute-structured documents (data is no longer opaque) ‣ Often allows querying and indexing document attributes
a document by its unique id / key: GET /_api/document/users/12345 ‣ Query by providing an example document: PUT /_api/simple/by-example { "name": "Jan", "age": 38 } ‣ Query via AQL: FOR user IN users FILTER user.active == true RETURN { name: user.name } ‣ Graph Traversals und JS for your own traversals ‣ JS Actions for “intelligent” DB request
Hard to read & write for more complex queries ‣ Complex queries, joins and transactions not possible ‣ CouchDB uses Map/Reduces ‣ It‘s not a relational algebra, and therefore hard to generate ‣ Not easy to learn (depending on where you’re coming from) ‣ Complex queries, cross collection joins and transactions not possible
LET userRelations = ( FOR p IN PATHS( users, relations, "OUTBOUND" ) FILTER p._from == u._id RETURN p ) RETURN { "user" : u, "relations" : userRelations }
Multi Collection Transactions ‣ Building small and efficient Apps - Foxx App Framework ‣ Individually Graph Traversals ‣ Cascading deletes/updates ‣ Assign permissions to actions ‣ Aggregate data from multiple queries into a single response ‣ Carry out data-intensive operations
HTTP based API of ArangoDB ‣ In ArangoDB you can extend the API of the database ‣ Write your own JavaScript functions (“actions”) that will be executed server-side ‣ Includes a permission system ‣ A framework called Foxx makes this simple ‣ You can even deactivate the normal API and talk to the database directly from the client
Performance oriented architecture with a C database core, a C++ communication layer, JS and C++ for additional functionality ‣ Performance critical points can be transformed to C oder C++ ‣ Let’s look at some stats
of salt ‣ Performance is very dependent on a lot of factors including the specific task at hand ‣ This is just to give you a glimpse at the performance ‣ Always do your own performance tests (and if you do, report back to us :) ) ‣ But now: Let‘s see some numbers
for ArangoDB ‣ https://github.com/triagens/ashikawa-core ‣ Guacamole will be the ODM for Rails ‣ https://github.com/triagens/guacamole ‣ In an early stage