SlideShare a Scribd company logo
ArangoDB

/* Using Javascript
   in the database */

 Jan Steemann, triAGENS, Cologne
ArangoDB
  basics



www.arangodb.org © j.steemann@triagens.de
ArangoDB.explain()

{
    "type":             "NoSQL database",
    "openSource": true,
    "version":          1.0,
    "builtWith": [ "C", "C++", "js" ],
    "Javascript": [ "client side",
                "server side" ],
    "uses":             [ "V8" ]
}

                  www.arangodb.org © j.steemann@triagens.de
Documents
      and collections
ArangoDB is a database that works with
documents

Documents are sets of name / value pairs
(think of JSON objects), e.g.

{ "name": "Jan", "age": 37 }

Documents are organised in collections (like
tables in relational databases)

           www.arangodb.org © j.steemann@triagens.de
Data types: JSON!

ArangoDB operates on JSON documents

JSON data can be saved as-is:

db.users.save({
  "name": "Jan",
  "uses": [ "vi", "js", "C++" ]
});


            www.arangodb.org © j.steemann@triagens.de
Schema-free
Documents can be heterogenous –
even in the same collection, e.g.

{ "name": "Jan", "age": 37 },
{ "name": "Tim", "likes": [ "js" ] },
{ "name": {
    "first": "Patrick",
    "last": "Star"
  }
}

No need to care about schemas
              www.arangodb.org © j.steemann@triagens.de
API & protocols
ArangoDB server functionality is exposed via an
HTTP REST API

ArangoDB answers HTTP queries,
so it can be used from the browser

Simple to use from Javascript clients

(3rd party) drivers available for node.js, Ruby,
PHP, ...

Javascript-enabled client shell provided

           www.arangodb.org © j.steemann@triagens.de
Querying



www.arangodb.org © j.steemann@triagens.de
Querying is simple

Query a document by its unique id / key:
db._document("users/9558905");

Query by providing an example:
db.users.byExample({
  "name": "Jan",
  "age": 37
});



          www.arangodb.org © j.steemann@triagens.de
Indexes
ArangoDB allows querying on any document
attributes or sub-attributes

Secondary indexes can be created for higher
query performance:
•   Hash indexes (equality queries)
•   Skiplists (range queries)
•   2d geo indexes (location queries)

            www.arangodb.org © j.steemann@triagens.de
Geo index examples


// get b a r n ea r es t t o coor d in a t e
db.bars.near(48.51, 2.21).limit(1);

// get a ll s h op s w it h in r a d iu s
// a r ou n d coor d in a t e
db.shops.within(48.51, 2.21, rad);



               www.arangodb.org © j.steemann@triagens.de
References
ArangoDB can store references between
documents

References are documents with two endpoints
(the documents they connect)

Reference documents can carry own attributes




          www.arangodb.org © j.steemann@triagens.de
References example
Users documents:                                     Relations documents:
                                                     (references)
{
    "name": "Jan",
    "age": 37                                        {
}                                                        "_from": "users/jan",
                                                         "_to": "users/tim",
{                                                        "type": "knows",
    "name": "Tim",                                   }
    "city": "Paris"
}

// q u er y ou t b ou n d r ela t ion s f r om "J a n "
db.relations.outEdges(jan); // => tim
                      www.arangodb.org © j.steemann@triagens.de
Graph queries

References make it possible to process graphs
with ArangoDB

Some special functions are provided to
determine paths in a graph etc.

Can write own Javascript functions for special
traversals


          www.arangodb.org © j.steemann@triagens.de
Query language

ArangoDB can also answer complex
SQL-like queries

Such queries are expressed in ArangoDB's
textual query language

This language allows joins, sub-queries,
aggregation etc.


          www.arangodb.org © j.steemann@triagens.de
