sones graph database in the cloud

Download sones graph database in the cloud

Post on 12-May-2015

1.904 views

Category:

Technology

4 download

Embed Size (px)

TRANSCRIPT

  • 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, Komplexitt) fr hochverknpfte Daten. 3 == Graph Daten 4. Confidential sones GmbH| 11/30/2010 1 Applikationen knnen 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, Grn Adresse.Strae Eugen-Richter-Strae Adresse.Stadt Erfurt Bob ID = 2 Alter = 32 Mallory ID = 3 Alter = 33 Direkte Verknpfung 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 Feinde List Lieblingsfarbe Rot, Grn gn:street Adresse.Strae Eugen-Richter gn:town Adresse.Stadt Erfurt Bob ID = 2 Alter = 32 Mallory ID = 3 Alter = 33 Oscar Eindeutige Identifikationsmglichkeit Benannte Verknpfungen 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) Atomizitt Statusfrei Idempotenz Parallel Reprsentation muss mit Links umgehen knnen z.B. XML+XLINK, ATOM, Reprsentation 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, Binrdaten keine Attribut Mengen LIST, SET, SET keine einfache Mglichkeit fr versionierte Daten 9 10. Confidential sones GmbH| 11/30/2010 1 Anti-Patterns Relationen ber foreign-key-constraints kein explizites Konzept fr 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 hherer Abstraktionsgrad besseres Verstndnis des Domnenmodells Konsistenzkriterien und Indices einfache Attribute bis zu komplexen Graphenstrukturen Verknpfte Informationen traversieren krzeste Pfade finden semantische Partitionierung von Daten Gute Integration in state-of-the-art Programmierkonzepte und Webtechnologien Empfehlungssysteme und Datenerforschung von potentiell interessanten verknpften Informationen 12 persnlich sozial Gegenstnde 13. Confidential sones GmbH| 11/30/2010 1 sones GraphDB URL http://www.sones.com Lizenz AGPLv3 und proprietr kommerziell Sprache C# 4.0 / .NET 4.0 Ziele Management von verknpften Daten Concurrency MVCC Replikation Peer 2 Peer Persistenz proprietres Dateisystem Cloud Microsoft Windows Azure 13 14. Confidential sones GmbH| 11/30/2010 1 Azure Cloud Deployment 14 DEMO 15. Confidential sones GmbH| 11/30/2010 1 sones Architekturbersicht 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 Architekturbersicht 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. Confidential sones GmbH| 11/30/2010 1 Skalierung 17 User GraphDS 1 GraphDS 2 GraphDB 2 GraphDB 1 GraphFS 2 GraphFS 1 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 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 knnen 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 fr Ad-Hoc queries ermglicht benutzerfreundliche Abfragen Funktionen und Aggregate sind typsicher und knnen 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 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. Confidential sones GmbH| 11/30/2010 1 Graph Query Language 22 DEMO 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. 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. 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. Confidential sones GmbH| 11/30/2010 1 sones C# API 26 Public T TraverseVertex ( IVertex myStartVertex, TraversalOperation TraversalOperation = TraversalOperation.BreathFirst, Func myFollowThisEdge = null, Func myMatchEvaluator = null, Action myMatchAction = null, Func myStopEvaluator = null, Func, T> myWhenFinished = null) { // Traverse the graph } 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 knpfen