Movatterモバイル変換


[0]ホーム

URL:


SlideShare a Scribd company logo

ArangoDB - Using JavaScript in the database

7 likes10,186 views
ArangoDB Database
ArangoDB Database

ArangoDB is an open-source NoSQL database that stores data as schema-free JSON documents organized in collections, allowing for flexible data modeling. It provides an HTTP REST API for querying, supports complex SQL-like queries, and enables the creation of server-side JavaScript actions to extend functionality. Additionally, ArangoDB supports referencing between documents and offers special functions for graph processing, making it useful for various application needs.

1 of 27
Downloaded 51 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
ArangoDB/* Using Javascript   in the database */ Jan Steemann, triAGENS, Cologne
ArangoDB  basicswww.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 collectionsArangoDB is a database that works withdocumentsDocuments are sets of name / value pairs(think of JSON objects), e.g.{ "name": "Jan", "age": 37 }Documents are organised in collections (liketables in relational databases)           www.arangodb.org © j.steemann@triagens.de
Data types: JSON!ArangoDB operates on JSON documentsJSON data can be saved as-is:db.users.save({  "name": "Jan",  "uses": [ "vi", "js", "C++" ]});            www.arangodb.org © j.steemann@triagens.de
Schema-freeDocuments 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 & protocolsArangoDB server functionality is exposed via anHTTP REST APIArangoDB answers HTTP queries,so it can be used from the browserSimple 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
Queryingwww.arangodb.org © j.steemann@triagens.de
Querying is simpleQuery 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
IndexesArangoDB allows querying on any documentattributes or sub-attributesSecondary indexes can be created for higherquery 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 edb.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 edb.shops.within(48.51, 2.21, rad);               www.arangodb.org © j.steemann@triagens.de
ReferencesArangoDB can store references betweendocumentsReferences are documents with two endpoints(the documents they connect)Reference documents can carry own attributes          www.arangodb.org © j.steemann@triagens.de
References exampleUsers 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 queriesReferences make it possible to process graphswith ArangoDBSome special functions are provided todetermine paths in a graph etc.Can write own Javascript functions for specialtraversals          www.arangodb.org © j.steemann@triagens.de
Query languageArangoDB can also answer complexSQL-like queriesSuch queries are expressed in ArangoDB'stextual query languageThis language allows joins, sub-queries,aggregation etc.          www.arangodb.org © j.steemann@triagens.de
Example queryFOR 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 serverArangoDB can answer web requests directlyThis also makes it an application serverUsers can extend its functionality with serverside Javascript „actions“Actions are user-defined functions that containcustom business logic           www.arangodb.org © j.steemann@triagens.de
ActionsActions are bound to URLs and executed whenURLs are called, e.g./users?name=... => function(...)/users/.../friends => function(...)           www.arangodb.org © j.steemann@triagens.de
Actions examplefunction (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 casesFilter out sensitive data before respondingValidate inputCheck privilegesCheck and enforce constraintsAggregate data from multiple queries into a singleresponseCarry out data-intensive operations           www.arangodb.org © j.steemann@triagens.de
Summarywww.arangodb.org © j.steemann@triagens.de
ArangoDB - summaryFlexible in terms of data modelling and queryingAPI is based on web standards:HTTP, REST, JSONEasy to use from Javascript clientsCan be used as application serverFunctionality can be extended with server sideJavascript „actions“          www.arangodb.org © j.steemann@triagens.de
Thanks!          Any questions?Спасибо                                                      GrazieTeş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 andseveral Linux distributionsTwitter: #arangodb, @arangodbGoogle group: ArangoDB           www.arangodb.org © j.steemann@triagens.de
RoadmapMVCC / ACID transactionsTriggersSynchronous 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
Ad

Recommended

PDF
Hotcode 2013: Javascript in a database (Part 1)
ArangoDB Database
 
PDF
Rupy2012 ArangoDB Workshop Part1
ArangoDB Database
 
PDF
Using MRuby in a database
ArangoDB Database
 
PDF
Hotcode 2013: Javascript in a database (Part 2)
ArangoDB Database
 
PDF
Running MRuby in a Database - ArangoDB - RuPy 2012
ArangoDB Database
 
PDF
Is multi-model the future of NoSQL?
Max Neunhöffer
 
PDF
Introduction to ArangoDB (nosql matters Barcelona 2012)
ArangoDB Database
 
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
 
PDF
ArangoDB – A different approach to NoSQL
ArangoDB Database
 
ODP
Lokijs
Joe Minichino
 

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
NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"
DataStax Academy
 
ODP
Intravert Server side processing for Cassandra
Edward Capriolo
 
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
 
NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"
DataStax Academy
 
Intravert Server side processing for Cassandra
Edward Capriolo
 
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)

PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
ShapeBlue
 
PDF
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
PDF
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
PPTX
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
Français Patch Tuesday - Juillet
Ivanti
 
PPTX
Darren Mills The Migration Modernization Balancing Act: Navigating Risks and...
AWS Chicago
 
PDF
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
PPTX
Building a Production-Ready Barts Health Secure Data Environment Tooling, Acc...
Barts Health
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
Predicting the unpredictable: re-engineering recommendation algorithms for fr...
Speck&Tech
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PPTX
Extensions Framework (XaaS) - Enabling Orchestrate Anything
ShapeBlue
 
PDF
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
PDF
July Patch Tuesday
Ivanti
 
PDF
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
ShapeBlue
 
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Français Patch Tuesday - Juillet
Ivanti
 
Darren Mills The Migration Modernization Balancing Act: Navigating Risks and...
AWS Chicago
 
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
Building a Production-Ready Barts Health Secure Data Environment Tooling, Acc...
Barts Health
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
Predicting the unpredictable: re-engineering recommendation algorithms for fr...
Speck&Tech
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
Extensions Framework (XaaS) - Enabling Orchestrate Anything
ShapeBlue
 
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
July Patch Tuesday
Ivanti
 
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 

ArangoDB - Using JavaScript in the database

  • 1.ArangoDB/* Using Javascript in the database */ Jan Steemann, triAGENS, Cologne
  • 2.ArangoDB basicswww.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 collectionsArangoDB is a database that works withdocumentsDocuments are sets of name / value pairs(think of JSON objects), e.g.{ "name": "Jan", "age": 37 }Documents are organised in collections (liketables in relational databases) www.arangodb.org © j.steemann@triagens.de
  • 5.Data types: JSON!ArangoDB operates on JSON documentsJSON data can be saved as-is:db.users.save({ "name": "Jan", "uses": [ "vi", "js", "C++" ]}); www.arangodb.org © j.steemann@triagens.de
  • 6.Schema-freeDocuments 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 & protocolsArangoDB server functionality is exposed via anHTTP REST APIArangoDB answers HTTP queries,so it can be used from the browserSimple 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 simpleQuery 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.IndexesArangoDB allows querying on any documentattributes or sub-attributesSecondary indexes can be created for higherquery 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 edb.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 edb.shops.within(48.51, 2.21, rad); www.arangodb.org © j.steemann@triagens.de
  • 12.ReferencesArangoDB can store references betweendocumentsReferences are documents with two endpoints(the documents they connect)Reference documents can carry own attributes www.arangodb.org © j.steemann@triagens.de
  • 13.References exampleUsers 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 queriesReferences make it possible to process graphswith ArangoDBSome special functions are provided todetermine paths in a graph etc.Can write own Javascript functions for specialtraversals www.arangodb.org © j.steemann@triagens.de
  • 15.Query languageArangoDB can also answer complexSQL-like queriesSuch queries are expressed in ArangoDB'stextual query languageThis language allows joins, sub-queries,aggregation etc. www.arangodb.org © j.steemann@triagens.de
  • 16.Example queryFOR 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 serverArangoDB can answer web requests directlyThis also makes it an application serverUsers can extend its functionality with serverside Javascript „actions“Actions are user-defined functions that containcustom business logic www.arangodb.org © j.steemann@triagens.de
  • 19.ActionsActions are bound to URLs and executed whenURLs are called, e.g./users?name=... => function(...)/users/.../friends => function(...) www.arangodb.org © j.steemann@triagens.de
  • 20.Actions examplefunction (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 casesFilter out sensitive data before respondingValidate inputCheck privilegesCheck and enforce constraintsAggregate data from multiple queries into a singleresponseCarry out data-intensive operations www.arangodb.org © j.steemann@triagens.de
  • 23.ArangoDB - summaryFlexible in terms of data modelling and queryingAPI is based on web standards:HTTP, REST, JSONEasy to use from Javascript clientsCan be used as application serverFunctionality can be extended with server sideJavascript „actions“ www.arangodb.org © j.steemann@triagens.de
  • 24.Thanks! Any questions?Спасибо GrazieTeş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 andseveral Linux distributionsTwitter: #arangodb, @arangodbGoogle group: ArangoDB www.arangodb.org © j.steemann@triagens.de
  • 26.RoadmapMVCC / ACID transactionsTriggersSynchronous 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

[8]ページ先頭

©2009-2025 Movatter.jp