Example query
FOR u IN users                                             It er a t or
 FILTER u.addr.country == "US" &&
       (u.isConfirmed == true ||
        u.age >= 18)                                          F ilt er
 LET userLogins = (
   FOR l IN logins
     FILTER l.userId == u.id
     RETURN l
 )                                                       S u b q u er y
 RETURN {
   "user":     u,
   "logins": LENGTH(userLogins)
 }                                                           R es u lt
             www.arangodb.org © j.steemann@triagens.de
Server side „actions“



     www.arangodb.org © j.steemann@triagens.de
Application server

ArangoDB can answer web requests directly

This also makes it an application server

Users can extend its functionality with server
side Javascript „actions“

Actions are user-defined functions that contain
custom business logic


           www.arangodb.org © j.steemann@triagens.de
Actions


Actions are bound to URLs and executed when
URLs are called, e.g.

/users?name=... => function(...)
/users/.../friends => function(...)




           www.arangodb.org © j.steemann@triagens.de
Actions example
function (req, res) {
  // get r eq u es t ed u s er f r om d b ,
  // n a m e is r ea d f r om U R L p a r a m et er
 var u = db.users.byExample({
   "username": req.urlParameters.name
 });

    // r em ov e p a s s w or d h a s h
    delete u.hashedPassword;

    // b ef or e r et u r n in g t o ca ller
    actions.resultOk(req, res, 200, u);
}
                    www.arangodb.org © j.steemann@triagens.de
Actions – Use cases
Filter out sensitive data before responding

Validate input

Check privileges

Check and enforce constraints

Aggregate data from multiple queries into a single
response

Carry out data-intensive operations

           www.arangodb.org © j.steemann@triagens.de
Summary



www.arangodb.org © j.steemann@triagens.de
ArangoDB - summary
Flexible in terms of data modelling and querying

API is based on web standards:
HTTP, REST, JSON

Easy to use from Javascript clients

Can be used as application server

Functionality can be extended with server side
Javascript „actions“

          www.arangodb.org © j.steemann@triagens.de
Thanks!
          Any questions?
Спасибо                                                      Grazie

Teşekkürler                                                ¡Gracias!

Merci!                                                       Хвала

Dank je wel                                               Ευχαριστώ

ありがとう                                                        고마워

Tack så mycket                                               Danke

              www.arangodb.org © j.steemann@triagens.de
Give it a try!
ArangoDB source repository:
https://www.github.com/triAGENS/ArangoDB
(use master branch)

Website: http://www.arangodb.org/

Builds available for Homebrew and
several Linux distributions

Twitter: #arangodb, @arangodb

Google group: ArangoDB
           www.arangodb.org © j.steemann@triagens.de
Roadmap


MVCC / ACID transactions

Triggers

Synchronous and asynchronous replication




           www.arangodb.org © j.steemann@triagens.de
Thank you!
Stay in Touch:
 •   Fork me on github
 •   Google Group: ArangoDB
 •   Twitter: @steemann & @arangodb
 •   www.arangodb.org



                 www.arangodb.org © j.steemann@triagens.de

More Related Content

What's hot (20)

PDF
Query mechanisms for NoSQL databases
ArangoDB Database
 
PDF
A Graph Database That Scales - ArangoDB 3.7 Release Webinar
ArangoDB Database
 
PDF
OrientDB: Unlock the Value of Document Data Relationships
Fabrizio Fortino
 
PDF
OrientDB & Node.js Overview - JS.Everywhere() KW
gmccarvell
 
PPT
Connecting to a REST API in iOS
gillygize
 
PPTX
Graph Databases & OrientDB
Arpit Poladia
 
PDF
Small Overview of Skype Database Tools
elliando dias
 
PPTX
Solid pods and the future of the spatial web
Kurt Cagle
 
PPTX
Using Webservice in iOS
Mahboob Nur
 
PDF
iOS: Web Services and XML parsing
Jussi Pohjolainen
 
PPTX
PostgreSQL - Object Relational Database
Mubashar Iqbal
 
PDF
Introduction to column oriented databases
ArangoDB Database
 
ODP
State of the Semantic Web
Ivan Herman
 
