!
the multi-purpose NoSQL Database
!
www.arangodb.org

1
Why did we start ArangoDB?
How should an ideal multi-purpose database look like?
Is it already out there?
!

‣ Second Generation NoSQL DB
‣ Unique feature set
‣ Solves some problems of other NoSQL DBs
‣ Greenfield project
‣ Experienced team building NoSQL DBs for more than 10
years

2
Main Features
‣ Open source and free
ArangoDB is available under the Apache 2 licence.

‣ Multi model database
Model your data using flexible combinations of key-value pairs,
documents and graphs.

‣ Convenient querying
AQL is a declarative query language similar to SQL. Other
options are REST and querying by example.

‣ Extendable through JS
No language zoo: you can use one language from your browser
to your back-end.

‣ High performance & space efficiency
ArangoDB is fast and takes less space than other nosql
databases

‣ Easy to use
Up and running in seconds, administer ArangoDB using its
graphical user interface.

‣ Started in Sep 2011
‣ Version 1.0 in Sep 2012

!
‣ Actual: Version 1.4
‣

Multi Database Suport

‣

Foxx API Framework

‣

Master/Slave Replication
3
Free and Open Source
‣ Apache 2 License
The Apache License is recognised by the Open Source Initiative as a popular and widely deployed licence
with a strong community. All of The Apache Software Foundation’s projects, including the Apache HTTP
Server project whose software powers more than half of the Internet’s web servers, use this licence.

‣ On Github
Community can report issues, participate and improve ArangoDB with just a few mouse clicks.

‣ Do what you want with it
You can even use ArangoDB in your commercial projects for free. Just leave the disclaimer intact.

‣ ... and don‘t pay a dime!
that is, unless you want to support this great project :-)

4
Multi model database
Key/Value Store

Document Store

Graph Database

Source: Andrew Carol

Polyglot Persistence

