SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Downloaden Sie, um offline zu lesen
Copyright © ArangoDB Inc. , 2019
An introduction to
multi-model databases and the
native multi-model database ArangoDB
Copyright © ArangoDB Inc. , 2019
My name is Jan!
I am from Cologne, Germany
I work for a database company named ArangoDB...
...on an open-source database also named ArangoDB
Hi, nice to meet you!
Copyright © ArangoDB Inc. , 2019
Databases
market trends
Copyright © ArangoDB Inc. , 2019
Relational relational storage, fixed schema, SQL, transactions
197x – now
"NoSQL" horizontal scaling, high availability, low-latency,
200x – now non-relational storage
but: no complex querying, no transactions!
"NewSQL" fusing scalability and resilience with
201x – now complex querying and transactions
Database trends
Copyright © ArangoDB Inc. , 2019
db-engines.com lists 343 database systems as of January 2019:
We now got: relational databases, key-value stores,
document stores, time-series databases, graph databases,
search engines, object databases, XML databases, RDF stores, ...
Now the database market is fragmented
WTF?!?
Copyright © ArangoDB Inc. , 2019
Which
database to
use for a new
project?
Copyright © ArangoDB Inc. , 2019
●
one obvious solution is to keep on using relational databases
for all tasks
●
this will work if the database schema is relatively fixed
●
for dynamically structured data, or varyingly connected data,
this approach will likely run into problems
●
it will very likely be a problematic approach if horizontal scaling
and availability are required
Solution: keep using relational databases
Copyright © ArangoDB Inc. , 2019
●
"use the right tool(s) for the job"
●
assumption: specialized products are better suited
than generic products
●
for example, why not use (all at the same time):
- an in-memory key-value store for caching,
- a persistent key-value store for user management,
- a relational database for order processing,
- a graph database for recommendations,
- a search engine for fulltext search?
Alternative: "Polyglot persistence"
Copyright © ArangoDB Inc. , 2019
●
Requires learning, administering and maintaining
multiple technologies
●
Needs custom scripts and / or application logic for shipping
data from one system to the other, or for syncing systems
●
Potential atomicity and consistency issues across the
different database systems (i.e. no transactions)
Issues with polyglot persistence
Copyright © ArangoDB Inc. , 2019
Multi-model
databases to
the rescue?
Copyright © ArangoDB Inc. , 2019
●
The main idea behind multi-model databases is to support
different data models in the same database product
●
So that the different data models in a multi-model database
can easily be combined in queries and even transactions
(composability)
What are multi-model databases?
Copyright © ArangoDB Inc. , 2019
●
Having to master and administer only a single technology
●
Being less locked-in to one specific data model and its limitations
●
More flexible in case the requirements change
●
Removing atomicity and consistency issues for syncing different
datastores, and not having to deal with these issues
in the application layer
Multi-model database key benefits
Copyright © ArangoDB Inc. , 2019
Multi-model databases (from Wikipedia)
Copyright © ArangoDB Inc. , 2019
●
Some traditional relational databases recently got
extensions for key-value handling and document storage
●
Strictly speaking, all of them could be called "multi-model"
●
Often the extra data models have been "bolted on top" of
these products, leading to poor support or inefficient
implementations
"Layered multi-model" is also a trend
Copyright © ArangoDB Inc. , 2019
ArangoDB,
the native
multi-model
database
Copyright © ArangoDB Inc. , 2019
ArangoDB is a native multi-model database, with support for
key-values, documents, graphs and (recently added) search
functionality
These data models are composable and can be combined via
AQL, ArangoDB's unified query language
At a glance
Copyright © ArangoDB Inc. , 2019
●
On the highest level, data in ArangoDB is organized in
"databases" and "collections" (think "schemas" and "tables")
●
Collections are used to store "documents" of similar types
●
"Documents" are just JSON objects with arbitrary attributes,
with optional nesting (sub-objects, sub-arrays)
●
There is no fixed schema for documents (any JSON object is valid)
Databases, collections, documents
Copyright © ArangoDB Inc. , 2019
In the easiest case, documents in a collection are homogeneous
(i.e. same attributes and types)
Example use case: product categories
{ "_key" : "books", "title" : "Books" }
{ "_key" : "cam", "title" : "Camera products" }
{ "_key" : "kitchen", "title" : "Kitchen Appliances" }
{ "_key" : "toys", "title" : "Toys & Games" }
Processing such data in AQL queries is as straightforward as with
an SQL query on a relational, fixed-schema table
Homogeneous documents
Copyright © ArangoDB Inc. , 2019
// SELECT c.* FROM categories c WHERE c._key IN ...
FOR c IN categories
FILTER c._key IN [ 'books', 'kitchen' ]
RETURN c
// SELECT c._key, c.title FROM categories c ORDER BY c.title
FOR c IN categories
SORT c.title
RETURN {
_key: c._key,
title: c.title
}
AQL queries – hello world examples
Copyright © ArangoDB Inc. , 2019
In more complex cases, documents in the same collection
are heterogeneous (i.e. attribute names or types differ)
This is often the case when objects have some common attributes,
but there are different special attributes for sub-types
Example use case: product catalogs
Heterogeneous documents
Copyright © ArangoDB Inc. , 2019
{
"_key" : "A053720452",
"category" : "books",
"name" : "Harry Potter and the Cursed Child",
"author" : "Joanne K. Rowling",
"isbn" : "978-0-7515-6535-5",
"published" : 2016
}
{
"_key" : "ZB4061305X34",
"category" : "toys",
"name" : "Nerf N-Strike Elite Mega CycloneShock Blaster",
"upc" : "630509278862",
"colors" : [ "black", "red" ]
}
Heterogeneous documents example
Copyright © ArangoDB Inc. , 2019
ArangoDB is schema-less, meaning optional attributes can be
queried the same way as common attributes:
// no SQL equivalent, because no optional attributes allowed
FOR p IN products
FILTER p.name == @search OR
p.isbn == @search OR
p.upc == @search
RETURN p
The value of non-existing attributes evaluates to null at runtime
Querying heterogeneous documents
Copyright © ArangoDB Inc. , 2019
Like SQL, AQL allows joining data from multiple sources:
// SELECT c.* AS category, p.* AS product FROM categories c,
// products p WHERE p.category = c._key ORDER BY c.title, p.name
FOR c IN categories
FOR p IN products
FILTER p.category == c._key // "category" should be indexed!
SORT c.title, p.name
RETURN {
category: c,
product: p
}
AQL – joins
Copyright © ArangoDB Inc. , 2019
●
Documents can be accessed efficiently by their primary key,
which is automatically indexed in ArangoDB ("_key" attribute)
●
Extra secondary indexes can be created as needed
to support efficient querying by different attributes
●
Index types: hash, skiplist, geo, fulltext
Indexes for more efficient querying
Copyright © ArangoDB Inc. , 2019
// this will return an array of product details per category
// there is no direct SQL equivalent, as this will return a
// nested, variable-length sub-array of products per category
FOR c IN categories
RETURN {
category: c.title,
products: (
FOR p IN products
FILTER p.category == c._key
SORT p.name
RETURN { _key: p._key, name: p.name }
)
}
AQL – subqueries
Copyright © ArangoDB Inc. , 2019
// SELECT s.year, s.product, SUM(c.count) AS count,
// SUM(s.amount) AS amount FROM sales s WHERE s.year
// BETWEEN 2017 AND 2019 GROUP BY s.year, s.product
FOR s IN sales
FILTER s.year >= 2017 AND s.year <= 2019
COLLECT year = s.year,
product = s.product
AGGREGATE count = SUM(s.count),
amount = SUM(s.amount)
RETURN {
year, product: DOCUMENT('products', product), count, amount
}
AQL – aggregation
Copyright © ArangoDB Inc. , 2019
// update all documents which don't have a "lastModified"
// attribute, store the current date in it, and return the _keys
// of the documents updated
FOR p IN products
FILTER !HAS(p, "lastModified")
UPDATE p WITH {
lastModified: DATE_ISO8601(DATE_NOW())
} IN products
RETURN OLD._key
AQL – data modification
Copyright © ArangoDB Inc. , 2019
// delete documents of the specified categories, and return
// all data of the deleted documents
FOR p IN products
FILTER p.category IN [ "toys", "kitchen" ]
REMOVE p IN products RETURN OLD
AQL – data modification
Copyright © ArangoDB Inc. , 2019
●
Geo queries
●
Fulltext indexing and searching
Other AQL features (not shown here)
Copyright © ArangoDB Inc. , 2019
●
ArangoDB also supports the graph data model
●
Graph queries can reveal which documents are directly or
indirectly connected to which other documents, and via
what connections
●
Graphs are often used for data exploration, and to understand
connections in the data
The graph data model
Copyright © ArangoDB Inc. , 2019
●
In graphs, connections between documents are called "edges"
●
In ArangoDB edges are stored in "edge collections"
●
Edges have "_from" and "_to" attributes, which reference the
connected vertices
●
Edges are always directed (_from -> _to), but can also be
queried in opposite order
Edges
Copyright © ArangoDB Inc. , 2019
Let's assume there are some "employees" documents like this:
{ "_key" : "sofia", "_id" : "employees/sofia" }
{ "_key" : "adam", "_id" : "employees/adam" }
{ "_key" : "sarah", "_id" : "employees/sarah" }
{ "_key" : "jon", "_id" : "employees/jon" }
And there is an "isManagerOf" edge collection connecting them:
{ "_from" : "employees/sofia", "_to" : "employees/adam" }
{ "_from" : "employees/sofia", "_to" : "employees/sarah" }
{ "_from" : "employees/sarah", "_to" : "employees/jon" }
...
Edge collection example
Copyright © ArangoDB Inc. , 2019
Graph example, employees graph
Copyright © ArangoDB Inc. , 2019
// find all employees that "sofia" is a direct manager of
FOR emp IN 1..1 OUTBOUND 'employees/sofia' isManagerOf
RETURN emp._key
// find all direct and indirect subordinates of "sofia":
FOR emp IN 1..5 OUTBOUND 'employees/sofia' isManagerOf
RETURN emp._key
AQL graph traversals, examples
Copyright © ArangoDB Inc. , 2019
// find employees that "olaf" is indirectly connected to (level 2)
FOR emp IN 2..2 ANY 'employees/olaf' isManagerOf
RETURN emp._key
// find all line managers of employee "olaf", calculate distance
FOR emp, edge, path IN 1..5 INBOUND 'employees/olaf'
isManagerOf
RETURN {
who: emp._key,
level: LENGTH(path.edges)
}
AQL graph traversals, more examples
Copyright © ArangoDB Inc. , 2019
●
Organizational structures
●
Social networks (friends, friends of friends)
●
Recommendation and prediction engines
●
Product component planning and assessment
●
Network and infrastructure assessment
●
Fraud detection
Some graph use cases
Copyright © ArangoDB Inc. , 2019
●
Graphs can also consist of many different collections
●
While traversing the graph, it is also possible to filter on
edge attributes and exclude unwanted edges or paths
●
Graphs can contain cycles, so it is possible to stop searching
already-visited documents and edges
●
Shortest-path queries are also supported
Advanced graph querying
Copyright © ArangoDB Inc. , 2019
Deployment
options
Copyright © ArangoDB Inc. , 2019
●
Single server
●
Active failover: 2+ single servers with asynchronous replication
and automatic failover
●
Cluster: multiple query processing and storage nodes,
horizontal write scaling and resilience
Deployment modes
Copyright © ArangoDB Inc. , 2019
●
Linux, with 64 bit OS
●
Windows 10, Windows 7 SP1, Windows server, with 64 bit OS
●
Mac OS, Sierra and newer
●
Kubernetes (including Google GKE, Amazon EKS, Pivotal PKS)
●
Docker
Supported platforms
Copyright © ArangoDB Inc. , 2019
ArangoDB clusters running on ARM64
Copyright © ArangoDB Inc. , 2019
Bonus
features
Copyright © ArangoDB Inc. , 2019
Administration via web interface
Copyright © ArangoDB Inc. , 2019
Built-in graph viewer
Copyright © ArangoDB Inc. , 2019
●
"Smart graphs" (colocating of documents with all their
outgoing edges on the same physical server)
●
Datacenter-to-datacenter (DC2DC) replication
●
Encryption at rest, encrypted backups
●
LDAP integration for user management
●
Support subscription with SLAs
Additional enterprise edition features
Copyright © ArangoDB Inc. , 2019
ArangoDB Foxx,
for exposing
data via REST
APIs
Copyright © ArangoDB Inc. , 2019
●
Combine your data with an API and you have a microservice!
●
ArangoDB comes with Foxx, a built-in framework
for easily exposing dedicated database data via REST APIs
●
The REST API code is written using JavaScript,
which runs inside the ArangoDB server, close to the data
Foxx – built-in microservice framework
Copyright © ArangoDB Inc. , 2019
// endpoint: HTTP GET /managersOf/:employee
router.get("/managersOf/:employee", function (req, res) {
let query = `FOR emp, edge, path IN 1..5 INBOUND
CONCAT('employees/', @employee) isManagerOf
RETURN { who: emp._key, level: LENGTH(path.edges) }' `;
let result = db._query(query, {
employee: req.param("employee") // use path parameter
}).toArray();
res.json(result); // return JSON result to caller
});
Foxx example, custom API code
Copyright © ArangoDB Inc. , 2019
●
It is easy to add input parameter validation and sanitation
●
API documentation facility is already included in the framework
●
API documentation can be made available for humans
(via Swagger UI) and client applications as a service description
JSON file
Foxx – built-in microservice framework
Copyright © ArangoDB Inc. , 2019
Adding the below code to the existing route adds simple validation
for the input parameter and also API documentation:
router.get("/managersOf/:employee", function (req, res) {
... // previous code here
})
.pathParam("employee", joi.string().required(), "employee name")
.summary("returns managers of the employee")
.response(200, 'will return a list of the managers')
.error(404, 'employee has no managers');
Example with input validation and docs
Copyright © ArangoDB Inc. , 2019
●
Data validation, sanitation and transformation
●
Keeping things private by filtering data and running projections
before returning it
●
Complex permissioning based on database data or queries
●
Eliminating network hops by bundling multiple database queries
in a single server-side REST API method
Foxx – use cases
Copyright © ArangoDB Inc. , 2019
●
ArangoDB is a free and open-source native multi-model database
●
Provides support for key-values, documents, graphs
●
Search functionality has been recently added and will be extended
●
Different data models can be used flexibly
●
AQL query language can be used for rich querying, combining all
data models
●
Various deployment modes, including cluster setups
Summary
Copyright © ArangoDB Inc. , 2019
●
Website: https://www.arangodb.com/
●
Slack: https://slack.arangodb.com/
●
Github: arangodb/arangodb
●
Twitter: @arangodb
●
Stack Overflow: #arangodb
Getting in touch

