Upload
arangodb
View
1.255
Download
8
Embed Size (px)
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/
Citation preview
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