PPTX
RDFa Tutorial
Ivan Herman
 
PDF
elasticsearch basics workshop
Mathieu Elie
 
PPTX
ODTUG Webcast - Thinking Clearly about XML
Marco Gralike
 
PDF
OrientDB introduction - NoSQL
Luca Garulli
 
PDF
The Lonesome LOD Cloud
Ruben Verborgh
 
KEY
OSCON 2011 CouchApps
Bradley Holt
 
PPT
Introduction to couch_db
Romain Testard
 
Query mechanisms for NoSQL databases
ArangoDB Database
 
A Graph Database That Scales - ArangoDB 3.7 Release Webinar
ArangoDB Database
 
OrientDB: Unlock the Value of Document Data Relationships
Fabrizio Fortino
 
OrientDB & Node.js Overview - JS.Everywhere() KW
gmccarvell
 
Connecting to a REST API in iOS
gillygize
 
Graph Databases & OrientDB
Arpit Poladia
 
Small Overview of Skype Database Tools
elliando dias
 
Solid pods and the future of the spatial web
Kurt Cagle
 
Using Webservice in iOS
Mahboob Nur
 
iOS: Web Services and XML parsing
Jussi Pohjolainen
 
PostgreSQL - Object Relational Database
Mubashar Iqbal
 
Introduction to column oriented databases
ArangoDB Database
 
State of the Semantic Web
Ivan Herman
 
RDFa Tutorial
Ivan Herman
 
elasticsearch basics workshop
Mathieu Elie
 
ODTUG Webcast - Thinking Clearly about XML
Marco Gralike
 
OrientDB introduction - NoSQL
Luca Garulli
 
The Lonesome LOD Cloud
Ruben Verborgh
 
OSCON 2011 CouchApps
Bradley Holt
 
Introduction to couch_db
Romain Testard
 

Viewers also liked (12)

PDF
ArangoDB – A different approach to NoSQL
ArangoDB Database
 
ODP
Lokijs
Joe Minichino
 
PDF
Domain Driven Design and NoSQL TLV
ArangoDB Database
 
PDF
ArangoDB
ArangoDB Database
 
PDF
Converting Relational to Graph Databases
Antonio Maccioni
 
PDF
Designing and Building a Graph Database Application – Architectural Choices, ...
Neo4j
 
PDF
Working With a Real-World Dataset in Neo4j: Import and Modeling
Neo4j
 
PPTX
Introduction to Graph Databases
Max De Marzi
 
PPTX
Neo4j Partner Tag Berlin - Potential für System-Integratoren und Berater
Neo4j
 
PDF
Webinar: RDBMS to Graphs
Neo4j
 
PDF
reveal.js 3.0.0
Hakim El Hattab
 
PDF
Neo4j - 5 cool graph examples
Peter Neubauer
 
ArangoDB – A different approach to NoSQL
ArangoDB Database
 
Domain Driven Design and NoSQL TLV
ArangoDB Database
 
Converting Relational to Graph Databases
Antonio Maccioni
 
Designing and Building a Graph Database Application – Architectural Choices, ...
Neo4j
 
Working With a Real-World Dataset in Neo4j: Import and Modeling
Neo4j
 
Introduction to Graph Databases
Max De Marzi
 
Neo4j Partner Tag Berlin - Potential für System-Integratoren und Berater
Neo4j
 
Webinar: RDBMS to Graphs
Neo4j
 
reveal.js 3.0.0
Hakim El Hattab
 
Neo4j - 5 cool graph examples
Peter Neubauer
 
Ad

Similar to ArangoDB - Using JavaScript in the database (20)

PDF
Multi model-databases
Michael Hackstein
 
PDF
Multi model-databases
ArangoDB Database
 
PDF
Guacamole Fiesta: What do avocados and databases have in common?
ArangoDB Database
 
PDF
Oslo bekk2014
Max Neunhöffer
 
PPTX
NodeJS
Alok Guha
 