5
Key-Value Store
‣ Map value data to unique string keys (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.
!

ArangoDB
‣ It‘s currently supported as a key-value document.
‣ In the near future it supports special key-value collection.
‣ One of the optimization will be the elimination of JSON in
this case, so the value need not be parsed.
‣ Sharding capabilities of Key-Value Collections will differ
from Document Collections
6
Document Store
‣ Normally based on key-value stores (each document 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
!

ArangoDB
‣ It supports both. A database can contain collections from
different types.
‣ For efficient memory handling we have an automatic
schema recognition.
‣ It has different ways to retrieve data. CRUD via RESTful
Interface, QueryByExample, JS for graph traversals and
AQL.
7
Graph Store
‣ Example: Computer Science Bibliography
!
!
!

Type: inproceeding
Title: Finite Size Effects

Label: written

Label: published
Pages: 99-120

Type: proceeding
Title: Neural Modeling

Label: edited

!
!

Type: person
Name: Anthony C. C.
Coolen

Type: person
Name: Snchez-Andrs

ArangoDB
‣ Supports Property Graphs
‣ Vertices and edges are documents
‣ Query them using geo-index, full-text, SQL-like queries
‣ Edges are directed relations between vertices
‣ Custom traversals and built-in graph algorithms
8
NoSQL Map
Analytic Processing DBs

Transaction Processing DBs

Managing the evolving state of an IT system

Complex Queries

Column-

Stores

Extensibility
Structured
Data

Map/Reduce

Documents

Graphs
Massively
Distributed

Key/Value

9
Another NoSQL Map
Analytic Processing DBs

Transaction Processing DBs

Managing the evolving state of an IT system

Complex Queries

Column-

Stores

Extensibility
Structured
Data

Map/Reduce

Documents

Graphs
Massively
Distributed

Key/Value

10
Polyglot Persistence
Speculative Retailer‘s Web Application
Polyglot Persistence Example*


Polyglot Persistence with ArangoDB

User Sessions

Financial Data

User Sessions

Financial Data

Redis

RDBMS

ArangoDB

ArangoDB

Shopping Cart

Recommendations

Shopping Cart

Recommendations

Riak

Neo4J

ArangoDB

ArangoDB

Product Catalog

Analytics

Product Catalog

Analytics

MongoDB

Cassandra

ArangoDB

Cassandra

Reporting

User activity log

Reporting

User activity log

RDBMS

Cassandra

RDBMS

Cassandra

*) Source: Martin Fowler, http://martinfowler.com/articles/nosql-intro.pdf

11
Convenient querying
Different scenarios require different access methods:
‣ Query 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
12
Why another query language?
‣ Initially, we implemented a subset of SQL SELECT for
querying, but it didn't fit well:
‣ ArangoDB is a document database, but SQL is a language
used in the relational world
‣ Dealing with multi-valued attributes and creating
horizontal lists with SQL is quite painful, but we needed
these features
‣ We looked at UNQL, which addressed some of the problems,
but the project seemed dead and there were no working
UNQL implementations
‣ XQuery seemed quite powerful, but a bit too complex for
simple queries and a first implementation
‣ JSONiq wasn't there when we started :-)
13
ArangoDB Query Language (AQL)
‣ We rolled our own query language.
‣ It‘s a declarative language, loosely based on the syntax of
XQuery.
‣ The language uses other keywords than SQL so it's clear that
the languages are different.
‣ It‘s human readable und easy to undersatnd.
‣ AQL is implemented in C and JavaScript.
‣ First version of AQL was released in mid-2012.

14
Example for Aggregation
‣ Retrieve cities with the number of users:
FOR u IN users
COLLECT city = u.city INTO g
RETURN {
city : city,
numUsersInCity: LENGTH(g)
}

15
Example for Graph Query
‣ Paths:
FOR u IN users
LET userRelations = (
FOR p IN PATHS(
users,
relations,
OUTBOUND
)
FILTER p._from == u._id
RETURN p
)
RETURN {
user : u,
relations : userRelations
}
16
Extendable through JS
‣ Scripting-Languages enrich ArangoDB
‣ 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
‣ Help to create efficient Push Services - in the near Future
!

‣ Currently supported
‣ Javascript (Google V8)
‣ Mruby (experimental, not fully integrated yet)
17
Action Server - kind of Application Server
‣ ArangoDB can answer arbitrary HTTP requests directly
‣ You can write your own JavaScript functions (“actions”) that
will be executed server-side
‣ Includes a permission system
!

➡ You can use it as a database or as a combined database/app
server

18
APIs - will become more  more important
‣ Single Page Web Applications
‣ Native Mobile Applications
‣ ext. Developer APIs

19
ArangoDB Foxx
‣ What if you could talk to the database directly?
‣ It would only need an API.
‣ What if we could define this API in JavaScript?
!

/
(~(
) )
/_/
( _-----_(@ @)
(
 /
/|/--| V
 
 

!
!
!
!
!

‣ ArangoDB Foxx is streamlined for API creation – not a jack of
all trades
‣ It is designed for front end developers: Use JavaScript, which
you already know (without running into callback hell)
20
Foxx - Simple Example
FoxxApplication = require(org/arangodb/foxx).Application;
app = new FoxxApplication(applicationContext);
app.get(/test
, function(req, res) {
res.set(Content-Type, text/plain);
res.body = Worked!;
});

21
Foxx - More features
‣ Full access to ArangoDB‘s internal APIs:
‣ Simple Queries
‣ AQL
‣ Traversals

‣ Automatic generation of interactive documentation
‣ Models and Repositories
‣ Central repository of Foxx apps for re-use and inspiration
‣ Authentication Module

22
High performance  space efficiency
RAM is cheap, but it's still not free and data volume is growing
fast. Requests volumes are also growing. So performance and
space efficiency are key features of a multi-purpose database.
!

‣ ArangoDB supports automatic schema recognition, so it is one
of the most space efficient document stores.
‣ It offers a performance oriented architecture with a C database
core, a C++ communication layer, JS and C++ for additional
functionalities.
‣ Performance critical points can be transformed to C oder C++.
‣ Although ArangoDB has a wide range of functions, such as MVCC
real ACID, schema recognition, etc., it can compete with popular
stores documents.
23
Space Efficiency
‣ Measure the space on disk of different data sets
‣ First in the standard config, then with some optimization
‣ We measured a bunch of different tasks

24
Store 50,000 Wiki Articles
2000 MB

1500 MB

1000 MB

500 MB

0 MB

ArangoDB
Normal
Optimized

CouchDB

MongoDB

http://www.arangodb.org/2012/07/08/collection-disk-usage-arangodb

25
3,459,421 AOL Search Queries
2200 MB

1650 MB

1100 MB

550 MB

0 MB

ArangoDB

CouchDB

MongoDB

Normal
Optimized
http://www.arangodb.org/2012/07/08/collection-disk-usage-arangodb

26
Performance: Disclaimer
‣ Always take performance tests with a grain 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

27
Execution Time:
Bulk Insert of 10,000,000 documents

ArangoDB

CouchDB

MongoDB

http://www.arangodb.org/2012/09/04/bulk-inserts-mongodb-couchdb-arangodb

28
Conclusion from Tests
‣ ArangoDB is really space efficient
‣ ArangoDB is “fast enough”
‣ Please test it for your own use case

29
Easy to use
‣ Easy to use admin interface
‣ Simple Queries for simple queries, AQL for complex queries
‣ Simplify your setup: ArangoDB only – no Application Server
etc. – on a single server is sufficient for some use cases
‣ You need graph queries or key value storage? You don't need
to add another component to the mix.
‣ No external dependencies like the JVM – just install
ArangoDB
‣ HTTP interface – use your load balancer

30
Admin Frontend
Dashboard

31
Admin Frontend
Collections  Documents

32
Admin Frontend
AQL development

33
Admin Frontend
complete V8 access

34
ArangoShell

35
Join the growing community
They are working on geo index, full text
search and many APIs: Ruby, Python,
PHP, JAVA, D, ...

36
ArangoDB.explain()
{
type:
model:
openSource:
license“:
version:
builtWith:
uses:
mainFeatures:

“multi-purpose NoSQL database,
[ document, graph, key-value ],
true,
apache 2,
[ “1.4.9 stable, 2.0 alpha ],
[ C, C++, JS ],
[ Google V8 ],
[
Multi-Collection-Transaction,
Foxx API Framework,
ArangoDB Query Language,
Various Indexes,
API Server,
Automatic Schema Recognition

]
}
37
Appendix

38
Data Sheet
‣ Universal Multi-Model Database

Document, Graph and Key/Value

‣ Extendable through MRuby and Javascript
Google V8-Engine

‣ Written in C++ with high speed C Core

‣ Integrated Application Server

‣ Easy to Install  Configure

‣ Javascript API Framework “Foxx”


‣ Runs on Linux, BSD, Mac OS and Windows
‣ Sharding and Replication (in development)

!
‣ Mostly memory (durable on hard disc)
‣ Multi-Threaded

‣ ArangoDB Query Language (AQL)
‣ Query by Example
‣ RESTful Query Interface
‣ Modular Graph Traversal Algorithms

!

‣ Powerful Indices 

full-text search, hash indices, priority
queues, skip lists, geo indices

‣ Easy Administration and Enhanced System
Monitoring

‣ Schema-less schemata (schema recognition)

‣ Web-based Console and CLI commands

‣ Multi Collection Transactions

‣ Efficient Data Import and Export Tools

‣ Driver support for all popular platforms
Node.js, JS, PHP, Ruby, Go, D, Python,
Blueprints / Gremlin, C# / .Net, Java

‣ Fully documented Source Code and APIs

!

39

ArangoDB – A different approach to NoSQL

  • 1.
    ! the multi-purpose NoSQLDatabase ! www.arangodb.org 1
  • 2.
    Why did westart ArangoDB? How should an ideal multi-purpose database look like? Is it already out there? ! ‣ Second Generation NoSQL DB ‣ Unique feature set ‣ Solves some problems of other NoSQL DBs ‣ Greenfield project ‣ Experienced team building NoSQL DBs for more than 10 years 2
  • 3.
    Main Features ‣ Opensource and free ArangoDB is available under the Apache 2 licence. ‣ Multi model database Model your data using flexible combinations of key-value pairs, documents and graphs. ‣ Convenient querying AQL is a declarative query language similar to SQL. Other options are REST and querying by example. ‣ Extendable through JS No language zoo: you can use one language from your browser to your back-end. ‣ High performance & space efficiency ArangoDB is fast and takes less space than other nosql databases ‣ Easy to use Up and running in seconds, administer ArangoDB using its graphical user interface. ‣ Started in Sep 2011 ‣ Version 1.0 in Sep 2012 ! ‣ Actual: Version 1.4 ‣ Multi Database Suport ‣ Foxx API Framework ‣ Master/Slave Replication 3
  • 4.
    Free and OpenSource ‣ Apache 2 License The Apache License is recognised by the Open Source Initiative as a popular and widely deployed licence with a strong community. All of The Apache Software Foundation’s projects, including the Apache HTTP Server project whose software powers more than half of the Internet’s web servers, use this licence. ‣ On Github Community can report issues, participate and improve ArangoDB with just a few mouse clicks. ‣ Do what you want with it You can even use ArangoDB in your commercial projects for free. Just leave the disclaimer intact. ‣ ... and don‘t pay a dime! that is, unless you want to support this great project :-) 4
  • 5.
    Multi model database Key/ValueStore Document Store Graph Database Source: Andrew Carol Polyglot Persistence 5
  • 6.
    Key-Value Store ‣ Mapvalue data to unique string keys (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. ! ArangoDB ‣ It‘s currently supported as a key-value document. ‣ In the near future it supports special key-value collection. ‣ One of the optimization will be the elimination of JSON in this case, so the value need not be parsed. ‣ Sharding capabilities of Key-Value Collections will differ from Document Collections 6
  • 7.
    Document Store ‣ Normallybased on key-value stores (each document 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 ! ArangoDB ‣ It supports both. A database can contain collections from different types. ‣ For efficient memory handling we have an automatic schema recognition. ‣ It has different ways to retrieve data. CRUD via RESTful Interface, QueryByExample, JS for graph traversals and AQL. 7
  • 8.
    Graph Store ‣ Example:Computer Science Bibliography ! ! ! Type: inproceeding Title: Finite Size Effects Label: written Label: published Pages: 99-120 Type: proceeding Title: Neural Modeling Label: edited ! ! Type: person Name: Anthony C. C. Coolen Type: person Name: Snchez-Andrs ArangoDB ‣ Supports Property Graphs ‣ Vertices and edges are documents ‣ Query them using geo-index, full-text, SQL-like queries ‣ Edges are directed relations between vertices ‣ Custom traversals and built-in graph algorithms 8
  • 9.
    NoSQL Map Analytic ProcessingDBs Transaction Processing DBs Managing the evolving state of an IT system Complex Queries Column-
 Stores Extensibility Structured Data Map/Reduce Documents Graphs Massively Distributed Key/Value 9
  • 10.
    Another NoSQL Map AnalyticProcessing DBs Transaction Processing DBs Managing the evolving state of an IT system Complex Queries Column-
 Stores Extensibility Structured Data Map/Reduce Documents Graphs Massively Distributed Key/Value 10
  • 11.
    Polyglot Persistence Speculative Retailer‘sWeb Application Polyglot Persistence Example*
 Polyglot Persistence with ArangoDB User Sessions Financial Data User Sessions Financial Data Redis RDBMS ArangoDB ArangoDB Shopping Cart Recommendations Shopping Cart Recommendations Riak Neo4J ArangoDB ArangoDB Product Catalog Analytics Product Catalog Analytics MongoDB Cassandra ArangoDB Cassandra Reporting User activity log Reporting User activity log RDBMS Cassandra RDBMS Cassandra *) Source: Martin Fowler, http://martinfowler.com/articles/nosql-intro.pdf 11
  • 12.
    Convenient querying Different scenariosrequire different access methods: ‣ Query 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 12
  • 13.
    Why another querylanguage? ‣ Initially, we implemented a subset of SQL SELECT for querying, but it didn't fit well: ‣ ArangoDB is a document database, but SQL is a language used in the relational world ‣ Dealing with multi-valued attributes and creating horizontal lists with SQL is quite painful, but we needed these features ‣ We looked at UNQL, which addressed some of the problems, but the project seemed dead and there were no working UNQL implementations ‣ XQuery seemed quite powerful, but a bit too complex for simple queries and a first implementation ‣ JSONiq wasn't there when we started :-) 13
  • 14.
    ArangoDB Query Language(AQL) ‣ We rolled our own query language. ‣ It‘s a declarative language, loosely based on the syntax of XQuery. ‣ The language uses other keywords than SQL so it's clear that the languages are different. ‣ It‘s human readable und easy to undersatnd. ‣ AQL is implemented in C and JavaScript. ‣ First version of AQL was released in mid-2012. 14
  • 15.
    Example for Aggregation ‣Retrieve cities with the number of users: FOR u IN users COLLECT city = u.city INTO g RETURN { city : city, numUsersInCity: LENGTH(g) } 15
  • 16.
    Example for GraphQuery ‣ Paths: FOR u IN users LET userRelations = ( FOR p IN PATHS( users, relations, OUTBOUND ) FILTER p._from == u._id RETURN p ) RETURN { user : u, relations : userRelations } 16
  • 17.
    Extendable through JS ‣Scripting-Languages enrich ArangoDB ‣ 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 ‣ Help to create efficient Push Services - in the near Future ! ‣ Currently supported ‣ Javascript (Google V8) ‣ Mruby (experimental, not fully integrated yet) 17
  • 18.
    Action Server -kind of Application Server ‣ ArangoDB can answer arbitrary HTTP requests directly ‣ You can write your own JavaScript functions (“actions”) that will be executed server-side ‣ Includes a permission system ! ➡ You can use it as a database or as a combined database/app server 18
  • 19.
    APIs - willbecome more more important ‣ Single Page Web Applications ‣ Native Mobile Applications ‣ ext. Developer APIs 19
  • 20.
    ArangoDB Foxx ‣ Whatif you could talk to the database directly? ‣ It would only need an API. ‣ What if we could define this API in JavaScript? ! / (~( ) ) /_/ ( _-----_(@ @) ( / /|/--| V ! ! ! ! ! ‣ ArangoDB Foxx is streamlined for API creation – not a jack of all trades ‣ It is designed for front end developers: Use JavaScript, which you already know (without running into callback hell) 20
  • 21.
    Foxx - SimpleExample FoxxApplication = require(org/arangodb/foxx).Application; app = new FoxxApplication(applicationContext); app.get(/test , function(req, res) { res.set(Content-Type, text/plain); res.body = Worked!; }); 21
  • 22.
    Foxx - Morefeatures ‣ Full access to ArangoDB‘s internal APIs: ‣ Simple Queries ‣ AQL ‣ Traversals ‣ Automatic generation of interactive documentation ‣ Models and Repositories ‣ Central repository of Foxx apps for re-use and inspiration ‣ Authentication Module 22
  • 23.
    High performance space efficiency RAM is cheap, but it's still not free and data volume is growing fast. Requests volumes are also growing. So performance and space efficiency are key features of a multi-purpose database. ! ‣ ArangoDB supports automatic schema recognition, so it is one of the most space efficient document stores. ‣ It offers a performance oriented architecture with a C database core, a C++ communication layer, JS and C++ for additional functionalities. ‣ Performance critical points can be transformed to C oder C++. ‣ Although ArangoDB has a wide range of functions, such as MVCC real ACID, schema recognition, etc., it can compete with popular stores documents. 23
  • 24.
    Space Efficiency ‣ Measurethe space on disk of different data sets ‣ First in the standard config, then with some optimization ‣ We measured a bunch of different tasks 24
  • 25.
    Store 50,000 WikiArticles 2000 MB 1500 MB 1000 MB 500 MB 0 MB ArangoDB Normal Optimized CouchDB MongoDB http://www.arangodb.org/2012/07/08/collection-disk-usage-arangodb 25
  • 26.
    3,459,421 AOL SearchQueries 2200 MB 1650 MB 1100 MB 550 MB 0 MB ArangoDB CouchDB MongoDB Normal Optimized http://www.arangodb.org/2012/07/08/collection-disk-usage-arangodb 26
  • 27.
    Performance: Disclaimer ‣ Alwaystake performance tests with a grain 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 27
  • 28.
    Execution Time: Bulk Insertof 10,000,000 documents ArangoDB CouchDB MongoDB http://www.arangodb.org/2012/09/04/bulk-inserts-mongodb-couchdb-arangodb 28
  • 29.
    Conclusion from Tests ‣ArangoDB is really space efficient ‣ ArangoDB is “fast enough” ‣ Please test it for your own use case 29
  • 30.
    Easy to use ‣Easy to use admin interface ‣ Simple Queries for simple queries, AQL for complex queries ‣ Simplify your setup: ArangoDB only – no Application Server etc. – on a single server is sufficient for some use cases ‣ You need graph queries or key value storage? You don't need to add another component to the mix. ‣ No external dependencies like the JVM – just install ArangoDB ‣ HTTP interface – use your load balancer 30
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
    Join the growingcommunity They are working on geo index, full text search and many APIs: Ruby, Python, PHP, JAVA, D, ... 36
  • 37.
    ArangoDB.explain() { type: model: openSource: license“: version: builtWith: uses: mainFeatures: “multi-purpose NoSQL database, [document, graph, key-value ], true, apache 2, [ “1.4.9 stable, 2.0 alpha ], [ C, C++, JS ], [ Google V8 ], [ Multi-Collection-Transaction, Foxx API Framework, ArangoDB Query Language, Various Indexes, API Server, Automatic Schema Recognition ] } 37
  • 38.
  • 39.
    Data Sheet ‣ UniversalMulti-Model Database
 Document, Graph and Key/Value ‣ Extendable through MRuby and Javascript Google V8-Engine ‣ Written in C++ with high speed C Core ‣ Integrated Application Server ‣ Easy to Install Configure ‣ Javascript API Framework “Foxx”
 ‣ Runs on Linux, BSD, Mac OS and Windows ‣ Sharding and Replication (in development) ! ‣ Mostly memory (durable on hard disc) ‣ Multi-Threaded ‣ ArangoDB Query Language (AQL) ‣ Query by Example ‣ RESTful Query Interface ‣ Modular Graph Traversal Algorithms ! ‣ Powerful Indices 
 full-text search, hash indices, priority queues, skip lists, geo indices ‣ Easy Administration and Enhanced System Monitoring ‣ Schema-less schemata (schema recognition) ‣ Web-based Console and CLI commands ‣ Multi Collection Transactions ‣ Efficient Data Import and Export Tools ‣ Driver support for all popular platforms Node.js, JS, PHP, Ruby, Go, D, Python, Blueprints / Gremlin, C# / .Net, Java ‣ Fully documented Source Code and APIs ! 39