Weitere ähnliche Inhalte

Was ist angesagt?

A Graph Database That Scales - ArangoDB 3.7 Release Webinar
A Graph Database That Scales - ArangoDB 3.7 Release WebinarA Graph Database That Scales - ArangoDB 3.7 Release Webinar
A Graph Database That Scales - ArangoDB 3.7 Release WebinarArangoDB Database
 
An introduction to multi-model databases
An introduction to multi-model databasesAn introduction to multi-model databases
An introduction to multi-model databasesBerta Hermida Plaza
 
Graph Analytics with ArangoDB
Graph Analytics with ArangoDBGraph Analytics with ArangoDB
Graph Analytics with ArangoDBArangoDB Database
 
Deep dive into the native multi model database ArangoDB
Deep dive into the native multi model database ArangoDBDeep dive into the native multi model database ArangoDB
Deep dive into the native multi model database ArangoDBArangoDB Database
 
Introduction to column oriented databases
Introduction to column oriented databasesIntroduction to column oriented databases
Introduction to column oriented databasesArangoDB Database
 
AvocadoDB query language (DRAFT!)
AvocadoDB query language (DRAFT!)AvocadoDB query language (DRAFT!)
AvocadoDB query language (DRAFT!)avocadodb
 
Introduction to ArangoDB (nosql matters Barcelona 2012)
Introduction to ArangoDB (nosql matters Barcelona 2012)Introduction to ArangoDB (nosql matters Barcelona 2012)
Introduction to ArangoDB (nosql matters Barcelona 2012)ArangoDB Database
 
Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...
Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...
Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...Julian Hyde
 