PDF
Deep dive into the native multi model database ArangoDB
ArangoDB Database
 
PDF
Running complex data queries in a distributed system
ArangoDB Database
 
PDF
Webinar: ArangoDB 3.8 Preview - Analytics at Scale
ArangoDB Database
 
PDF
Deep Dive on ArangoDB
Max Neunhöffer
 
PDF
Processing large-scale graphs with Google Pregel
Max Neunhöffer
 
PDF
An introduction to multi-model databases
ArangoDB Database
 
PDF
An introduction to multi-model databases
Berta Hermida Plaza
 
PDF
An E-commerce App in action built on top of a Multi-model Database
ArangoDB Database
 
PDF
MongoDB and Web Scrapping with the Gyes Platform
MongoDB
 
ODP
Intravert Server side processing for Cassandra
Edward Capriolo
 
ODP
NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"
DataStax Academy
 
PDF
Building powerful apps with ArangoDB & KeyLines
Cambridge Intelligence
 
PDF
FOXX - a Javascript application framework on top of ArangoDB
ArangoDB Database
 
PDF
Os Gottfrid
oscon2007
 
PDF
Polyglot Persistence & Multi Model-Databases at JMaghreb3.0
ArangoDB Database
 
Multi model-databases
Michael Hackstein
 
Multi model-databases
ArangoDB Database
 
Guacamole Fiesta: What do avocados and databases have in common?
ArangoDB Database
 
Oslo bekk2014
Max Neunhöffer
 
NodeJS
Alok Guha
 
Deep dive into the native multi model database ArangoDB
ArangoDB Database
 
Running complex data queries in a distributed system
ArangoDB Database
 
Webinar: ArangoDB 3.8 Preview - Analytics at Scale
ArangoDB Database
 
Deep Dive on ArangoDB
Max Neunhöffer
 
Processing large-scale graphs with Google Pregel
Max Neunhöffer
 
An introduction to multi-model databases
ArangoDB Database
 
An introduction to multi-model databases
Berta Hermida Plaza
 
An E-commerce App in action built on top of a Multi-model Database
ArangoDB Database
 
MongoDB and Web Scrapping with the Gyes Platform
MongoDB
 
Intravert Server side processing for Cassandra
Edward Capriolo
 
NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"
DataStax Academy
 
Building powerful apps with ArangoDB & KeyLines
Cambridge Intelligence
 
FOXX - a Javascript application framework on top of ArangoDB
ArangoDB Database
 
Os Gottfrid
oscon2007
 
Polyglot Persistence & Multi Model-Databases at JMaghreb3.0
ArangoDB Database
 
Ad

More from ArangoDB Database (20)

PPTX
ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
ArangoDB Database
 
PPTX
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
ArangoDB Database
 
PPTX
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
ArangoDB Database
 
PPTX
ArangoDB 3.9 - Further Powering Graphs at Scale
ArangoDB Database
 
PDF
GraphSage vs Pinsage #InsideArangoDB
ArangoDB Database
 
PDF
Graph Analytics with ArangoDB
ArangoDB Database
 
PDF
Getting Started with ArangoDB Oasis
ArangoDB Database
 
PDF
Custom Pregel Algorithms in ArangoDB
ArangoDB Database
 
PPTX
Hacktoberfest 2020 - Intro to Knowledge Graphs
ArangoDB Database
 
PDF
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
ArangoDB Database
 
PDF
ArangoML Pipeline Cloud - Managed Machine Learning Metadata
ArangoDB Database
 
PDF
ArangoDB 3.7 Roadmap: Performance at Scale
ArangoDB Database
 
PDF
Webinar: What to expect from ArangoDB Oasis
ArangoDB Database
 
PDF
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
ArangoDB Database
 
PDF
3.5 webinar
ArangoDB Database
 
PDF
Webinar: How native multi model works in ArangoDB
ArangoDB Database
 
PPTX
Are you a Tortoise or a Hare?
ArangoDB Database
 
