sones graph database in the cloud

27
Confidential sones GmbH| 11/30/2010 1 Daniel Kirstenpfad / sones CTO / Founder www.sones.com - @sones GraphDB in der Wolke

Upload: daniel-kirstenpfad

Post on 12-May-2015

1.928 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 1

Daniel Kirstenpfad / sonesCTO / Founderwww.sones.com - @sones

GraphDB in der Wolke

Page 2: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 1

In den letzten 35 Jahren waren Informationen strukturiert und in Tabellenform in

geschlossenen Datenbanken -Silos eingesperrt.

2

Page 3: sones graph database in the cloud

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

Page 4: sones graph database in the cloud

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

? ?

Page 5: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 15

BobID = 2

Alter = 32

AliceID = 1

Alter = 21

Vertex

Edge

Freunde

seit = 2007/05/20bis = 2010/11/04

Edge-

Properties Vertex-

Properties

Property Graph

Page 6: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 16

ID 1TYPE PersonREVISION 20101104…

Name AliceAlter 21

PartnerFeinde

Lieblingsfarbe Rot, Grün

Adresse.Straße Eugen-Richter-StraßeAdresse.Stadt Erfurt

BobID = 2

Alter = 32

MalloryID = 3

Alter = 33

Direkte

Verknüpfung

ohne externen

Index

Edge-Properties

Property Graph

Page 7: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 1

7

ID ID 1rdf:type TYPE Personsones:revId REVISION 20101104…

foaf:name Name Alicefoaf:age Alter 21

sones:person Partners:set<person> Feinde

List<string> Lieblingsfarbe Rot, Grün

gn:street Adresse.Straße Eugen-Richter…gn:town Adresse.Stadt Erfurt

BobID = 2

Alter = 32

MalloryID = 3

Alter = 33

Oscar

• Eindeutige Identifikationsmöglichkeit• Benannte Verknüpfungen• Eng Angelehnt an RDF Molecules

Property Graph

Page 8: sones graph database in the cloud

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

Page 9: sones graph database in the cloud

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

Page 10: sones graph database in the cloud

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

Page 11: sones graph database in the cloud

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

Page 12: sones graph database in the cloud

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 Programmierkon zepte und

Webtechnologien� Empfehlungssysteme und Datenerforschung von potenti ell

interessanten verknüpften Informationen

12

persönlich sozial Gegenstände

Page 13: sones graph database in the cloud

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

Page 14: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 1

Azure Cloud Deployment

14

DEMO

Page 15: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 1

sones Architekturübersicht

15

GraphDSREST, WebShell, C# API

GraphDBGQL, Graph Traversals, Indices

GraphFS

Objekt Management, Objekt (De-)Serialisierung

Host File System / Microsoft Azure

Page 16: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 1

sones Architekturübersicht

16

Speichermedium

Lokales DateisystemNetzspeicher / Cloud Storage

(Windows Azure)In-Memory

GraphFS

Objektmanagement Objekt (De-)Serialisierung

GraphDB

Anfragesprache Typmanagement Knotenmanagement Operative LogikIndex (Dictionary,

B+Tree)

GraphDS

REST WebShell WebDAV C# API Java API

Page 17: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 1

Skalierung

17

User

GraphDS 1

GraphDS 2

GraphDB 2

GraphDB 1

GraphFS 2

GraphFS 1

Page 18: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 1

sones Property-Hypergraph

18

Person Freund BobID = 2

Alter = 23seit = 2009/09/21

Person Freund CarolID = 3

Alter = 20seit = 2010/04/11

SET<Person> Freunde

SetMaxNumber = 12

AliceID = 1

Alter = 21

Hyperedge-Properties

Hyperedge

Edge

Virtual -Edge

Page 19: sones graph database in the cloud

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 v on Edges– GetMinWeight– SetMaxNumber– …

19

Page 20: sones graph database in the cloud

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)

Page 21: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 1

sones Graph Query Language

21

CREATE VERTEX PersonADD 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‘)

Page 22: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 1

Graph Query Language

22

DEMO

Page 23: sones graph database in the cloud

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);

Page 24: sones graph database in the cloud

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();

Page 25: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 1

sones C# API

25

var _Freunde = new GraphAttribute(„Freunde“, Type:„foa f:knows“);

var _Bob = _GraphDB.TypeManager.ActivateVertex (_Person, new VertexUUID(2));

_Alice.Link(_Freunde, _Bob);_Bob.Link(_Freunde, _Alice);

Page 26: sones graph database in the cloud

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

}

Page 27: sones graph database in the cloud

Confidential sones GmbH| 11/30/2010 127

Alexander OellingFounder / Business [email protected]: Alexander_Oelling

Daniel KirstenpfadFounder / [email protected]: Daniel_Kirstenpfad

sones GmbHEugen -Richter-Strasse 4499085 Erfurt

+49-361-3026250

Kontakte knüpfen