introduction to arangodb (nosql matters barcelona 2012)

13
mar$n Schoenert, triAGENS 2012/10/06 —The universal mul$ model database —

Upload: arangodb

Post on 29-Aug-2014

1.255 views

Category:

Documents


8 download

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

Page 1: Introduction to ArangoDB (nosql matters Barcelona 2012)

mar$n  Schoenert,  triAGENS  2012/10/06  

—The  universal  mul$  model  database  —    

Page 2: Introduction to ArangoDB (nosql matters Barcelona 2012)

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  

Page 3: Introduction to ArangoDB (nosql matters Barcelona 2012)

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    

Page 4: Introduction to ArangoDB (nosql matters Barcelona 2012)

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:  

Page 5: Introduction to ArangoDB (nosql matters Barcelona 2012)

A  growing  community  

..  working  on  the    geo  index,  the  full  text  search  and  many  APIs:    Ruby,  Python,  PHP,  JAVA,  D,  ...  

Page 6: Introduction to ArangoDB (nosql matters Barcelona 2012)

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  

Page 7: Introduction to ArangoDB (nosql matters Barcelona 2012)

ArangoDB  –  a  mul$-­‐model  database  

Key/Value  Store   Graph  Database  Source:  Andrew  Carol  

Document  Store  

Page 8: Introduction to ArangoDB (nosql matters Barcelona 2012)

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 }

Page 9: Introduction to ArangoDB (nosql matters Barcelona 2012)

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)  

Page 10: Introduction to ArangoDB (nosql matters Barcelona 2012)

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!  

Page 11: Introduction to ArangoDB (nosql matters Barcelona 2012)

Technology  

•  Indices  –  Skip  lists,  geo  index,  FTS  

•  Shapes  –  schema  free/schemes  

•  Mul$version  Concurrency  – memory-­‐mapped-­‐files  –  garbage  collec$on  

Page 12: Introduction to ArangoDB (nosql matters Barcelona 2012)

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  

Page 13: Introduction to ArangoDB (nosql matters Barcelona 2012)

Get  in  touch  ::  join  the  team  

hrp://www.arangodb.org  hrps://github.com/triAGENS/ArangoDB/  Google  Group:  ArangoDB  Twirer:  @ArangoDB