PDF
The Computer Science Behind a modern Distributed Database
ArangoDB Database
 
PDF
Fishing Graphs in a Hadoop Data Lake
ArangoDB Database
 
PDF
Creating Fault Tolerant Services on Mesos
ArangoDB Database
 
ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
ArangoDB Database
 
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
ArangoDB Database
 
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
ArangoDB Database
 
ArangoDB 3.9 - Further Powering Graphs at Scale
ArangoDB Database
 
GraphSage vs Pinsage #InsideArangoDB
ArangoDB Database
 
Graph Analytics with ArangoDB
ArangoDB Database
 
Getting Started with ArangoDB Oasis
ArangoDB Database
 
Custom Pregel Algorithms in ArangoDB
ArangoDB Database
 
Hacktoberfest 2020 - Intro to Knowledge Graphs
ArangoDB Database
 
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
ArangoDB Database
 
ArangoML Pipeline Cloud - Managed Machine Learning Metadata
ArangoDB Database
 
ArangoDB 3.7 Roadmap: Performance at Scale
ArangoDB Database
 
Webinar: What to expect from ArangoDB Oasis
ArangoDB Database
 
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
ArangoDB Database
 
3.5 webinar
ArangoDB Database
 
Webinar: How native multi model works in ArangoDB
ArangoDB Database
 
Are you a Tortoise or a Hare?
ArangoDB Database
 
The Computer Science Behind a modern Distributed Database
ArangoDB Database
 
Fishing Graphs in a Hadoop Data Lake
ArangoDB Database
 
Creating Fault Tolerant Services on Mesos
ArangoDB Database
 

Recently uploaded (20)

PDF
“A Re-imagination of Embedded Vision System Design,” a Presentation from Imag...
Edge AI and Vision Alliance
 
PDF
GDG Cloud Southlake #44: Eyal Bukchin: Tightening the Kubernetes Feedback Loo...
James Anderson
 
PDF
Simplify Your FME Flow Setup: Fault-Tolerant Deployment Made Easy with Packer...
Safe Software
 
PDF
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Ravi Tamada
 
PPTX
Enabling the Digital Artisan – keynote at ICOCI 2025
Alan Dix
 
PDF
Bridging CAD, IBM TRIRIGA & GIS with FME: The Portland Public Schools Case
Safe Software
 
PDF
Hello I'm "AI" Your New _________________
Dr. Tathagat Varma
 
PDF
99 Bottles of Trust on the Wall — Operational Principles for Trust in Cyber C...
treyka
 
PPTX
Paycifi - Programmable Trust_Breakfast_PPTXT
FinTech Belgium
 
PDF
Pipeline Industry IoT - Real Time Data Monitoring
Safe Software
 
PDF
Why aren't you using FME Flow's CPU Time?
Safe Software
 
PDF
Bitkom eIDAS Summit | European Business Wallet: Use Cases, Macroeconomics, an...
Carsten Stoecker
 
PDF
Supporting the NextGen 911 Digital Transformation with FME
Safe Software
 
PDF
Kubernetes - Architecture & Components.pdf
geethak285
 
PDF
Unlocking FME Flow’s Potential: Architecture Design for Modern Enterprises
Safe Software
 
PPTX
2025 HackRedCon Cyber Career Paths.pptx Scott Stanton
Scott Stanton
 
PDF
Proactive Server and System Monitoring with FME: Using HTTP and System Caller...
Safe Software
 
PPTX
Smarter Governance with AI: What Every Board Needs to Know
OnBoard
 
PDF
FME as an Orchestration Tool with Principles From Data Gravity
Safe Software
 
PPTX
MARTSIA: A Tool for Confidential Data Exchange via Public Blockchain - Pitch ...
Michele Kryston
 
“A Re-imagination of Embedded Vision System Design,” a Presentation from Imag...
Edge AI and Vision Alliance
 
GDG Cloud Southlake #44: Eyal Bukchin: Tightening the Kubernetes Feedback Loo...
James Anderson
 
