introduction to arangodb (nosql matters barcelona 2012)
DESCRIPTION
ArangoDB is a universal open-source database with a flexible data model for documents, graphs, and key-values. Build high performance applications using a convenient sql-like query language or JavaScript/Ruby extensions. The video is also available online: http://2012.nosql-matters.org/bcn/speakers/TRANSCRIPT
mar$n Schoenert, triAGENS 2012/10/06
—The universal mul$ model database —
Approaching ArangoDB
• Universal mul$ model database
• Mostly memory
– Free as in beer – Lives on GitHub – Apache License V2
• Started in Sep 2011 • Version 1 in Sep 2012
Ope
n source
Why did we start with ArangoDB?
• Ini$al ques$ons: – “How should an ideal universal database look like?” – “Is it already out there?”
• ArangoDB – unique feature set – solves some problems of other nosql DBs – greenfield project – led by experience
Projects benefit from a universal DB
“We need some loca$on based services.”
“Please add a recommenda$on system.”
“We have many users now. It must s$ll be fast.”
Requirements evolve:
A growing community
.. working on the geo index, the full text search and many APIs: Ruby, Python, PHP, JAVA, D, ...
Voices from the audience
“Because AvocadoDB (aka ArangoDB) came out, energy to write D language client of [AnotherDB] has faded away completely”.
Recommenda$on from Mr. Ruby himself J
ArangoDB – a mul$-‐model database
Key/Value Store Graph Database Source: Andrew Carol
Document Store
Accessing data
Query by example
GET /_api/document/document-handle PUT /_api/document/document-handle
db.users.byExample({ "age" : 42 }).toArray(); db.cities.near( "latitude" : 50, "longitude“ :7). limit(5).toArray();
REST interface
ArangoDB query language (AQL) FOR u in Users FILTER u.address.country == "USA" SORT u.address.city RETURN { name : u.name, city : u.address.city }
Extend ArangoDB via “ac$ons”
• Pimp ArangoDB using ac$ons with extra features in – Ruby (mruby = embedded Ruby) – Javascript (V8)
• Do it in a performing way (close to the data)
Ac$ons enrich ArangoDB • Transac$ons • Cascading deletes/updates • Assign permissions to ac$ons • Wrap everything in a protocol (e.g.
LDAP)
Replica$on & sharding Replica$on: • Coming in V2 • Master/master or master/slave • Sync or async
Sharding: • Sharding is for LARGE data sets • How many tera bytes of data do you have? • Let’s discuss this feature!
Technology
• Indices – Skip lists, geo index, FTS
• Shapes – schema free/schemes
• Mul$version Concurrency – memory-‐mapped-‐files – garbage collec$on
Performance
Inser$ng 1 million documents => 24,3 seconds 41.200 inserts/second
Reading 1 million documents => 93,6 seconds 10.600 requests/second
Primary index lookup & return of the document using AQL: FOR u IN users FILTER u._id == ”<docId>" RETURN u 1 million HTTP requests => 94,1 seconds 10.600 requests/second
Get in touch :: join the team
hrp://www.arangodb.org hrps://github.com/triAGENS/ArangoDB/ Google Group: ArangoDB Twirer: @ArangoDB