sones graph database in the cloud

2.185 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

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

Keine Downloads
Aufrufe
Aufrufe insgesamt
2.185
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
56
Aktionen
Geteilt
0
Downloads
22
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

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

×