Simplify Your FME Flow Setup: Fault-Tolerant Deployment Made Easy with Packer...
Safe Software
 
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Ravi Tamada
 
Enabling the Digital Artisan – keynote at ICOCI 2025
Alan Dix
 
Bridging CAD, IBM TRIRIGA & GIS with FME: The Portland Public Schools Case
Safe Software
 
Hello I'm "AI" Your New _________________
Dr. Tathagat Varma
 
99 Bottles of Trust on the Wall — Operational Principles for Trust in Cyber C...
treyka
 
Paycifi - Programmable Trust_Breakfast_PPTXT
FinTech Belgium
 
Pipeline Industry IoT - Real Time Data Monitoring
Safe Software
 
Why aren't you using FME Flow's CPU Time?
Safe Software
 
Bitkom eIDAS Summit | European Business Wallet: Use Cases, Macroeconomics, an...
Carsten Stoecker
 
Supporting the NextGen 911 Digital Transformation with FME
Safe Software
 
Kubernetes - Architecture & Components.pdf
geethak285
 
Unlocking FME Flow’s Potential: Architecture Design for Modern Enterprises
Safe Software
 
2025 HackRedCon Cyber Career Paths.pptx Scott Stanton
Scott Stanton
 
Proactive Server and System Monitoring with FME: Using HTTP and System Caller...
Safe Software
 
Smarter Governance with AI: What Every Board Needs to Know
OnBoard
 
FME as an Orchestration Tool with Principles From Data Gravity
Safe Software
 
MARTSIA: A Tool for Confidential Data Exchange via Public Blockchain - Pitch ...
Michele Kryston
 