Semantic RDF based integration framework for heterogeneous XML data sources
Semantic RDF based integration framework for heterogeneous XML data sourcesSemantic RDF based integration framework for heterogeneous XML data sources
Semantic RDF based integration framework for heterogeneous XML data sourcesDeniz Kılınç
 
GraphTech Ecosystem - part 2: Graph Analytics
 GraphTech Ecosystem - part 2: Graph Analytics GraphTech Ecosystem - part 2: Graph Analytics
GraphTech Ecosystem - part 2: Graph AnalyticsLinkurious
 
Spark meetup v2.0.5
Spark meetup v2.0.5Spark meetup v2.0.5
Spark meetup v2.0.5Yan Zhou
 
Fully Automated QA System For Large Scale Search And Recommendation Engines U...
Fully Automated QA System For Large Scale Search And Recommendation Engines U...Fully Automated QA System For Large Scale Search And Recommendation Engines U...
Fully Automated QA System For Large Scale Search And Recommendation Engines U...Spark Summit
 
PGQL: A Language for Graphs
PGQL: A Language for GraphsPGQL: A Language for Graphs
PGQL: A Language for GraphsJean Ihm
 
Spark SQL with Scala Code Examples
Spark SQL with Scala Code ExamplesSpark SQL with Scala Code Examples
Spark SQL with Scala Code ExamplesTodd McGrath
 
Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...
Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...
Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...Databricks
 
ArangoDB – A different approach to NoSQL
ArangoDB – A different approach to NoSQLArangoDB – A different approach to NoSQL
ArangoDB – A different approach to NoSQLArangoDB Database
 
Apache Spark sql
Apache Spark sqlApache Spark sql
Apache Spark sqlaftab alam
 

Was ist angesagt? (20)

A Graph Database That Scales - ArangoDB 3.7 Release Webinar
A Graph Database That Scales - ArangoDB 3.7 Release WebinarA Graph Database That Scales - ArangoDB 3.7 Release Webinar
A Graph Database That Scales - ArangoDB 3.7 Release Webinar
 
An introduction to multi-model databases
An introduction to multi-model databasesAn introduction to multi-model databases
An introduction to multi-model databases
 
Graph Analytics with ArangoDB
Graph Analytics with ArangoDBGraph Analytics with ArangoDB
Graph Analytics with ArangoDB
 
Deep dive into the native multi model database ArangoDB
Deep dive into the native multi model database ArangoDBDeep dive into the native multi model database ArangoDB
Deep dive into the native multi model database ArangoDB
 
Introduction to column oriented databases
Introduction to column oriented databasesIntroduction to column oriented databases
Introduction to column oriented databases
 
Os Lonergan
Os LonerganOs Lonergan
Os Lonergan
 
AvocadoDB query language (DRAFT!)
AvocadoDB query language (DRAFT!)AvocadoDB query language (DRAFT!)
AvocadoDB query language (DRAFT!)
 
Real-World NoSQL Schema Design
Real-World NoSQL Schema DesignReal-World NoSQL Schema Design
Real-World NoSQL Schema Design
 
