Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
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...
Nächste SlideShare
Wird geladen in …5
×

sones graph database in the cloud

2.232 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

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

×