SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
Wir sind aber nicht Twitter
Was alternative Datenbanken jenseits von Skalierung bieten. 
Frank Celler
Developer Week 2013
Nürnberg
www.arangodb.org (c) f.celler@triagens.de
Mittwoch, 26. Juni 13
Die NoSQL Bewegung
www.arangodb.org (c) f.celler@triagens.de
Mittwoch, 26. Juni 13
www.arangodb.org (c) f.celler@triagens.de
http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/nosql/Home%20Page
NoSQL
A Relational Database Management System
NoSQL is a fast, portable, relational database management system without arbitrary limits,
(other than memory and processor speed) that runs under, and interacts with, the UNIX1
Operating System. It uses the "Operator-Stream Paradigm" described in "Unix Review", March,
1991, page 24, entitled "A 4GL Language". There are a number of "operators" that each
perform a unique function on the data. The "stream" is supplied by the UNIX Input/Output
redirection mechanism. Therefore each operator processes some data and then passes it along to
the next operator via the UNIX pipe function. This is very efficient as UNIX pipes are
implemented in memory. NoSQL is compliant with the "Relational Model".
Carlo Strozzi, 1998
Mittwoch, 26. Juni 13
www.arangodb.org (c) f.celler@triagens.de
Traffic,Traffic,Traffic
Mittwoch, 26. Juni 13
www.arangodb.org (c) f.celler@triagens.de
http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
Dynamo: Amazon’s Highly Available Key-value Store
Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall and Werner Vogels
Amazon.com
Abstract
Reliability at massive scale is one of the biggest challenges we face at Amazon.com, one of the
largest e-commerce operations in the world; even the slightest outage has significant financial
consequences and impacts customer trust. The Amazon.com platform, which provides services
for many web sites worldwide, is implemented on top of an infrastructure of tens of thousands of
servers and network components located in many datacenters around the world. At this scale,
small and large components fail continuously and the way persistent state is managed in the face
of these failures drives the reliability and scalability of the software systems.
This paper presents the design and implementation of Dynamo, a highly available key-value
storage system that some of Amazon’s core services use to provide an “always-on” experience. 
To achieve this level of availability, Dynamo sacrifices consistency under certain failure
scenarios. It makes extensive use of object versioning and application-assisted conflict resolution
in a manner that provides a novel interface for developers to use.
Werner Vogels, 2007
Mittwoch, 26. Juni 13
CAP
www.arangodb.org (c) f.celler@triagens.de
ACID
BASE
Was ist neu?
Mittwoch, 26. Juni 13
www.arangodb.org (c) f.celler@triagens.de
NOSQL meetup
Thursday, June 11, 2009 from 10:00 AM to 5:00 PM (PDT)
San Francisco, CA
Introduction
This meetup is about "open source, distributed, non relational databases".
Have you run into limitations with traditional relational databases? Don't mind trading a
query language for scalability? Or perhaps you just like shiny new things to try out?
Either way this meetup is for you.
Join us in figuring out why these newfangled Dynamo clones and BigTables have become
so popular lately. We have gathered presenters from the most interesting projects around
to give us all an introduction to the field.
http://nosql.eventbrite.com/
Mittwoch, 26. Juni 13
Dokument Datenbanken
www.arangodb.org (c) f.celler@triagens.de
Mittwoch, 26. Juni 13
www.arangodb.org (c) f.celler@triagens.de
Warum NoSQL?
Reasons to use NoSQL databases
This is interesting. If you group together the sections that deal with ‘ease of application
development’ – which are ‘simpler data model’, ‘schema less’ and ‘rapid development’ –
then these come to a total of 17. This far outweighs any other result. It would seem that
most people use NoSQL databases because they’re easier to develop application on.
This likely accounts for why you come across Open Source NoSQL databases on the
web, but not in large organisations doing serious work – for a large and complex system
ease of development is not a primary concern. These organisations are instead concerned
with ‘doing things properly’ – i.e. Enterprise class solutions.
Adam Fowler, 2013
http://adamfowlerml.wordpress.com/2013/01/04/why-use-a-nosql-database-and-why-not/
Mittwoch, 26. Juni 13
• relationales Gebot: Daten sollen
normalisiert gespeichert werden
• Redundanzen auflösen
• Konsistenz und Integrität der Daten
erhöhen
www.arangodb.org (c) f.celler@triagens.de
RDBMS Normalisierung
Mittwoch, 26. Juni 13
• Eine „Person“ hat
• Vor und Zuname
• eine oder mehrere Adressen, Email-
Adressen,Telefonnummern
• Liste für Hobbies, Skills,Tags
www.arangodb.org (c) f.celler@triagens.de
RDBMS Normalisierung
Mittwoch, 26. Juni 13
www.arangodb.org (c) f.celler@triagens.de
PersonPersonPerson
AddressAddressAddress
HobbyHobbyHobby
emailemailemail
n-to-mn-to-mn-to-m
n-to-mn-to-mn-to-m
n-to-mn-to-mn-to-m
Relationale Welt
Mittwoch, 26. Juni 13
www.arangodb.org (c) f.celler@triagens.de
Relationale Welt
• normalisierte Daten sind meist auf
mehrere Tabellen verteilt
• zur Abfrage benötigt man dann Joins
• es können Beziehungen (references) und
Konsistenzbedingungen (constraints)
definiert werden
• diese werden von der Datenbank
erzwungen
Mittwoch, 26. Juni 13
www.arangodb.org (c) f.celler@triagens.de
{ name: { first: „Frank“, last: „Celler“ },
address: { home: { street: „...“, city: „...“ } },
email: { work: „frank@celler.de“ },
hobbies: [ „C++“, „MRuby“, „JavaScript“ ] }
Aggregate aka Dokument
Mittwoch, 26. Juni 13
• Dokument
• einfache Key /Value Paare
• Listen und Unterobjekte
• vielfach als JSON
• Schema-Freiheit
• keine objektrelationale Unverträglichkeit
www.arangodb.org (c) f.celler@triagens.de
Dokument Datenbanken
Mittwoch, 26. Juni 13
• es ist "erwünscht", ein Objekt als
zusammengehöriges Aggregat zu speichern
(keine Aufteilung der Objekteigenschaften
auf verschiedene "Tabellen" etc.)
• durch die Aggregatorientierung ist das
Lesen und Speichern von kompletten
Objekten einfach und schnell
www.arangodb.org (c) f.celler@triagens.de
Dokument Datenbanken
Mittwoch, 26. Juni 13
• Schema ist in gespeicherten Daten inhärent
vorhanden
• verschiedeneVersionen eines "Schemas"
können parallel existieren:
• { name: "..." }
• { name: { first: "...", last: "..." } }
• { firstName: "...", lastName: "..." }
www.arangodb.org (c) f.celler@triagens.de
Schema-Freiheit
Mittwoch, 26. Juni 13
• kein Migrationszwang: man kann selbst
entscheiden, ob (und wann) "alte" Daten
migriert werden
• wenn keine Migration alter Daten erfolgt,
muss die Applikation mit verschiedenen
Versionen umgehen können
• mehr Kontrolle = mehrVerantwortung
www.arangodb.org (c) f.celler@triagens.de
Schema-Freiheit
Mittwoch, 26. Juni 13
• auf die Attribute von Dokumenten kann
auch einzeln zugegriffen werden
• teilweise können auch Indizes auf die
einzelnen Attribute angelegt werden
• zur Zeit keine einheitliche Abfragesprache,
noch nicht einmal einheitliches Paradigma
• selten Joins notwendig
www.arangodb.org (c) f.celler@triagens.de
Abfragen
Mittwoch, 26. Juni 13
Graph Datenbanken
www.arangodb.org (c) f.celler@triagens.de
Mittwoch, 26. Juni 13
(c) Geek & Poke
Mittwoch, 26. Juni 13
www.arangodb.org (c) f.celler@triagens.de
Graph Datenbanken
• ein "Graph" ist die Gesamtheit von
• Objekten (Knoten, auch "vertices") sowie
• Beziehungen (Kanten, auch "edges")
Mittwoch, 26. Juni 13
www.arangodb.org (c) f.celler@triagens.de
Type: inproceeding
Title: Finite Size Effects
Type: proceeding
Title: Neural Modeling
Type: person
Name:Anthony C. C.
Coolen
Label: written
Label: published
Pages: 99-120
Type: person
Name: Snchez-Andrs
Label: edited
Just Documents
Graph Datenbanken
Mittwoch, 26. Juni 13
• Hierarchien, Klassifikationen (Bäume)
• soziale Beziehungen (Netzwerke)
• geographische Daten (Navigation, Routen)
• die Objekte selbst und die direkten und
indirekten Beziehungen ("Pfade") sind
abfragbar
www.arangodb.org (c) f.celler@triagens.de
Einsatzmöglichkeiten
Mittwoch, 26. Juni 13
• Graph-Abfragen sind oft komplex
• Traversals: in der Datenbank ausgeführte
Programme
• Gremlin (Datenbank-übergreifende
Traversal-Skriptsprache)
• Datenbank-eigene Abfragemöglichkeiten(z.
B.Abfragesprache "Cypher" in Neo4j)
www.arangodb.org (c) f.celler@triagens.de
Abfragen
Mittwoch, 26. Juni 13
Multi-Modell Datenbanken
www.arangodb.org (c) f.celler@triagens.de
Mittwoch, 26. Juni 13
www.arangodb.org (c) f.celler@triagens.de
• Knoten und Kanten sind Dokumente
• Abfragen wie analog Dokument-
Datenbanken
• Range, Geo, Full-Text
• Beziehung als Graph
• Traversieren des Graphen
Multi-Modell Datenbanken
Mittwoch, 26. Juni 13
ArangoDB.explain()
www.arangodb.org (c) f.celler@triagens.de
{
"type": "NoSQL database",
"model": [ "document", "graph", "key-value" ],
"openSource": true,
"license“: "apache",
"version": 1.3,
"builtWith": [ "C", "C++", "js" ],
"Javascript": [ "client side", "server side" ],
"uses": [ "V8" ]
}
Mittwoch, 26. Juni 13
NoSQL Landschaft
www.arangodb.org (c) f.celler@triagens.de
Mittwoch, 26. Juni 13
• in den letzten Jahren sind viele neue, nicht-
relationale Datenbanken entstanden
• diese lösen einige der genannten Probleme
(Skalierung, Schemas, dynamische Daten,
impedance mismatch)
• teilweise durch weniger Zusicherungen und
Garantien (a.k.a. Delegation von Aufgaben an
die Applikation)
www.arangodb.org (c) f.celler@triagens.de
NoSQL Datenbanken
Mittwoch, 26. Juni 13
(c) 451 Research 31
Mittwoch, 26. Juni 13
www.arangodb.org (c) f.celler@triagens.de 32
Analytic Processing DBsTransaction Processing DBs
Managing the evolving state of an IT system
Map/Reduce
Graphs
Extensibility
Key/Value
Column-
Stores
Complex
Queries
Structured
Data
Massively
Distributed
Documents
Mittwoch, 26. Juni 13
JavaScript in der Datenbank
www.arangodb.org (c) f.celler@triagens.de
Mittwoch, 26. Juni 13
JavaScript Everywhere
• im Browser
• Application-Layer (Node.JS)
• Datenbank
www.arangodb.org (c) f.celler@triagens.de
Mittwoch, 26. Juni 13
JavaScript in a Database
• MVC im Browser und/oder NODE.JS
• Script-Sprache in der Datenbank
• Transaktionen als Functionen
• Graph-Traversal
• no-backend, just API
www.arangodb.org (c) f.celler@triagens.de
Mittwoch, 26. Juni 13
db._create("accounts");
db.accounts.save({ _key: "john", amount: 423 });
db.accounts.save({ _key: "fred", amount: 197 });
db._executeTransaction({
collections: {
write: "accounts"
},
params: {
user1: "fred",
user2: "john",
amount: 10
},
action: function (params) {
var db = require("internal").db;
var account1 = db.accounts.document(params['user1']);
var account2 = db.accounts.document(params['user2']);
var amount = params['amount'];
if (account1.amount < amount) {
throw "account of user '" + user1 + "' does not have enough money!";
}
db.accounts.update(account1, { amount : account1.amount - amount });
db.accounts.update(account2, { amount : account2.amount + amount });
/* will commit the transaction and return the value true */
return true;
}
});
www.arangodb.org (c) f.celler@triagens.de
Transactions
Mittwoch, 26. Juni 13
db._executeTransaction({
collections: {
write: "accounts"
},
params: {
user1: "fred",
user2: "john",
amount: 10
},
action: function (params) {
var db = require("internal").db;
var account1 = db.accounts.document(params['user1']);
var account2 = db.accounts.document(params['user2']);
var amount = params['amount'];
if (account1.amount < amount) {
throw "account of user '" + user1 + "' does not have enough money!";
}
db.accounts.update(account1, { amount : account1.amount - amount });
db.accounts.update(account2, { amount : account2.amount + amount });
www.arangodb.org (c) f.celler@triagens.de
Transactions
Mittwoch, 26. Juni 13
function traverse (graph, start, depth, maxlen) {
var config = {
datasource: traversal.collectionDatasourceFactory(graph._edges),
strategy: Traverser.BREADTH_FIRST,
expander: traversal.anyExpander,
filter: traversal.maxDepthFilter,
maxDepth: depth,
uniqueness: { edges: Traverser.UNIQUE_GLOBAL, vertices: Traverser.UNIQUE_NONE },
visitor: coauthorVisitor(maxlen)
};
var traverser = new Traverser(config);
var result = { positions: {}, vertices: [], links: [], minYear: 0, maxYear: 0 };
var first = graph._vertices.firstExample({ name: start });
if (first !== null) {
traverser.traverse(result, first);
}
return {
start: start,
depth: depth,
minYear: result.minYear,
maxYear: result.maxYear,
vertices: result.vertices,
links: result.links };
}
www.arangodb.org (c) f.celler@triagens.de
Graph Traversal
Mittwoch, 26. Juni 13
function traverse (graph, start, depth, maxlen) {
var config = {
datasource: traversal.collectionDatasourceFactory(graph._edges),
strategy: Traverser.BREADTH_FIRST,
expander: traversal.anyExpander,
filter: traversal.maxDepthFilter,
maxDepth: depth,
uniqueness: { edges: Traverser.UNIQUE_GLOBAL,
vertices: Traverser.UNIQUE_NONE },
visitor: coauthorVisitor(maxlen)
};
www.arangodb.org (c) f.celler@triagens.de
Graph Traversal
Mittwoch, 26. Juni 13
www.arangodb.org (c) f.celler@triagens.de
No-Backend
Mittwoch, 26. Juni 13
To Be Continued
• Fork me on github
• Google Group:ArangoDB
• Twitter: @fceller & @arangodb
• www.arangodb.org
www.arangodb.org (c) f.celler@triagens.de
Stay in Touch:
Mittwoch, 26. Juni 13

Más contenido relacionado

Destacado

Multi model-databases 29-10-2014 LJC
Multi model-databases 29-10-2014 LJCMulti model-databases 29-10-2014 LJC
Multi model-databases 29-10-2014 LJCArangoDB Database
 
Domain Driven Design and NoSQL TLV
Domain Driven Design and NoSQL TLVDomain Driven Design and NoSQL TLV
Domain Driven Design and NoSQL TLVArangoDB Database
 
CAP and the Architectural Consequences by martin Schönert
CAP and the Architectural Consequences by martin SchönertCAP and the Architectural Consequences by martin Schönert
CAP and the Architectural Consequences by martin SchönertArangoDB Database
 
Polyglot Persistence & Multi Model-Databases at JMaghreb3.0
Polyglot Persistence & Multi Model-Databases at JMaghreb3.0Polyglot Persistence & Multi Model-Databases at JMaghreb3.0
Polyglot Persistence & Multi Model-Databases at JMaghreb3.0ArangoDB 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
 
Row or Columnar Database
Row or Columnar DatabaseRow or Columnar Database
Row or Columnar DatabaseBiju Nair
 
Introduction to column oriented databases
Introduction to column oriented databasesIntroduction to column oriented databases
Introduction to column oriented databasesArangoDB Database
 
Query mechanisms for NoSQL databases
Query mechanisms for NoSQL databasesQuery mechanisms for NoSQL databases
Query mechanisms for NoSQL databasesArangoDB Database
 

Destacado (11)

Multi model-databases 29-10-2014 LJC
Multi model-databases 29-10-2014 LJCMulti model-databases 29-10-2014 LJC
Multi model-databases 29-10-2014 LJC
 
Guacamole
GuacamoleGuacamole
Guacamole
 
Domain Driven Design and NoSQL TLV
Domain Driven Design and NoSQL TLVDomain Driven Design and NoSQL TLV
Domain Driven Design and NoSQL TLV
 
CAP and the Architectural Consequences by martin Schönert
CAP and the Architectural Consequences by martin SchönertCAP and the Architectural Consequences by martin Schönert
CAP and the Architectural Consequences by martin Schönert
 
Polyglot Persistence & Multi Model-Databases at JMaghreb3.0
Polyglot Persistence & Multi Model-Databases at JMaghreb3.0Polyglot Persistence & Multi Model-Databases at JMaghreb3.0
Polyglot Persistence & Multi Model-Databases at JMaghreb3.0
 
NoSQL meets Microservices
NoSQL meets MicroservicesNoSQL meets Microservices
NoSQL meets Microservices
 
Creating Fault Tolerant Services on Mesos
Creating Fault Tolerant Services on MesosCreating Fault Tolerant Services on Mesos
Creating Fault Tolerant Services on Mesos
 
Row or Columnar Database
Row or Columnar DatabaseRow or Columnar Database
Row or Columnar Database
 
Introduction to column oriented databases
Introduction to column oriented databasesIntroduction to column oriented databases
Introduction to column oriented databases
 
Query mechanisms for NoSQL databases
Query mechanisms for NoSQL databasesQuery mechanisms for NoSQL databases
Query mechanisms for NoSQL databases
 
SlideShare 101
SlideShare 101SlideShare 101
SlideShare 101
 

Similar a Wir sind aber nicht Twitter

Integration von Normdaten in Bibliotheksanwendungen auf der Basis von Semanti...
Integration von Normdaten in Bibliotheksanwendungen auf der Basis von Semanti...Integration von Normdaten in Bibliotheksanwendungen auf der Basis von Semanti...
Integration von Normdaten in Bibliotheksanwendungen auf der Basis von Semanti...redsys
 
Whitepaper sones GraphDB (ger)
Whitepaper sones GraphDB (ger)Whitepaper sones GraphDB (ger)
Whitepaper sones GraphDB (ger)sones GmbH
 
Web-2.0-Forschung der KWARC-Gruppe
Web-2.0-Forschung der KWARC-GruppeWeb-2.0-Forschung der KWARC-Gruppe
Web-2.0-Forschung der KWARC-GruppeChristoph Lange
 
DSpace as publication platform
DSpace as publication platformDSpace as publication platform
DSpace as publication platformredsys
 
eGovernment Konferenz 2013,Österreich - Workshop: Grundlagen und Mehrwerte vo...
eGovernment Konferenz 2013,Österreich - Workshop: Grundlagen und Mehrwerte vo...eGovernment Konferenz 2013,Österreich - Workshop: Grundlagen und Mehrwerte vo...
eGovernment Konferenz 2013,Österreich - Workshop: Grundlagen und Mehrwerte vo...Martin Kaltenböck
 
Not only SQL - CouchDB und andere NoSQL-Datenbanken
Not only SQL - CouchDB und andere NoSQL-DatenbankenNot only SQL - CouchDB und andere NoSQL-Datenbanken
Not only SQL - CouchDB und andere NoSQL-DatenbankenKerstin Puschke
 
schema.org und Bibliotheken
schema.org und Bibliothekenschema.org und Bibliotheken
schema.org und BibliothekenAdrian Pohl
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?KurtStockinger
 
Kickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen HochschulbibliothekenKickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen HochschulbibliothekenLydiaU
 
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenAMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenBjörn Muschall
 
Wissenstechnologie 2007 - IX
Wissenstechnologie 2007 - IXWissenstechnologie 2007 - IX
Wissenstechnologie 2007 - IXpscheir
 
Einführung in Elasticsearch
Einführung in ElasticsearchEinführung in Elasticsearch
Einführung in ElasticsearchFlorian Hopf
 
Fmk2013 datenmodelle krambrich-brändle (rev)
Fmk2013 datenmodelle krambrich-brändle (rev)Fmk2013 datenmodelle krambrich-brändle (rev)
Fmk2013 datenmodelle krambrich-brändle (rev)Verein FM Konferenz
 
ExsoFlow Workflow & IntegrationServer technische Information
ExsoFlow Workflow & IntegrationServer technische InformationExsoFlow Workflow & IntegrationServer technische Information
ExsoFlow Workflow & IntegrationServer technische InformationEXSO. business solutions GmbH
 
Cassandra – die NoSQL-Datenbank für große Mengen und schnelle Zugriffe
Cassandra – die NoSQL-Datenbank für große Mengen und schnelle ZugriffeCassandra – die NoSQL-Datenbank für große Mengen und schnelle Zugriffe
Cassandra – die NoSQL-Datenbank für große Mengen und schnelle ZugriffeLothar Wieske
 
Einbindung von Linked Data in existierende Bibliotheksanswendungen
Einbindung von Linked Data in existierende BibliotheksanswendungenEinbindung von Linked Data in existierende Bibliotheksanswendungen
Einbindung von Linked Data in existierende Bibliotheksanswendungenredsys
 

Similar a Wir sind aber nicht Twitter (20)

Reactive Programming
Reactive ProgrammingReactive Programming
Reactive Programming
 
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
 
Integration von Normdaten in Bibliotheksanwendungen auf der Basis von Semanti...
Integration von Normdaten in Bibliotheksanwendungen auf der Basis von Semanti...Integration von Normdaten in Bibliotheksanwendungen auf der Basis von Semanti...
Integration von Normdaten in Bibliotheksanwendungen auf der Basis von Semanti...
 
Whitepaper sones GraphDB (ger)
Whitepaper sones GraphDB (ger)Whitepaper sones GraphDB (ger)
Whitepaper sones GraphDB (ger)
 
Web-2.0-Forschung der KWARC-Gruppe
Web-2.0-Forschung der KWARC-GruppeWeb-2.0-Forschung der KWARC-Gruppe
Web-2.0-Forschung der KWARC-Gruppe
 
DSpace as publication platform
DSpace as publication platformDSpace as publication platform
DSpace as publication platform
 
eGovernment Konferenz 2013,Österreich - Workshop: Grundlagen und Mehrwerte vo...
eGovernment Konferenz 2013,Österreich - Workshop: Grundlagen und Mehrwerte vo...eGovernment Konferenz 2013,Österreich - Workshop: Grundlagen und Mehrwerte vo...
eGovernment Konferenz 2013,Österreich - Workshop: Grundlagen und Mehrwerte vo...
 
NoSQL und CouchDB
NoSQL und CouchDBNoSQL und CouchDB
NoSQL und CouchDB
 
Enterprise JS
Enterprise JS Enterprise JS
Enterprise JS
 
Not only SQL - CouchDB und andere NoSQL-Datenbanken
Not only SQL - CouchDB und andere NoSQL-DatenbankenNot only SQL - CouchDB und andere NoSQL-Datenbanken
Not only SQL - CouchDB und andere NoSQL-Datenbanken
 
schema.org und Bibliotheken
schema.org und Bibliothekenschema.org und Bibliotheken
schema.org und Bibliotheken
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
 
Kickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen HochschulbibliothekenKickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
 
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenAMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
 
Wissenstechnologie 2007 - IX
Wissenstechnologie 2007 - IXWissenstechnologie 2007 - IX
Wissenstechnologie 2007 - IX
 
Einführung in Elasticsearch
Einführung in ElasticsearchEinführung in Elasticsearch
Einführung in Elasticsearch
 
Fmk2013 datenmodelle krambrich-brändle (rev)
Fmk2013 datenmodelle krambrich-brändle (rev)Fmk2013 datenmodelle krambrich-brändle (rev)
Fmk2013 datenmodelle krambrich-brändle (rev)
 
ExsoFlow Workflow & IntegrationServer technische Information
ExsoFlow Workflow & IntegrationServer technische InformationExsoFlow Workflow & IntegrationServer technische Information
ExsoFlow Workflow & IntegrationServer technische Information
 
Cassandra – die NoSQL-Datenbank für große Mengen und schnelle Zugriffe
Cassandra – die NoSQL-Datenbank für große Mengen und schnelle ZugriffeCassandra – die NoSQL-Datenbank für große Mengen und schnelle Zugriffe
Cassandra – die NoSQL-Datenbank für große Mengen und schnelle Zugriffe
 
Einbindung von Linked Data in existierende Bibliotheksanswendungen
Einbindung von Linked Data in existierende BibliotheksanswendungenEinbindung von Linked Data in existierende Bibliotheksanswendungen
Einbindung von Linked Data in existierende Bibliotheksanswendungen
 

Más de 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
 
Webinar: ArangoDB 3.8 Preview - Analytics at Scale
Webinar: ArangoDB 3.8 Preview - Analytics at Scale Webinar: ArangoDB 3.8 Preview - Analytics at Scale
Webinar: ArangoDB 3.8 Preview - Analytics at Scale ArangoDB Database
 
Graph Analytics with ArangoDB
Graph Analytics with ArangoDBGraph Analytics with ArangoDB
Graph Analytics with ArangoDBArangoDB Database
 
Getting Started with ArangoDB Oasis
Getting Started with ArangoDB OasisGetting Started with ArangoDB Oasis
Getting Started with ArangoDB OasisArangoDB Database
 
Custom Pregel Algorithms in ArangoDB
Custom Pregel Algorithms in ArangoDBCustom Pregel Algorithms in ArangoDB
Custom Pregel Algorithms in ArangoDBArangoDB 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
 
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
 
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
 
ArangoML Pipeline Cloud - Managed Machine Learning Metadata
ArangoML Pipeline Cloud - Managed Machine Learning MetadataArangoML Pipeline Cloud - Managed Machine Learning Metadata
ArangoML Pipeline Cloud - Managed Machine Learning MetadataArangoDB Database
 
ArangoDB 3.7 Roadmap: Performance at Scale
ArangoDB 3.7 Roadmap: Performance at ScaleArangoDB 3.7 Roadmap: Performance at Scale
ArangoDB 3.7 Roadmap: Performance at ScaleArangoDB 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
 
Webinar: How native multi model works in ArangoDB
Webinar: How native multi model works in ArangoDBWebinar: How native multi model works in ArangoDB
Webinar: How native multi model works in ArangoDBArangoDB Database
 
An introduction to multi-model databases
An introduction to multi-model databasesAn introduction to multi-model databases
An introduction to multi-model databasesArangoDB Database
 
Running complex data queries in a distributed system
Running complex data queries in a distributed systemRunning complex data queries in a distributed system
Running complex data queries in a distributed systemArangoDB Database
 

Más de ArangoDB Database (20)

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
 
Webinar: ArangoDB 3.8 Preview - Analytics at Scale
Webinar: ArangoDB 3.8 Preview - Analytics at Scale Webinar: ArangoDB 3.8 Preview - Analytics at Scale
Webinar: ArangoDB 3.8 Preview - Analytics at Scale
 
Graph Analytics with ArangoDB
Graph Analytics with ArangoDBGraph Analytics with ArangoDB
Graph Analytics with ArangoDB
 
Getting Started with ArangoDB Oasis
Getting Started with ArangoDB OasisGetting Started with ArangoDB Oasis
Getting Started with ArangoDB Oasis
 
Custom Pregel Algorithms in ArangoDB
Custom Pregel Algorithms in ArangoDBCustom Pregel Algorithms in ArangoDB
Custom Pregel Algorithms in ArangoDB
 
Hacktoberfest 2020 - Intro to Knowledge Graphs
Hacktoberfest 2020 - Intro to Knowledge GraphsHacktoberfest 2020 - Intro to Knowledge Graphs
Hacktoberfest 2020 - Intro to Knowledge Graphs
 
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
 
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?
 
ArangoML Pipeline Cloud - Managed Machine Learning Metadata
ArangoML Pipeline Cloud - Managed Machine Learning MetadataArangoML Pipeline Cloud - Managed Machine Learning Metadata
ArangoML Pipeline Cloud - Managed Machine Learning Metadata
 
ArangoDB 3.7 Roadmap: Performance at Scale
ArangoDB 3.7 Roadmap: Performance at ScaleArangoDB 3.7 Roadmap: Performance at Scale
ArangoDB 3.7 Roadmap: Performance at Scale
 
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
 
Webinar: How native multi model works in ArangoDB
Webinar: How native multi model works in ArangoDBWebinar: How native multi model works in ArangoDB
Webinar: How native multi model works in ArangoDB
 
An introduction to multi-model databases
An introduction to multi-model databasesAn introduction to multi-model databases
An introduction to multi-model databases
 
Running complex data queries in a distributed system
Running complex data queries in a distributed systemRunning complex data queries in a distributed system
Running complex data queries in a distributed system
 

Wir sind aber nicht Twitter

  • 1. Wir sind aber nicht Twitter Was alternative Datenbanken jenseits von Skalierung bieten.  Frank Celler Developer Week 2013 Nürnberg www.arangodb.org (c) f.celler@triagens.de Mittwoch, 26. Juni 13
  • 2. Die NoSQL Bewegung www.arangodb.org (c) f.celler@triagens.de Mittwoch, 26. Juni 13
  • 3. www.arangodb.org (c) f.celler@triagens.de http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/nosql/Home%20Page NoSQL A Relational Database Management System NoSQL is a fast, portable, relational database management system without arbitrary limits, (other than memory and processor speed) that runs under, and interacts with, the UNIX1 Operating System. It uses the "Operator-Stream Paradigm" described in "Unix Review", March, 1991, page 24, entitled "A 4GL Language". There are a number of "operators" that each perform a unique function on the data. The "stream" is supplied by the UNIX Input/Output redirection mechanism. Therefore each operator processes some data and then passes it along to the next operator via the UNIX pipe function. This is very efficient as UNIX pipes are implemented in memory. NoSQL is compliant with the "Relational Model". Carlo Strozzi, 1998 Mittwoch, 26. Juni 13
  • 5. www.arangodb.org (c) f.celler@triagens.de http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html Dynamo: Amazon’s Highly Available Key-value Store Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall and Werner Vogels Amazon.com Abstract Reliability at massive scale is one of the biggest challenges we face at Amazon.com, one of the largest e-commerce operations in the world; even the slightest outage has significant financial consequences and impacts customer trust. The Amazon.com platform, which provides services for many web sites worldwide, is implemented on top of an infrastructure of tens of thousands of servers and network components located in many datacenters around the world. At this scale, small and large components fail continuously and the way persistent state is managed in the face of these failures drives the reliability and scalability of the software systems. This paper presents the design and implementation of Dynamo, a highly available key-value storage system that some of Amazon’s core services use to provide an “always-on” experience.  To achieve this level of availability, Dynamo sacrifices consistency under certain failure scenarios. It makes extensive use of object versioning and application-assisted conflict resolution in a manner that provides a novel interface for developers to use. Werner Vogels, 2007 Mittwoch, 26. Juni 13
  • 7. www.arangodb.org (c) f.celler@triagens.de NOSQL meetup Thursday, June 11, 2009 from 10:00 AM to 5:00 PM (PDT) San Francisco, CA Introduction This meetup is about "open source, distributed, non relational databases". Have you run into limitations with traditional relational databases? Don't mind trading a query language for scalability? Or perhaps you just like shiny new things to try out? Either way this meetup is for you. Join us in figuring out why these newfangled Dynamo clones and BigTables have become so popular lately. We have gathered presenters from the most interesting projects around to give us all an introduction to the field. http://nosql.eventbrite.com/ Mittwoch, 26. Juni 13
  • 8. Dokument Datenbanken www.arangodb.org (c) f.celler@triagens.de Mittwoch, 26. Juni 13
  • 9. www.arangodb.org (c) f.celler@triagens.de Warum NoSQL? Reasons to use NoSQL databases This is interesting. If you group together the sections that deal with ‘ease of application development’ – which are ‘simpler data model’, ‘schema less’ and ‘rapid development’ – then these come to a total of 17. This far outweighs any other result. It would seem that most people use NoSQL databases because they’re easier to develop application on. This likely accounts for why you come across Open Source NoSQL databases on the web, but not in large organisations doing serious work – for a large and complex system ease of development is not a primary concern. These organisations are instead concerned with ‘doing things properly’ – i.e. Enterprise class solutions. Adam Fowler, 2013 http://adamfowlerml.wordpress.com/2013/01/04/why-use-a-nosql-database-and-why-not/ Mittwoch, 26. Juni 13
  • 10. • relationales Gebot: Daten sollen normalisiert gespeichert werden • Redundanzen auflösen • Konsistenz und Integrität der Daten erhöhen www.arangodb.org (c) f.celler@triagens.de RDBMS Normalisierung Mittwoch, 26. Juni 13
  • 11. • Eine „Person“ hat • Vor und Zuname • eine oder mehrere Adressen, Email- Adressen,Telefonnummern • Liste für Hobbies, Skills,Tags www.arangodb.org (c) f.celler@triagens.de RDBMS Normalisierung Mittwoch, 26. Juni 13
  • 13. www.arangodb.org (c) f.celler@triagens.de Relationale Welt • normalisierte Daten sind meist auf mehrere Tabellen verteilt • zur Abfrage benötigt man dann Joins • es können Beziehungen (references) und Konsistenzbedingungen (constraints) definiert werden • diese werden von der Datenbank erzwungen Mittwoch, 26. Juni 13
  • 14. www.arangodb.org (c) f.celler@triagens.de { name: { first: „Frank“, last: „Celler“ }, address: { home: { street: „...“, city: „...“ } }, email: { work: „frank@celler.de“ }, hobbies: [ „C++“, „MRuby“, „JavaScript“ ] } Aggregate aka Dokument Mittwoch, 26. Juni 13
  • 15. • Dokument • einfache Key /Value Paare • Listen und Unterobjekte • vielfach als JSON • Schema-Freiheit • keine objektrelationale Unverträglichkeit www.arangodb.org (c) f.celler@triagens.de Dokument Datenbanken Mittwoch, 26. Juni 13
  • 16. • es ist "erwünscht", ein Objekt als zusammengehöriges Aggregat zu speichern (keine Aufteilung der Objekteigenschaften auf verschiedene "Tabellen" etc.) • durch die Aggregatorientierung ist das Lesen und Speichern von kompletten Objekten einfach und schnell www.arangodb.org (c) f.celler@triagens.de Dokument Datenbanken Mittwoch, 26. Juni 13
  • 17. • Schema ist in gespeicherten Daten inhärent vorhanden • verschiedeneVersionen eines "Schemas" können parallel existieren: • { name: "..." } • { name: { first: "...", last: "..." } } • { firstName: "...", lastName: "..." } www.arangodb.org (c) f.celler@triagens.de Schema-Freiheit Mittwoch, 26. Juni 13
  • 18. • kein Migrationszwang: man kann selbst entscheiden, ob (und wann) "alte" Daten migriert werden • wenn keine Migration alter Daten erfolgt, muss die Applikation mit verschiedenen Versionen umgehen können • mehr Kontrolle = mehrVerantwortung www.arangodb.org (c) f.celler@triagens.de Schema-Freiheit Mittwoch, 26. Juni 13
  • 19. • auf die Attribute von Dokumenten kann auch einzeln zugegriffen werden • teilweise können auch Indizes auf die einzelnen Attribute angelegt werden • zur Zeit keine einheitliche Abfragesprache, noch nicht einmal einheitliches Paradigma • selten Joins notwendig www.arangodb.org (c) f.celler@triagens.de Abfragen Mittwoch, 26. Juni 13
  • 20. Graph Datenbanken www.arangodb.org (c) f.celler@triagens.de Mittwoch, 26. Juni 13
  • 21. (c) Geek & Poke Mittwoch, 26. Juni 13
  • 22. www.arangodb.org (c) f.celler@triagens.de Graph Datenbanken • ein "Graph" ist die Gesamtheit von • Objekten (Knoten, auch "vertices") sowie • Beziehungen (Kanten, auch "edges") Mittwoch, 26. Juni 13
  • 23. www.arangodb.org (c) f.celler@triagens.de Type: inproceeding Title: Finite Size Effects Type: proceeding Title: Neural Modeling Type: person Name:Anthony C. C. Coolen Label: written Label: published Pages: 99-120 Type: person Name: Snchez-Andrs Label: edited Just Documents Graph Datenbanken Mittwoch, 26. Juni 13
  • 24. • Hierarchien, Klassifikationen (Bäume) • soziale Beziehungen (Netzwerke) • geographische Daten (Navigation, Routen) • die Objekte selbst und die direkten und indirekten Beziehungen ("Pfade") sind abfragbar www.arangodb.org (c) f.celler@triagens.de Einsatzmöglichkeiten Mittwoch, 26. Juni 13
  • 25. • Graph-Abfragen sind oft komplex • Traversals: in der Datenbank ausgeführte Programme • Gremlin (Datenbank-übergreifende Traversal-Skriptsprache) • Datenbank-eigene Abfragemöglichkeiten(z. B.Abfragesprache "Cypher" in Neo4j) www.arangodb.org (c) f.celler@triagens.de Abfragen Mittwoch, 26. Juni 13
  • 26. Multi-Modell Datenbanken www.arangodb.org (c) f.celler@triagens.de Mittwoch, 26. Juni 13
  • 27. www.arangodb.org (c) f.celler@triagens.de • Knoten und Kanten sind Dokumente • Abfragen wie analog Dokument- Datenbanken • Range, Geo, Full-Text • Beziehung als Graph • Traversieren des Graphen Multi-Modell Datenbanken Mittwoch, 26. Juni 13
  • 28. ArangoDB.explain() www.arangodb.org (c) f.celler@triagens.de { "type": "NoSQL database", "model": [ "document", "graph", "key-value" ], "openSource": true, "license“: "apache", "version": 1.3, "builtWith": [ "C", "C++", "js" ], "Javascript": [ "client side", "server side" ], "uses": [ "V8" ] } Mittwoch, 26. Juni 13
  • 29. NoSQL Landschaft www.arangodb.org (c) f.celler@triagens.de Mittwoch, 26. Juni 13
  • 30. • in den letzten Jahren sind viele neue, nicht- relationale Datenbanken entstanden • diese lösen einige der genannten Probleme (Skalierung, Schemas, dynamische Daten, impedance mismatch) • teilweise durch weniger Zusicherungen und Garantien (a.k.a. Delegation von Aufgaben an die Applikation) www.arangodb.org (c) f.celler@triagens.de NoSQL Datenbanken Mittwoch, 26. Juni 13
  • 31. (c) 451 Research 31 Mittwoch, 26. Juni 13
  • 32. www.arangodb.org (c) f.celler@triagens.de 32 Analytic Processing DBsTransaction Processing DBs Managing the evolving state of an IT system Map/Reduce Graphs Extensibility Key/Value Column- Stores Complex Queries Structured Data Massively Distributed Documents Mittwoch, 26. Juni 13
  • 33. JavaScript in der Datenbank www.arangodb.org (c) f.celler@triagens.de Mittwoch, 26. Juni 13
  • 34. JavaScript Everywhere • im Browser • Application-Layer (Node.JS) • Datenbank www.arangodb.org (c) f.celler@triagens.de Mittwoch, 26. Juni 13
  • 35. JavaScript in a Database • MVC im Browser und/oder NODE.JS • Script-Sprache in der Datenbank • Transaktionen als Functionen • Graph-Traversal • no-backend, just API www.arangodb.org (c) f.celler@triagens.de Mittwoch, 26. Juni 13
  • 36. db._create("accounts"); db.accounts.save({ _key: "john", amount: 423 }); db.accounts.save({ _key: "fred", amount: 197 }); db._executeTransaction({ collections: { write: "accounts" }, params: { user1: "fred", user2: "john", amount: 10 }, action: function (params) { var db = require("internal").db; var account1 = db.accounts.document(params['user1']); var account2 = db.accounts.document(params['user2']); var amount = params['amount']; if (account1.amount < amount) { throw "account of user '" + user1 + "' does not have enough money!"; } db.accounts.update(account1, { amount : account1.amount - amount }); db.accounts.update(account2, { amount : account2.amount + amount }); /* will commit the transaction and return the value true */ return true; } }); www.arangodb.org (c) f.celler@triagens.de Transactions Mittwoch, 26. Juni 13
  • 37. db._executeTransaction({ collections: { write: "accounts" }, params: { user1: "fred", user2: "john", amount: 10 }, action: function (params) { var db = require("internal").db; var account1 = db.accounts.document(params['user1']); var account2 = db.accounts.document(params['user2']); var amount = params['amount']; if (account1.amount < amount) { throw "account of user '" + user1 + "' does not have enough money!"; } db.accounts.update(account1, { amount : account1.amount - amount }); db.accounts.update(account2, { amount : account2.amount + amount }); www.arangodb.org (c) f.celler@triagens.de Transactions Mittwoch, 26. Juni 13
  • 38. function traverse (graph, start, depth, maxlen) { var config = { datasource: traversal.collectionDatasourceFactory(graph._edges), strategy: Traverser.BREADTH_FIRST, expander: traversal.anyExpander, filter: traversal.maxDepthFilter, maxDepth: depth, uniqueness: { edges: Traverser.UNIQUE_GLOBAL, vertices: Traverser.UNIQUE_NONE }, visitor: coauthorVisitor(maxlen) }; var traverser = new Traverser(config); var result = { positions: {}, vertices: [], links: [], minYear: 0, maxYear: 0 }; var first = graph._vertices.firstExample({ name: start }); if (first !== null) { traverser.traverse(result, first); } return { start: start, depth: depth, minYear: result.minYear, maxYear: result.maxYear, vertices: result.vertices, links: result.links }; } www.arangodb.org (c) f.celler@triagens.de Graph Traversal Mittwoch, 26. Juni 13
  • 39. function traverse (graph, start, depth, maxlen) { var config = { datasource: traversal.collectionDatasourceFactory(graph._edges), strategy: Traverser.BREADTH_FIRST, expander: traversal.anyExpander, filter: traversal.maxDepthFilter, maxDepth: depth, uniqueness: { edges: Traverser.UNIQUE_GLOBAL, vertices: Traverser.UNIQUE_NONE }, visitor: coauthorVisitor(maxlen) }; www.arangodb.org (c) f.celler@triagens.de Graph Traversal Mittwoch, 26. Juni 13
  • 41. To Be Continued • Fork me on github • Google Group:ArangoDB • Twitter: @fceller & @arangodb • www.arangodb.org www.arangodb.org (c) f.celler@triagens.de Stay in Touch: Mittwoch, 26. Juni 13