Introduction to ArangoDB (nosql matters Barcelona 2012)
Introduction to ArangoDB (nosql matters Barcelona 2012)Introduction to ArangoDB (nosql matters Barcelona 2012)
Introduction to ArangoDB (nosql matters Barcelona 2012)
 
Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...
Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...
Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...
 
Semantic RDF based integration framework for heterogeneous XML data sources
Semantic RDF based integration framework for heterogeneous XML data sourcesSemantic RDF based integration framework for heterogeneous XML data sources
Semantic RDF based integration framework for heterogeneous XML data sources
 
GraphTech Ecosystem - part 2: Graph Analytics
 GraphTech Ecosystem - part 2: Graph Analytics GraphTech Ecosystem - part 2: Graph Analytics
GraphTech Ecosystem - part 2: Graph Analytics
 
Spark meetup v2.0.5
Spark meetup v2.0.5Spark meetup v2.0.5
Spark meetup v2.0.5
 
Fully Automated QA System For Large Scale Search And Recommendation Engines U...
Fully Automated QA System For Large Scale Search And Recommendation Engines U...Fully Automated QA System For Large Scale Search And Recommendation Engines U...
Fully Automated QA System For Large Scale Search And Recommendation Engines U...
 
PGQL: A Language for Graphs
PGQL: A Language for GraphsPGQL: A Language for Graphs
PGQL: A Language for Graphs
 
Spark SQL with Scala Code Examples
Spark SQL with Scala Code ExamplesSpark SQL with Scala Code Examples
Spark SQL with Scala Code Examples
 
Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...
Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...
Neo4j Morpheus: Interweaving Table and Graph Data with SQL and Cypher in Apac...
 
ArangoDB – A different approach to NoSQL
ArangoDB – A different approach to NoSQLArangoDB – A different approach to NoSQL
ArangoDB – A different approach to NoSQL
 
Arango DB
Arango DBArango DB
Arango DB
 
Apache Spark sql
Apache Spark sqlApache Spark sql
Apache Spark sql
 

Ähnlich wie An introduction to multi-model databases

Is multi-model the future of NoSQL?
Is multi-model the future of NoSQL?Is multi-model the future of NoSQL?
Is multi-model the future of NoSQL?Max Neunhöffer
 
MongoDB - An Agile NoSQL Database
MongoDB - An Agile NoSQL DatabaseMongoDB - An Agile NoSQL Database
MongoDB - An Agile NoSQL DatabaseGaurav Awasthi
 
Product catalog using MongoDB
Product catalog using MongoDBProduct catalog using MongoDB
Product catalog using MongoDBVishwas Bhagath
 
3.Implementation with NOSQL databases Document Databases (Mongodb).pptx
3.Implementation with NOSQL databases Document Databases (Mongodb).pptx3.Implementation with NOSQL databases Document Databases (Mongodb).pptx
3.Implementation with NOSQL databases Document Databases (Mongodb).pptxRushikeshChikane2
 
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...Trivadis
 
An E-commerce App in action built on top of a Multi-model Database
An E-commerce App in action built on top of a Multi-model DatabaseAn E-commerce App in action built on top of a Multi-model Database
An E-commerce App in action built on top of a Multi-model DatabaseArangoDB Database
 
Multi-model databases and node.js
Multi-model databases and node.jsMulti-model databases and node.js
Multi-model databases and node.jsMax Neunhöffer
 
Arches Getty Brownbag Talk
Arches Getty Brownbag TalkArches Getty Brownbag Talk
Arches Getty Brownbag Talkbenosteen
 
Webinar: MongoDB for Content Management
Webinar: MongoDB for Content ManagementWebinar: MongoDB for Content Management
Webinar: MongoDB for Content ManagementMongoDB
 
guacamole: an Object Document Mapper for ArangoDB
guacamole: an Object Document Mapper for ArangoDBguacamole: an Object Document Mapper for ArangoDB
guacamole: an Object Document Mapper for ArangoDBMax Neunhöffer
 

Ähnlich wie An introduction to multi-model databases (20)

Oslo baksia2014
Oslo baksia2014Oslo baksia2014
Oslo baksia2014
 
Oslo bekk2014
Oslo bekk2014Oslo bekk2014
Oslo bekk2014
 
Is multi-model the future of NoSQL?
Is multi-model the future of NoSQL?Is multi-model the future of NoSQL?
Is multi-model the future of NoSQL?
 
MongoDB - An Agile NoSQL Database
MongoDB - An Agile NoSQL DatabaseMongoDB - An Agile NoSQL Database
MongoDB - An Agile NoSQL Database
 
Product catalog using MongoDB
Product catalog using MongoDBProduct catalog using MongoDB
Product catalog using MongoDB
 
3.Implementation with NOSQL databases Document Databases (Mongodb).pptx
3.Implementation with NOSQL databases Document Databases (Mongodb).pptx3.Implementation with NOSQL databases Document Databases (Mongodb).pptx
3.Implementation with NOSQL databases Document Databases (Mongodb).pptx
 
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
 
An E-commerce App in action built on top of a Multi-model Database
An E-commerce App in action built on top of a Multi-model DatabaseAn E-commerce App in action built on top of a Multi-model Database
An E-commerce App in action built on top of a Multi-model Database
 
No SQL and MongoDB - Hyderabad Scalability Meetup
No SQL and MongoDB - Hyderabad Scalability MeetupNo SQL and MongoDB - Hyderabad Scalability Meetup
No SQL and MongoDB - Hyderabad Scalability Meetup
 
Artigo no sql x relational
Artigo no sql x relationalArtigo no sql x relational
Artigo no sql x relational
 
Multi-model databases and node.js
Multi-model databases and node.jsMulti-model databases and node.js
Multi-model databases and node.js
 
MongoDB classes 2019
MongoDB classes 2019MongoDB classes 2019
MongoDB classes 2019
 
Arches Getty Brownbag Talk
Arches Getty Brownbag TalkArches Getty Brownbag Talk
Arches Getty Brownbag Talk
 
Bigtable osdi06
Bigtable osdi06Bigtable osdi06
Bigtable osdi06
 
Bigtable
Bigtable Bigtable
Bigtable
 
ArangoDB
ArangoDBArangoDB
ArangoDB
 
Doc store
Doc storeDoc store
Doc store
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Webinar: MongoDB for Content Management
Webinar: MongoDB for Content ManagementWebinar: MongoDB for Content Management
Webinar: MongoDB for Content Management
 
guacamole: an Object Document Mapper for ArangoDB
guacamole: an Object Document Mapper for ArangoDBguacamole: an Object Document Mapper for ArangoDB
guacamole: an Object Document Mapper for ArangoDB
 

