Confidential sones GmbH| 11/30/2010 1
Daniel Kirstenpfad / sones
CTO / Founder
www.sones.com - @sones
GraphDB in der Wolke
Confidential sones GmbH| 11/30/2010 1
In den letzten 35 Jahren waren Informationen
strukturiert und in Tabellenform in
ges...
Confidential sones GmbH| 11/30/2010 1
Relationale Datenmodelle und damit SQL sind
ein limitierender Faktor (Performance,
K...
Confidential sones GmbH| 11/30/2010 1
Applikationen können
auf unbekannte
relationale Daten
nicht zugreifen, sie
nicht ver...
Confidential sones GmbH| 11/30/2010 15
Bob
ID = 2
Alter = 32
Alice
ID = 1
Alter = 21
Vertex
Edge
Freunde
seit = 2007/05/20...
Confidential sones GmbH| 11/30/2010 16
ID 1
TYPE Person
REVISION 20101104…
Name Alice
Alter 21
Partner
Feinde
Lieblingsfar...
Confidential sones GmbH| 11/30/2010 1
7
ID ID 1
rdf:type TYPE Person
sones:revId REVISION 20101104…
foaf:name Name Alice
f...
Confidential sones GmbH| 11/30/2010 1
8
REST
Hypermedia
GraphDB
• Kanten und Knoten sind Resourcen
• Zugriff über
http://t...
Confidential sones GmbH| 11/30/2010 1
von relationalen Schemata..
Relationale Schemata sind unflexibel
– teure ALTER TABLE...
Confidential sones GmbH| 11/30/2010 1
Anti-Patterns
Relationen über foreign-key-constraints
– kein explizites Konzept für ...
Confidential sones GmbH| 11/30/2010 1
Ist SQL „cloud-ready“ ?
Keine explizite Skalierung oder Partitionierung
innerhalb de...
Confidential sones GmbH| 11/30/2010 1
Vorteile einer Graphendatenbank
explizites Graph Datenmodell
– höherer Abstraktionsg...
Confidential sones GmbH| 11/30/2010 1
sones GraphDB
URL http://www.sones.com
Lizenz AGPLv3 und proprietär kommerziell
Spra...
Confidential sones GmbH| 11/30/2010 1
Azure Cloud Deployment
14
DEMO
Confidential sones GmbH| 11/30/2010 1
sones Architekturübersicht
15
GraphDS
REST, WebShell, C# API
GraphDB
GQL, Graph Trav...
Confidential sones GmbH| 11/30/2010 1
sones Architekturübersicht
16
Speichermedium
Lokales Dateisystem
Netzspeicher / Clou...
Confidential sones GmbH| 11/30/2010 1
Skalierung
17
User
GraphDS 1
GraphDS 2
GraphDB 2
GraphDB 1
GraphFS 2
GraphFS 1
Confidential sones GmbH| 11/30/2010 1
sones Property-Hypergraph
18
Person Freund Bob
ID = 2
Alter = 23
seit = 2009/09/21
P...
Confidential sones GmbH| 11/30/2010 1
sones Property-Hypergraph
Properties können auch Code (als Daten) enthalten
– wie St...
Confidential sones GmbH| 11/30/2010 1
sones Graph Query Language
20
FROM Person SELECT Person.Freunde.Freunde.Name
„SQL fo...
Confidential sones GmbH| 11/30/2010 1
sones Graph Query Language
21
CREATE VERTEX Person
ADD ATTRIBUTES (String Name, SET<...
Confidential sones GmbH| 11/30/2010 1
Graph Query Language
22
DEMO
Confidential sones GmbH| 11/30/2010 1
sones C# API
23
var _Person = _GraphDB.TypeManager.
CreateVertex(„Person“).
AddStrin...
Confidential sones GmbH| 11/30/2010 1
sones C# API
24
Person _Alice = _GraphDB.TypeManager.ActivateVertex(
_Person, new Ve...
Confidential sones GmbH| 11/30/2010 1
sones C# API
25
var _Freunde = new GraphAttribute(„Freunde“, Type:„foaf:knows“);
var...
Confidential sones GmbH| 11/30/2010 1
sones C# API
26
Public T TraverseVertex<T> (
IVertex myStartVertex,
TraversalOperati...
Confidential sones GmbH| 11/30/2010 127
Alexander Oelling
Founder / Business Dev.
alex@sones.com
Xing: Alexander_Oelling
D...
Upcoming SlideShare
Loading in...5
×

sones graph database in the cloud

1,973

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,973
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
22
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

sones graph database in the cloud

  1. 1. Confidential sones GmbH| 11/30/2010 1 Daniel Kirstenpfad / sones CTO / Founder www.sones.com - @sones GraphDB in der Wolke
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  14. 14. Confidential sones GmbH| 11/30/2010 1 Azure Cloud Deployment 14 DEMO
  15. 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. 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
  17. 17. Confidential sones GmbH| 11/30/2010 1 Skalierung 17 User GraphDS 1 GraphDS 2 GraphDB 2 GraphDB 1 GraphFS 2 GraphFS 1
  18. 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. 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. 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. 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‘)
  22. 22. Confidential sones GmbH| 11/30/2010 1 Graph Query Language 22 DEMO
  23. 23. Confidential sones GmbH| 11/30/2010 1 sones C# API 23 var _Person = _GraphDB.TypeManager. CreateVertex(„Person“). AddString(„Name“, mandatory: true, indexed: true). AddLoop(„Freunde”, hyperEdge: true). execute(); Type _PersonT = _GraphDB.TypeManager. GenerateType(_Person);
  24. 24. Confidential sones GmbH| 11/30/2010 1 sones C# API 24 Person _Alice = _GraphDB.TypeManager.ActivateVertex( _Person, new VertexUUID(1)); _Alice.Name = „Alice“; dynamic _Alice2 = _Alice; _Alice.Alter = 21; _Alice.bdayparty = (Action) (() => { _Alice.Age++; }); _Alice.bdayparty();
  25. 25. Confidential sones GmbH| 11/30/2010 1 sones C# API 25 var _Freunde = new GraphAttribute(„Freunde“, Type:„foaf:knows“); var _Bob = _GraphDB.TypeManager.ActivateVertex( _Person, new VertexUUID(2)); _Alice.Link(_Freunde, _Bob); _Bob.Link(_Freunde, _Alice);
  26. 26. Confidential sones GmbH| 11/30/2010 1 sones C# API 26 Public T TraverseVertex<T> ( IVertex myStartVertex, TraversalOperation TraversalOperation = TraversalOperation.BreathFirst, Func<IVertex, IEdge, Boolean> myFollowThisEdge = null, Func<IVertex, Boolean> myMatchEvaluator = null, Action<IVertex> myMatchAction = null, Func<TraversalState, Boolean> myStopEvaluator = null, Func<IEnumerable<IVertex>, T> myWhenFinished = null) { // Traverse the graph }
  27. 27. Confidential sones GmbH| 11/30/2010 127 Alexander Oelling Founder / Business Dev. alex@sones.com Xing: Alexander_Oelling Daniel Kirstenpfad Founder / CTO daniel@sones.com Xing: Daniel_Kirstenpfad sones GmbH Eugen-Richter-Strasse 44 99085 Erfurt +49-361-3026250 Kontakte knüpfen
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×