- The document discusses ArangoDB, an open source multi-model database that supports documents, graphs, and key-value stores.
- It began development in 2011 and reached version 1.0 in 2012. The database aims to provide a universal solution as requirements change and scale.
- ArangoDB offers high performance, a query language, extensions via actions, and supports features like replication and sharding.
2. Approaching
ArangoDB
• Universal
mul$
model
database
• Mostly
memory
Open
source
– Free
as
in
beer
– Lives
on
GitHub
– Apache
License
V2
• Started
in
Sep
2011
• Version
1
in
Sep
2012
3. 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
4. Projects
benefit
from
a
universal
DB
Requirements
evolve:
“We
need
some
loca$on
based
services.”
“Please
add
a
recommenda$on
system.”
“We
have
many
users
now.
It
must
s$ll
be
fast.”
5. A
growing
community
..
working
on
the
geo
index,
the
full
text
search
and
many
APIs:
Ruby,
Python,
PHP,
JAVA,
D,
...
6. Voices
from
the
audience
Recommenda$on
from
Mr.
Ruby
himself
J
“Because
AvocadoDB
(aka
ArangoDB)
came
out,
energy
to
write
D
language
client
of
[AnotherDB]
has
faded
away
completely”.
7. ArangoDB
–
a
mul$-‐model
database
Key/Value
Store
Graph
Database
Document
Store
Source:
Andrew
Carol
8. Accessing
data
REST
interface
GET /_api/document/document-handle
PUT /_api/document/document-handle
Query
by
example
db.users.byExample({ "age" : 42 }).toArray();
db.cities.near( "latitude" : 50, "longitude“ :7).
limit(5).toArray();
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 }
9. 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)
10. 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!
12. 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
13. Get
in
touch
::
join
the
team
hrp://www.arangodb.org
hrps://github.com/triAGENS/ArangoDB/
Google
Group:
ArangoDB
Twirer:
@ArangoDB