Mehr von ArangoDB Database

ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....ArangoDB Database
 
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022ArangoDB Database
 
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022ArangoDB Database
 
ArangoDB 3.9 - Further Powering Graphs at Scale
ArangoDB 3.9 - Further Powering Graphs at ScaleArangoDB 3.9 - Further Powering Graphs at Scale
ArangoDB 3.9 - Further Powering Graphs at ScaleArangoDB Database
 
GraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDBGraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDBArangoDB Database
 
Getting Started with ArangoDB Oasis
Getting Started with ArangoDB OasisGetting Started with ArangoDB Oasis
Getting Started with ArangoDB OasisArangoDB Database
 
Hacktoberfest 2020 - Intro to Knowledge Graphs
Hacktoberfest 2020 - Intro to Knowledge GraphsHacktoberfest 2020 - Intro to Knowledge Graphs
Hacktoberfest 2020 - Intro to Knowledge GraphsArangoDB Database
 
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?ArangoDB Database
 
Webinar: What to expect from ArangoDB Oasis
Webinar: What to expect from ArangoDB OasisWebinar: What to expect from ArangoDB Oasis
Webinar: What to expect from ArangoDB OasisArangoDB Database
 
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019ArangoDB Database
 
The Computer Science Behind a modern Distributed Database
The Computer Science Behind a modern Distributed DatabaseThe Computer Science Behind a modern Distributed Database
The Computer Science Behind a modern Distributed DatabaseArangoDB Database
 
Fishing Graphs in a Hadoop Data Lake
Fishing Graphs in a Hadoop Data LakeFishing Graphs in a Hadoop Data Lake
Fishing Graphs in a Hadoop Data LakeArangoDB Database
 
Creating Fault Tolerant Services on Mesos
Creating Fault Tolerant Services on MesosCreating Fault Tolerant Services on Mesos
Creating Fault Tolerant Services on MesosArangoDB Database
 
Handling Billions of Edges in a Graph Database
Handling Billions of Edges in a Graph DatabaseHandling Billions of Edges in a Graph Database
Handling Billions of Edges in a Graph DatabaseArangoDB Database
 
Introduction to Foxx by our community member Iskandar Soesman @ikandars
Introduction to Foxx by our community member Iskandar Soesman @ikandarsIntroduction to Foxx by our community member Iskandar Soesman @ikandars
Introduction to Foxx by our community member Iskandar Soesman @ikandarsArangoDB Database
 
Polyglot Persistence & Multi-Model Databases
Polyglot Persistence & Multi-Model DatabasesPolyglot Persistence & Multi-Model Databases
Polyglot Persistence & Multi-Model DatabasesArangoDB Database
 

Mehr von ArangoDB Database (18)

ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
 
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
 
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
 
ArangoDB 3.9 - Further Powering Graphs at Scale
ArangoDB 3.9 - Further Powering Graphs at ScaleArangoDB 3.9 - Further Powering Graphs at Scale
ArangoDB 3.9 - Further Powering Graphs at Scale
 
GraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDBGraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDB
 
Getting Started with ArangoDB Oasis
Getting Started with ArangoDB OasisGetting Started with ArangoDB Oasis
Getting Started with ArangoDB Oasis
 
Hacktoberfest 2020 - Intro to Knowledge Graphs
Hacktoberfest 2020 - Intro to Knowledge GraphsHacktoberfest 2020 - Intro to Knowledge Graphs
Hacktoberfest 2020 - Intro to Knowledge Graphs
 
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
 
Webinar: What to expect from ArangoDB Oasis
Webinar: What to expect from ArangoDB OasisWebinar: What to expect from ArangoDB Oasis
Webinar: What to expect from ArangoDB Oasis
 
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
 
3.5 webinar
3.5 webinar 3.5 webinar
3.5 webinar
 
The Computer Science Behind a modern Distributed Database
The Computer Science Behind a modern Distributed DatabaseThe Computer Science Behind a modern Distributed Database
The Computer Science Behind a modern Distributed Database
 
Fishing Graphs in a Hadoop Data Lake
Fishing Graphs in a Hadoop Data LakeFishing Graphs in a Hadoop Data Lake
Fishing Graphs in a Hadoop Data Lake
 
Creating Fault Tolerant Services on Mesos
Creating Fault Tolerant Services on MesosCreating Fault Tolerant Services on Mesos
Creating Fault Tolerant Services on Mesos
 
Handling Billions of Edges in a Graph Database
Handling Billions of Edges in a Graph DatabaseHandling Billions of Edges in a Graph Database
Handling Billions of Edges in a Graph Database
 
Introduction to Foxx by our community member Iskandar Soesman @ikandars
Introduction to Foxx by our community member Iskandar Soesman @ikandarsIntroduction to Foxx by our community member Iskandar Soesman @ikandars
Introduction to Foxx by our community member Iskandar Soesman @ikandars
 
Polyglot Persistence & Multi-Model Databases
Polyglot Persistence & Multi-Model DatabasesPolyglot Persistence & Multi-Model Databases
Polyglot Persistence & Multi-Model Databases
 
Software + Babies
Software + BabiesSoftware + Babies
Software + Babies
 

Kürzlich hochgeladen

Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...Valters Lauzums
 
Gartner's Data Analytics Maturity Model.pptx
Gartner's Data Analytics Maturity Model.pptxGartner's Data Analytics Maturity Model.pptx
Gartner's Data Analytics Maturity Model.pptxchadhar227
 
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi ArabiaIn Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabiaahmedjiabur940
 
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...HyderabadDolls
 
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...gajnagarg
 
Fun all Day Call Girls in Jaipur 9332606886 High Profile Call Girls You Ca...
Fun all Day Call Girls in Jaipur   9332606886  High Profile Call Girls You Ca...Fun all Day Call Girls in Jaipur   9332606886  High Profile Call Girls You Ca...
Fun all Day Call Girls in Jaipur 9332606886 High Profile Call Girls You Ca...kumargunjan9515
 
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样wsppdmt
 
Digital Transformation Playbook by Graham Ware
Digital Transformation Playbook by Graham WareDigital Transformation Playbook by Graham Ware
Digital Transformation Playbook by Graham WareGraham Ware
 
Reconciling Conflicting Data Curation Actions: Transparency Through Argument...
Reconciling Conflicting Data Curation Actions:  Transparency Through Argument...Reconciling Conflicting Data Curation Actions:  Transparency Through Argument...
Reconciling Conflicting Data Curation Actions: Transparency Through Argument...Bertram Ludäscher
 
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...gajnagarg
 
