Usability in (geistes-)wissenschaftlichen Onlinedatenbanken
sones graph database in the cloud
1. Confidential sones GmbH| 11/30/2010 1
Daniel Kirstenpfad / sones
CTO / Founder
www.sones.com - @sones
GraphDB in der Wolke
2. Confidential sones GmbH| 11/30/2010 1
In den letzten 35 Jahren waren Informationen
strukturiert und in Tabellenform in
geschlossenen Datenbanken-Silos eingesperrt.
2
3. Confidential sones GmbH| 11/30/2010 1
Relationale Datenmodelle und damit SQL sind
ein limitierender Faktor (Performance,
Komplexität) für hochverknüpfte Daten.
3
== Graph Daten
4. Confidential sones GmbH| 11/30/2010 1
Applikationen können
auf unbekannte
relationale Daten
nicht zugreifen, sie
nicht verstehen und
verarbeiten.
4
Datenbank 1 Datenbank 2
Applikation 1 Applikation 2
? ?
5. Confidential sones GmbH| 11/30/2010 15
Bob
ID = 2
Alter = 32
Alice
ID = 1
Alter = 21
Vertex
Edge
Freunde
seit = 2007/05/20
bis = 2010/11/04
Edge-
Properties Vertex-
Properties
Property Graph
6. Confidential sones GmbH| 11/30/2010 16
ID 1
TYPE Person
REVISION 20101104…
Name Alice
Alter 21
Partner
Feinde
Lieblingsfarbe Rot, Grün
Adresse.Straße Eugen-Richter-Straße
Adresse.Stadt Erfurt
Bob
ID = 2
Alter = 32
Mallory
ID = 3
Alter = 33
Direkte
Verknüpfung
ohne externen
Index
Edge-Properties
Property Graph
7. Confidential sones GmbH| 11/30/2010 1
7
ID ID 1
rdf:type TYPE Person
sones:revId REVISION 20101104…
foaf:name Name Alice
foaf:age Alter 21
sones:person Partner
s:set<person> Feinde
List<string> Lieblingsfarbe Rot, Grün
gn:street Adresse.Straße Eugen-Richter…
gn:town Adresse.Stadt Erfurt
Bob
ID = 2
Alter = 32
Mallory
ID = 3
Alter = 33
Oscar
• Eindeutige Identifikationsmöglichkeit
• Benannte Verknüpfungen
• Eng Angelehnt an RDF Molecules
Property Graph
8. Confidential sones GmbH| 11/30/2010 1
8
REST
Hypermedia
GraphDB
• Kanten und Knoten sind Resourcen
• Zugriff über
http://test.com/vertices/[$id]
• CRUD Operationen (GET, POST, PUT…)
• Atomizität
• Statusfrei
• Idempotenz
• Parallel
• Repräsentation muss mit Links
umgehen können
• z.B. XML+XLINK, ATOM,…
• Repräsentation sollte
selbstbeschreibend sein
Property Graph
9. Confidential sones GmbH| 11/30/2010 1
von relationalen Schemata..
Relationale Schemata sind unflexibel
– teure ALTER TABLE Operationen
– Entity-Attribute-Value Modell RDF
– keine semi-/unstrukturierten Daten
• XML, JSON, … Hierarchien, Graphen, Binärdaten
– keine Attribut Mengen
• LIST<String>, SET<Integer>, SET<Person>
– keine einfache Möglichkeit für versionierte Daten
9
10. Confidential sones GmbH| 11/30/2010 1
Anti-Patterns
Relationen über foreign-key-constraints
– kein explizites Konzept für Relationen
– keine Indexfreien Zugriffe (Adjazenz)
Relationale Daten über JOINs anzufragen = komplex
– nur Speichern war noch nie die Herausforderung
keine rekursiven JOINs
– Ineffiziente Query Abarbeitung
10
11. Confidential sones GmbH| 11/30/2010 1
Ist SQL „cloud-ready“ ?
Keine explizite Skalierung oder Partitionierung
innerhalb des relationalen Datenmodells
Keine JOINs zwischen verschiedenen Datenbanken
SQL spielt nicht gut mit state-of-the-art Web
Technologien zusammen
– HTTP/REST, Hypermedia, Semantic Web
11
12. Confidential sones GmbH| 11/30/2010 1
Vorteile einer Graphendatenbank
explizites Graph Datenmodell
– höherer Abstraktionsgrad
– besseres Verständnis des Domänenmodells
Konsistenzkriterien und Indices
– einfache Attribute bis zu komplexen Graphenstrukturen
Verknüpfte Informationen traversieren
kürzeste Pfade finden
semantische Partitionierung von Daten
Gute Integration in state-of-the-art Programmierkonzepte und
Webtechnologien
Empfehlungssysteme und Datenerforschung von potentiell
interessanten verknüpften Informationen
12
persönlich sozial Gegenstände
13. Confidential sones GmbH| 11/30/2010 1
sones GraphDB
URL http://www.sones.com
Lizenz AGPLv3 und proprietär kommerziell
Sprache C# 4.0 / .NET 4.0
Ziele Management von verknüpften Daten
Concurrency MVCC
Replikation Peer 2 Peer
Persistenz proprietäres Dateisystem
Cloud Microsoft Windows Azure
13
15. Confidential sones GmbH| 11/30/2010 1
sones Architekturübersicht
15
GraphDS
REST, WebShell, C# API
GraphDB
GQL, Graph Traversals, Indices
GraphFS
Objekt Management, Objekt (De-)Serialisierung
Host File System / Microsoft Azure
16. Confidential sones GmbH| 11/30/2010 1
sones Architekturübersicht
16
Speichermedium
Lokales Dateisystem
Netzspeicher / Cloud Storage
(Windows Azure)
In-Memory
GraphFS
Objektmanagement Objekt (De-)Serialisierung
GraphDB
Anfragesprache Typmanagement Knotenmanagement Operative Logik
Index (Dictionary,
B+Tree)
GraphDS
REST WebShell WebDAV C# API Java API
18. Confidential sones GmbH| 11/30/2010 1
sones Property-Hypergraph
18
Person Freund Bob
ID = 2
Alter = 23
seit = 2009/09/21
Person Freund Carol
ID = 3
Alter = 20
seit = 2010/04/11
SET<Person> Freunde
SetMaxNumber = 12
Alice
ID = 1
Alter = 21
Hyperedge-Properties
Hyperedge
Edge
Virtual -Edge
19. Confidential sones GmbH| 11/30/2010 1
sones Property-Hypergraph
Properties können auch Code (als Daten) enthalten
– wie Stored Procedures
– C#: Func<…>, ExpressionTrees
Hyperedge erlaubt Berechnungen entlang einer Reihe von
Edges
– GetMinWeight
– SetMaxNumber
– …
19
20. Confidential sones GmbH| 11/30/2010 1
sones Graph Query Language
20
FROM Person SELECT Person.Freunde.Freunde.Name
„SQL for Graphen“
intuitive DSL für Ad-Hoc queries
ermöglicht benutzerfreundliche Abfragen
Funktionen und Aggregate sind typsicher und
können durch eigene Plug-Ins erweitert werden
– SELECT COUNT(Person.Freunde)
– SELECT Person.Freunde.Random(2)
– SELECT Person.Freunde.Name.Substring(2,5)
21. Confidential sones GmbH| 11/30/2010 1
sones Graph Query Language
21
CREATE VERTEX Person
ADD ATTRIBUTES (String Name, SET<Person> Freunde)
INDICES (Name)
MANDATORY (Name)
INSERT INTO Person VALUES (Name = "Alice")
INSERT INTO Person VALUES (Name = "Bob")
LINK Person(Name = ‘Alice') VIA Freunde TO Person(Name = ‘Bob')
LINK Person(Name = ‘Bob') VIA Freunde TO Person(Name = ‘Alice‘)