ArangoDB - Using JavaScript in the database

  • 1. ArangoDB /* Using Javascript in the database */ Jan Steemann, triAGENS, Cologne
  • 2. ArangoDB basics www.arangodb.org © j.steemann@triagens.de
  • 3. ArangoDB.explain() { "type": "NoSQL database", "openSource": true, "version": 1.0, "builtWith": [ "C", "C++", "js" ], "Javascript": [ "client side", "server side" ], "uses": [ "V8" ] } www.arangodb.org © j.steemann@triagens.de
  • 4. Documents and collections ArangoDB is a database that works with documents Documents are sets of name / value pairs (think of JSON objects), e.g. { "name": "Jan", "age": 37 } Documents are organised in collections (like tables in relational databases) www.arangodb.org © j.steemann@triagens.de
  • 5. Data types: JSON! ArangoDB operates on JSON documents JSON data can be saved as-is: db.users.save({ "name": "Jan", "uses": [ "vi", "js", "C++" ] }); www.arangodb.org © j.steemann@triagens.de
  • 6. Schema-free Documents can be heterogenous – even in the same collection, e.g. { "name": "Jan", "age": 37 }, { "name": "Tim", "likes": [ "js" ] }, { "name": { "first": "Patrick", "last": "Star" } } No need to care about schemas www.arangodb.org © j.steemann@triagens.de
  • 7. API & protocols ArangoDB server functionality is exposed via an HTTP REST API ArangoDB answers HTTP queries, so it can be used from the browser Simple to use from Javascript clients (3rd party) drivers available for node.js, Ruby, PHP, ... Javascript-enabled client shell provided www.arangodb.org © j.steemann@triagens.de
  • 9. Querying is simple Query a document by its unique id / key: db._document("users/9558905"); Query by providing an example: db.users.byExample({ "name": "Jan", "age": 37 }); www.arangodb.org © j.steemann@triagens.de
  • 10. Indexes ArangoDB allows querying on any document attributes or sub-attributes Secondary indexes can be created for higher query performance: • Hash indexes (equality queries) • Skiplists (range queries) • 2d geo indexes (location queries) www.arangodb.org © j.steemann@triagens.de
  • 11. Geo index examples // get b a r n ea r es t t o coor d in a t e db.bars.near(48.51, 2.21).limit(1); // get a ll s h op s w it h in r a d iu s // a r ou n d coor d in a t e db.shops.within(48.51, 2.21, rad); www.arangodb.org © j.steemann@triagens.de
  • 12. References ArangoDB can store references between documents References are documents with two endpoints (the documents they connect) Reference documents can carry own attributes www.arangodb.org © j.steemann@triagens.de
  • 13. References example Users documents: Relations documents: (references) { "name": "Jan", "age": 37 { } "_from": "users/jan", "_to": "users/tim", { "type": "knows", "name": "Tim", } "city": "Paris" } // q u er y ou t b ou n d r ela t ion s f r om "J a n " db.relations.outEdges(jan); // => tim www.arangodb.org © j.steemann@triagens.de
  • 14. Graph queries References make it possible to process graphs with ArangoDB Some special functions are provided to determine paths in a graph etc. Can write own Javascript functions for special traversals www.arangodb.org © j.steemann@triagens.de
  • 15. Query language ArangoDB can also answer complex SQL-like queries Such queries are expressed in ArangoDB's textual query language This language allows joins, sub-queries, aggregation etc. www.arangodb.org © j.steemann@triagens.de
  • 16. Example query FOR u IN users It er a t or FILTER u.addr.country == "US" && (u.isConfirmed == true || u.age >= 18) F ilt er LET userLogins = ( FOR l IN logins FILTER l.userId == u.id RETURN l ) S u b q u er y RETURN { "user": u, "logins": LENGTH(userLogins) } R es u lt www.arangodb.org © j.steemann@triagens.de
  • 17. Server side „actions“ www.arangodb.org © j.steemann@triagens.de
  • 18. Application server ArangoDB can answer web requests directly This also makes it an application server Users can extend its functionality with server side Javascript „actions“ Actions are user-defined functions that contain custom business logic www.arangodb.org © j.steemann@triagens.de
  • 19. Actions Actions are bound to URLs and executed when URLs are called, e.g. /users?name=... => function(...) /users/.../friends => function(...) www.arangodb.org © j.steemann@triagens.de
  • 20. Actions example function (req, res) { // get r eq u es t ed u s er f r om d b , // n a m e is r ea d f r om U R L p a r a m et er var u = db.users.byExample({ "username": req.urlParameters.name }); // r em ov e p a s s w or d h a s h delete u.hashedPassword; // b ef or e r et u r n in g t o ca ller actions.resultOk(req, res, 200, u); } www.arangodb.org © j.steemann@triagens.de
  • 21. Actions – Use cases Filter out sensitive data before responding Validate input Check privileges Check and enforce constraints Aggregate data from multiple queries into a single response Carry out data-intensive operations www.arangodb.org © j.steemann@triagens.de
  • 23. ArangoDB - summary Flexible in terms of data modelling and querying API is based on web standards: HTTP, REST, JSON Easy to use from Javascript clients Can be used as application server Functionality can be extended with server side Javascript „actions“ www.arangodb.org © j.steemann@triagens.de
  • 24. Thanks! Any questions? Спасибо Grazie Teşekkürler ¡Gracias! Merci! Хвала Dank je wel Ευχαριστώ ありがとう 고마워 Tack så mycket Danke www.arangodb.org © j.steemann@triagens.de
  • 25. Give it a try! ArangoDB source repository: https://www.github.com/triAGENS/ArangoDB (use master branch) Website: http://www.arangodb.org/ Builds available for Homebrew and several Linux distributions Twitter: #arangodb, @arangodb Google group: ArangoDB www.arangodb.org © j.steemann@triagens.de
  • 26. Roadmap MVCC / ACID transactions Triggers Synchronous and asynchronous replication www.arangodb.org © j.steemann@triagens.de
  • 27. Thank you! Stay in Touch: • Fork me on github • Google Group: ArangoDB • Twitter: @steemann & @arangodb • www.arangodb.org www.arangodb.org © j.steemann@triagens.de