Dubai Call Girls Peeing O525547819 Call Girls Dubai
Dubai Call Girls Peeing O525547819 Call Girls DubaiDubai Call Girls Peeing O525547819 Call Girls Dubai
Dubai Call Girls Peeing O525547819 Call Girls Dubaikojalkojal131
 
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...nirzagarg
 
20240412-SmartCityIndex-2024-Full-Report.pdf
20240412-SmartCityIndex-2024-Full-Report.pdf20240412-SmartCityIndex-2024-Full-Report.pdf
20240412-SmartCityIndex-2024-Full-Report.pdfkhraisr
 
SAC 25 Final National, Regional & Local Angel Group Investing Insights 2024 0...
SAC 25 Final National, Regional & Local Angel Group Investing Insights 2024 0...SAC 25 Final National, Regional & Local Angel Group Investing Insights 2024 0...
SAC 25 Final National, Regional & Local Angel Group Investing Insights 2024 0...Elaine Werffeli
 
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...gajnagarg
 
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...HyderabadDolls
 
Discover Why Less is More in B2B Research
Discover Why Less is More in B2B ResearchDiscover Why Less is More in B2B Research
Discover Why Less is More in B2B Researchmichael115558
 
Aspirational Block Program Block Syaldey District - Almora
Aspirational Block Program Block Syaldey District - AlmoraAspirational Block Program Block Syaldey District - Almora
Aspirational Block Program Block Syaldey District - AlmoraGovindSinghDasila
 
Computer science Sql cheat sheet.pdf.pdf
Computer science Sql cheat sheet.pdf.pdfComputer science Sql cheat sheet.pdf.pdf
Computer science Sql cheat sheet.pdf.pdfSayantanBiswas37
 

Kürzlich hochgeladen (20)

Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
 
Gartner's Data Analytics Maturity Model.pptx
Gartner's Data Analytics Maturity Model.pptxGartner's Data Analytics Maturity Model.pptx
Gartner's Data Analytics Maturity Model.pptx
 
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi ArabiaIn Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
 
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
 
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
 
Fun all Day Call Girls in Jaipur 9332606886 High Profile Call Girls You Ca...
Fun all Day Call Girls in Jaipur   9332606886  High Profile Call Girls You Ca...Fun all Day Call Girls in Jaipur   9332606886  High Profile Call Girls You Ca...
Fun all Day Call Girls in Jaipur 9332606886 High Profile Call Girls You Ca...
 
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
 
Digital Transformation Playbook by Graham Ware
Digital Transformation Playbook by Graham WareDigital Transformation Playbook by Graham Ware
Digital Transformation Playbook by Graham Ware
 
Reconciling Conflicting Data Curation Actions: Transparency Through Argument...
Reconciling Conflicting Data Curation Actions:  Transparency Through Argument...Reconciling Conflicting Data Curation Actions:  Transparency Through Argument...
Reconciling Conflicting Data Curation Actions: Transparency Through Argument...
 
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
 
Dubai Call Girls Peeing O525547819 Call Girls Dubai
Dubai Call Girls Peeing O525547819 Call Girls DubaiDubai Call Girls Peeing O525547819 Call Girls Dubai
Dubai Call Girls Peeing O525547819 Call Girls Dubai
 
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
 
20240412-SmartCityIndex-2024-Full-Report.pdf
20240412-SmartCityIndex-2024-Full-Report.pdf20240412-SmartCityIndex-2024-Full-Report.pdf
20240412-SmartCityIndex-2024-Full-Report.pdf
 
SAC 25 Final National, Regional & Local Angel Group Investing Insights 2024 0...
SAC 25 Final National, Regional & Local Angel Group Investing Insights 2024 0...SAC 25 Final National, Regional & Local Angel Group Investing Insights 2024 0...
SAC 25 Final National, Regional & Local Angel Group Investing Insights 2024 0...
 
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
 
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
 
Discover Why Less is More in B2B Research
Discover Why Less is More in B2B ResearchDiscover Why Less is More in B2B Research
Discover Why Less is More in B2B Research
 
Aspirational Block Program Block Syaldey District - Almora
Aspirational Block Program Block Syaldey District - AlmoraAspirational Block Program Block Syaldey District - Almora
Aspirational Block Program Block Syaldey District - Almora
 
Abortion pills in Jeddah | +966572737505 | Get Cytotec
Abortion pills in Jeddah | +966572737505 | Get CytotecAbortion pills in Jeddah | +966572737505 | Get Cytotec
Abortion pills in Jeddah | +966572737505 | Get Cytotec
 
Computer science Sql cheat sheet.pdf.pdf
Computer science Sql cheat sheet.pdf.pdfComputer science Sql cheat sheet.pdf.pdf
Computer science Sql cheat sheet.pdf.pdf
 

An introduction to multi-model databases

  • 1. Copyright © ArangoDB Inc. , 2019 An introduction to multi-model databases and the native multi-model database ArangoDB
  • 2. Copyright © ArangoDB Inc. , 2019 My name is Jan! I am from Cologne, Germany I work for a database company named ArangoDB... ...on an open-source database also named ArangoDB Hi, nice to meet you!
  • 3. Copyright © ArangoDB Inc. , 2019 Databases market trends
  • 4. Copyright © ArangoDB Inc. , 2019 Relational relational storage, fixed schema, SQL, transactions 197x – now "NoSQL" horizontal scaling, high availability, low-latency, 200x – now non-relational storage but: no complex querying, no transactions! "NewSQL" fusing scalability and resilience with 201x – now complex querying and transactions Database trends
  • 5. Copyright © ArangoDB Inc. , 2019 db-engines.com lists 343 database systems as of January 2019: We now got: relational databases, key-value stores, document stores, time-series databases, graph databases, search engines, object databases, XML databases, RDF stores, ... Now the database market is fragmented WTF?!?
  • 6. Copyright © ArangoDB Inc. , 2019 Which database to use for a new project?
  • 7. Copyright © ArangoDB Inc. , 2019 ● one obvious solution is to keep on using relational databases for all tasks ● this will work if the database schema is relatively fixed ● for dynamically structured data, or varyingly connected data, this approach will likely run into problems ● it will very likely be a problematic approach if horizontal scaling and availability are required Solution: keep using relational databases
  • 8. Copyright © ArangoDB Inc. , 2019 ● "use the right tool(s) for the job" ● assumption: specialized products are better suited than generic products ● for example, why not use (all at the same time): - an in-memory key-value store for caching, - a persistent key-value store for user management, - a relational database for order processing, - a graph database for recommendations, - a search engine for fulltext search? Alternative: "Polyglot persistence"
  • 9. Copyright © ArangoDB Inc. , 2019 ● Requires learning, administering and maintaining multiple technologies ● Needs custom scripts and / or application logic for shipping data from one system to the other, or for syncing systems ● Potential atomicity and consistency issues across the different database systems (i.e. no transactions) Issues with polyglot persistence
  • 10. Copyright © ArangoDB Inc. , 2019 Multi-model databases to the rescue?
  • 11. Copyright © ArangoDB Inc. , 2019 ● The main idea behind multi-model databases is to support different data models in the same database product ● So that the different data models in a multi-model database can easily be combined in queries and even transactions (composability) What are multi-model databases?
  • 12. Copyright © ArangoDB Inc. , 2019 ● Having to master and administer only a single technology ● Being less locked-in to one specific data model and its limitations ● More flexible in case the requirements change ● Removing atomicity and consistency issues for syncing different datastores, and not having to deal with these issues in the application layer Multi-model database key benefits
  • 13. Copyright © ArangoDB Inc. , 2019 Multi-model databases (from Wikipedia)
  • 14. Copyright © ArangoDB Inc. , 2019 ● Some traditional relational databases recently got extensions for key-value handling and document storage ● Strictly speaking, all of them could be called "multi-model" ● Often the extra data models have been "bolted on top" of these products, leading to poor support or inefficient implementations "Layered multi-model" is also a trend
  • 15. Copyright © ArangoDB Inc. , 2019 ArangoDB, the native multi-model database
  • 16. Copyright © ArangoDB Inc. , 2019 ArangoDB is a native multi-model database, with support for key-values, documents, graphs and (recently added) search functionality These data models are composable and can be combined via AQL, ArangoDB's unified query language At a glance
  • 17. Copyright © ArangoDB Inc. , 2019 ● On the highest level, data in ArangoDB is organized in "databases" and "collections" (think "schemas" and "tables") ● Collections are used to store "documents" of similar types ● "Documents" are just JSON objects with arbitrary attributes, with optional nesting (sub-objects, sub-arrays) ● There is no fixed schema for documents (any JSON object is valid) Databases, collections, documents
  • 18. Copyright © ArangoDB Inc. , 2019 In the easiest case, documents in a collection are homogeneous (i.e. same attributes and types) Example use case: product categories { "_key" : "books", "title" : "Books" } { "_key" : "cam", "title" : "Camera products" } { "_key" : "kitchen", "title" : "Kitchen Appliances" } { "_key" : "toys", "title" : "Toys & Games" } Processing such data in AQL queries is as straightforward as with an SQL query on a relational, fixed-schema table Homogeneous documents
  • 19. Copyright © ArangoDB Inc. , 2019 // SELECT c.* FROM categories c WHERE c._key IN ... FOR c IN categories FILTER c._key IN [ 'books', 'kitchen' ] RETURN c // SELECT c._key, c.title FROM categories c ORDER BY c.title FOR c IN categories SORT c.title RETURN { _key: c._key, title: c.title } AQL queries – hello world examples
  • 20. Copyright © ArangoDB Inc. , 2019 In more complex cases, documents in the same collection are heterogeneous (i.e. attribute names or types differ) This is often the case when objects have some common attributes, but there are different special attributes for sub-types Example use case: product catalogs Heterogeneous documents
  • 21. Copyright © ArangoDB Inc. , 2019 { "_key" : "A053720452", "category" : "books", "name" : "Harry Potter and the Cursed Child", "author" : "Joanne K. Rowling", "isbn" : "978-0-7515-6535-5", "published" : 2016 } { "_key" : "ZB4061305X34", "category" : "toys", "name" : "Nerf N-Strike Elite Mega CycloneShock Blaster", "upc" : "630509278862", "colors" : [ "black", "red" ] } Heterogeneous documents example
  • 22. Copyright © ArangoDB Inc. , 2019 ArangoDB is schema-less, meaning optional attributes can be queried the same way as common attributes: // no SQL equivalent, because no optional attributes allowed FOR p IN products FILTER p.name == @search OR p.isbn == @search OR p.upc == @search RETURN p The value of non-existing attributes evaluates to null at runtime Querying heterogeneous documents
  • 23. Copyright © ArangoDB Inc. , 2019 Like SQL, AQL allows joining data from multiple sources: // SELECT c.* AS category, p.* AS product FROM categories c, // products p WHERE p.category = c._key ORDER BY c.title, p.name FOR c IN categories FOR p IN products FILTER p.category == c._key // "category" should be indexed! SORT c.title, p.name RETURN { category: c, product: p } AQL – joins
  • 24. Copyright © ArangoDB Inc. , 2019 ● Documents can be accessed efficiently by their primary key, which is automatically indexed in ArangoDB ("_key" attribute) ● Extra secondary indexes can be created as needed to support efficient querying by different attributes ● Index types: hash, skiplist, geo, fulltext Indexes for more efficient querying
  • 25. Copyright © ArangoDB Inc. , 2019 // this will return an array of product details per category // there is no direct SQL equivalent, as this will return a // nested, variable-length sub-array of products per category FOR c IN categories RETURN { category: c.title, products: ( FOR p IN products FILTER p.category == c._key SORT p.name RETURN { _key: p._key, name: p.name } ) } AQL – subqueries
  • 26. Copyright © ArangoDB Inc. , 2019 // SELECT s.year, s.product, SUM(c.count) AS count, // SUM(s.amount) AS amount FROM sales s WHERE s.year // BETWEEN 2017 AND 2019 GROUP BY s.year, s.product FOR s IN sales FILTER s.year >= 2017 AND s.year <= 2019 COLLECT year = s.year, product = s.product AGGREGATE count = SUM(s.count), amount = SUM(s.amount) RETURN { year, product: DOCUMENT('products', product), count, amount } AQL – aggregation
  • 27. Copyright © ArangoDB Inc. , 2019 // update all documents which don't have a "lastModified" // attribute, store the current date in it, and return the _keys // of the documents updated FOR p IN products FILTER !HAS(p, "lastModified") UPDATE p WITH { lastModified: DATE_ISO8601(DATE_NOW()) } IN products RETURN OLD._key AQL – data modification
  • 28. Copyright © ArangoDB Inc. , 2019 // delete documents of the specified categories, and return // all data of the deleted documents FOR p IN products FILTER p.category IN [ "toys", "kitchen" ] REMOVE p IN products RETURN OLD AQL – data modification
  • 29. Copyright © ArangoDB Inc. , 2019 ● Geo queries ● Fulltext indexing and searching Other AQL features (not shown here)
  • 30. Copyright © ArangoDB Inc. , 2019 ● ArangoDB also supports the graph data model ● Graph queries can reveal which documents are directly or indirectly connected to which other documents, and via what connections ● Graphs are often used for data exploration, and to understand connections in the data The graph data model
  • 31. Copyright © ArangoDB Inc. , 2019 ● In graphs, connections between documents are called "edges" ● In ArangoDB edges are stored in "edge collections" ● Edges have "_from" and "_to" attributes, which reference the connected vertices ● Edges are always directed (_from -> _to), but can also be queried in opposite order Edges
  • 32. Copyright © ArangoDB Inc. , 2019 Let's assume there are some "employees" documents like this: { "_key" : "sofia", "_id" : "employees/sofia" } { "_key" : "adam", "_id" : "employees/adam" } { "_key" : "sarah", "_id" : "employees/sarah" } { "_key" : "jon", "_id" : "employees/jon" } And there is an "isManagerOf" edge collection connecting them: { "_from" : "employees/sofia", "_to" : "employees/adam" } { "_from" : "employees/sofia", "_to" : "employees/sarah" } { "_from" : "employees/sarah", "_to" : "employees/jon" } ... Edge collection example
  • 33. Copyright © ArangoDB Inc. , 2019 Graph example, employees graph
  • 34. Copyright © ArangoDB Inc. , 2019 // find all employees that "sofia" is a direct manager of FOR emp IN 1..1 OUTBOUND 'employees/sofia' isManagerOf RETURN emp._key // find all direct and indirect subordinates of "sofia": FOR emp IN 1..5 OUTBOUND 'employees/sofia' isManagerOf RETURN emp._key AQL graph traversals, examples
  • 35. Copyright © ArangoDB Inc. , 2019 // find employees that "olaf" is indirectly connected to (level 2) FOR emp IN 2..2 ANY 'employees/olaf' isManagerOf RETURN emp._key // find all line managers of employee "olaf", calculate distance FOR emp, edge, path IN 1..5 INBOUND 'employees/olaf' isManagerOf RETURN { who: emp._key, level: LENGTH(path.edges) } AQL graph traversals, more examples
  • 36. Copyright © ArangoDB Inc. , 2019 ● Organizational structures ● Social networks (friends, friends of friends) ● Recommendation and prediction engines ● Product component planning and assessment ● Network and infrastructure assessment ● Fraud detection Some graph use cases
  • 37. Copyright © ArangoDB Inc. , 2019 ● Graphs can also consist of many different collections ● While traversing the graph, it is also possible to filter on edge attributes and exclude unwanted edges or paths ● Graphs can contain cycles, so it is possible to stop searching already-visited documents and edges ● Shortest-path queries are also supported Advanced graph querying
  • 38. Copyright © ArangoDB Inc. , 2019 Deployment options
  • 39. Copyright © ArangoDB Inc. , 2019 ● Single server ● Active failover: 2+ single servers with asynchronous replication and automatic failover ● Cluster: multiple query processing and storage nodes, horizontal write scaling and resilience Deployment modes
  • 40. Copyright © ArangoDB Inc. , 2019 ● Linux, with 64 bit OS ● Windows 10, Windows 7 SP1, Windows server, with 64 bit OS ● Mac OS, Sierra and newer ● Kubernetes (including Google GKE, Amazon EKS, Pivotal PKS) ● Docker Supported platforms
  • 41. Copyright © ArangoDB Inc. , 2019 ArangoDB clusters running on ARM64
  • 42. Copyright © ArangoDB Inc. , 2019 Bonus features
  • 43. Copyright © ArangoDB Inc. , 2019 Administration via web interface
  • 44. Copyright © ArangoDB Inc. , 2019 Built-in graph viewer
  • 45. Copyright © ArangoDB Inc. , 2019 ● "Smart graphs" (colocating of documents with all their outgoing edges on the same physical server) ● Datacenter-to-datacenter (DC2DC) replication ● Encryption at rest, encrypted backups ● LDAP integration for user management ● Support subscription with SLAs Additional enterprise edition features
  • 46. Copyright © ArangoDB Inc. , 2019 ArangoDB Foxx, for exposing data via REST APIs
  • 47. Copyright © ArangoDB Inc. , 2019 ● Combine your data with an API and you have a microservice! ● ArangoDB comes with Foxx, a built-in framework for easily exposing dedicated database data via REST APIs ● The REST API code is written using JavaScript, which runs inside the ArangoDB server, close to the data Foxx – built-in microservice framework
  • 48. Copyright © ArangoDB Inc. , 2019 // endpoint: HTTP GET /managersOf/:employee router.get("/managersOf/:employee", function (req, res) { let query = `FOR emp, edge, path IN 1..5 INBOUND CONCAT('employees/', @employee) isManagerOf RETURN { who: emp._key, level: LENGTH(path.edges) }' `; let result = db._query(query, { employee: req.param("employee") // use path parameter }).toArray(); res.json(result); // return JSON result to caller }); Foxx example, custom API code
  • 49. Copyright © ArangoDB Inc. , 2019 ● It is easy to add input parameter validation and sanitation ● API documentation facility is already included in the framework ● API documentation can be made available for humans (via Swagger UI) and client applications as a service description JSON file Foxx – built-in microservice framework
  • 50. Copyright © ArangoDB Inc. , 2019 Adding the below code to the existing route adds simple validation for the input parameter and also API documentation: router.get("/managersOf/:employee", function (req, res) { ... // previous code here }) .pathParam("employee", joi.string().required(), "employee name") .summary("returns managers of the employee") .response(200, 'will return a list of the managers') .error(404, 'employee has no managers'); Example with input validation and docs
  • 51. Copyright © ArangoDB Inc. , 2019 ● Data validation, sanitation and transformation ● Keeping things private by filtering data and running projections before returning it ● Complex permissioning based on database data or queries ● Eliminating network hops by bundling multiple database queries in a single server-side REST API method Foxx – use cases
  • 52. Copyright © ArangoDB Inc. , 2019 ● ArangoDB is a free and open-source native multi-model database ● Provides support for key-values, documents, graphs ● Search functionality has been recently added and will be extended ● Different data models can be used flexibly ● AQL query language can be used for rich querying, combining all data models ● Various deployment modes, including cluster setups Summary
  • 53. Copyright © ArangoDB Inc. , 2019 ● Website: https://www.arangodb.com/ ● Slack: https://slack.arangodb.com/ ● Github: arangodb/arangodb ● Twitter: @arangodb ● Stack Overflow: #arangodb Getting in touch