Graphen  auf LinuxGraphDB  + Mono  +   Linux Daniel Kirstenpfadsones GmbHSchillerstrasse 504109 Leipzig
ÜberblickWas ist ein Graph?GraphDB von sonesdas Mono ProjektAnwendungsfälleDemo2
Was ist ein Graph?Knoten + Kanten  ungerichteter GraphBeispiel: StrassenkarteAlle Knoten haben den gleichen „Typen“Alle Kanten „bedeuten“ die gleiche Art von BeziehungAlle Beziehungen sind symetrisch3Knoten 1Knoten 2Knoten 3Knoten 4
Was ist ein Graph?Gerichtete Kanten ergeben einen gerichteten GraphenBeispiele: Twitter, href-Beziehungen im WebAlle Knoten haben den gleichen „Typen“Alle Kanten „bedeuten“ die gleiche Art von BeziehungAlle Beziehungen sind asymetrisch4Knoten 1Knoten 2ist Freund vonist Freund vonKnoten 3Knoten 4ist Freund von
„Single Relational Structures“Solange man innerhalb eines Graphen immer nur einen Bedeutung für alle Kanten hat spricht man von„Single Relational Structures“5Knoten 1Knoten 2ist Freund vonist Freund vonKnoten 3Knoten 4ist Freund von
Property Graph und OntologienKnoten und Kanten des Property Graphen liegt eine Objekt-Ontologie zugrundeProperty GraphKnoten und Kanten haben key/value Properties (Attribute)6Name = StringGewicht = IntegerAlter = IntegerName = StringDatum = DateTimeSender = SenderTypebefreundetS01E01Name = Homer SimpsonAuftrittName=S01E01Datum=01.01.1991Sender=ZDFAlter=40Gewicht=131
Warum GraphDB?Man kann eine „etwas steht in einer Beziehung mit etwas“ in fast jeder Datenbank modellieren714XML<graphml> <graph>   <node id=1 />   <node id=2 />   <node id=3 />   <node id=4 />   <edge source=1 target=4 />   <edge source=1 target=2 />   <edge source=2 target=3 />  </graph></graphml>23JSON{  1 : { nach : [4,2] } 2 : { nach : [3] }}SQL
Warum GraphDB?Man kann eine „etwas steht in einer Beziehung mit etwas“ in fast jeder Datenbank modellierenProbleme: „Teure“ JOINs (was passiert bei Milliarden von Verbindungen?)Index Lookups um herauszufinden welche Knoten verbunden sind81423
GraphDB von sonesSeit 30.06.2010 OpenSource unter AGPLv3http://github.com/sones/sonesSeit dieser Woche in Version 2.0 verfügbarperformante modulare GraphDBProperty Graph + minimale Ontologiefrei definierbare Attribute an Objekten, Vererbung von Attributen (~OOP)Offene Schnittstellen zur Plug-In EntwicklungSQL ähnliche, einfache Anfragesprache „GQL“REST Schnittstelle (XML, JSON)leistungsfähige API mit Languagebindings für C#, Java, Javascript, PHPPlatformunabhängig dank des Mono Projects9
das Mono ProjektOpen Source Implementierung der CommonLanguage Runtime (CLR) von .NETBinärkompatibel mit Microsoft.NETOpen Source Implementierung des größten Teils der .NET Klassenbibliothek.NET 1.1, 2.0, 3.5, 4.0PlatformunabhängigLinux, Windows, Mac OSX, BSD, Solaris,...Unterstützung weiterer Programmiersprachen wie z.B. F# (Funktionale Programmierung)http://www.mono-project.com/http://github.com/mono10
GraphDB auf MonoGraphDB stellt hohe Anforderungen an MonoGarbageCollector muss performant und stabil funktionierenViele parallel laufende Prozesse (Parallel Framework, Lock Free Data Structures,...)11
Monospace Conference 23. – 25. Juli 2011Boston, USAhttp://monospace.us12
Beispiel: „Wortschatz Leipzig“Relationale Datenbank vs. GraphDBÜber 26 Mio. Rows in 4 Tabellen sind reine Relationendaten13
Beispiel: „Wortschatz Leipzig“14MySQL QuerySELECT w.word AS wort, k.sigAS sig FROM co_sk, words w WHERE k.w1_id=(SELECT w_id FROM words w WHERE word = “Laptop”) AND k.w2_id=w.w_idORDER BY k.sigDESC LIMIT 10;
Beispiel: „Wortschatz Leipzig“15MySQL QuerySELECT w.word AS wort, k.sigAS sig FROM co_sk, words w WHERE k.w1_id=(SELECT w_id FROM words w WHERE word = “Laptop”) AND k.w2_id=w.w_idORDER BY k.sigDESC LIMIT 10;GQL QueryFROM Word SELECT Cooccurrences.TOP(10) WHERE Content = ‘Laptop’;
Demos16DEMOSocial Network
Vielen Dank!17Daniel KirstenpfadGründer / CTOTel.: +49 (0)361/ 3026 250info@sones.desones GmbH HQSchillerstrasse 504109 LeipzigGermanyWeb: www.sones.comMail: info@sones.deTel.: +49 (0)341 39 29 68 0Fax: +49 (0)361/ 2445 008sones GmbH R&DEugen-Richter-Straße 4499085 ErfurtGermanyWeb: www.sones.comMail: info@sones.deTel.: +49 (0)361/ 3026 250Fax: +49 (0)361/ 2445 00817

sones GraphDB + Mono + Linux

  • 1.
    Graphen aufLinuxGraphDB + Mono + Linux Daniel Kirstenpfadsones GmbHSchillerstrasse 504109 Leipzig
  • 2.
    ÜberblickWas ist einGraph?GraphDB von sonesdas Mono ProjektAnwendungsfälleDemo2
  • 3.
    Was ist einGraph?Knoten + Kanten  ungerichteter GraphBeispiel: StrassenkarteAlle Knoten haben den gleichen „Typen“Alle Kanten „bedeuten“ die gleiche Art von BeziehungAlle Beziehungen sind symetrisch3Knoten 1Knoten 2Knoten 3Knoten 4
  • 4.
    Was ist einGraph?Gerichtete Kanten ergeben einen gerichteten GraphenBeispiele: Twitter, href-Beziehungen im WebAlle Knoten haben den gleichen „Typen“Alle Kanten „bedeuten“ die gleiche Art von BeziehungAlle Beziehungen sind asymetrisch4Knoten 1Knoten 2ist Freund vonist Freund vonKnoten 3Knoten 4ist Freund von
  • 5.
    „Single Relational Structures“Solangeman innerhalb eines Graphen immer nur einen Bedeutung für alle Kanten hat spricht man von„Single Relational Structures“5Knoten 1Knoten 2ist Freund vonist Freund vonKnoten 3Knoten 4ist Freund von
  • 6.
    Property Graph undOntologienKnoten und Kanten des Property Graphen liegt eine Objekt-Ontologie zugrundeProperty GraphKnoten und Kanten haben key/value Properties (Attribute)6Name = StringGewicht = IntegerAlter = IntegerName = StringDatum = DateTimeSender = SenderTypebefreundetS01E01Name = Homer SimpsonAuftrittName=S01E01Datum=01.01.1991Sender=ZDFAlter=40Gewicht=131
  • 7.
    Warum GraphDB?Man kanneine „etwas steht in einer Beziehung mit etwas“ in fast jeder Datenbank modellieren714XML<graphml> <graph> <node id=1 /> <node id=2 /> <node id=3 /> <node id=4 /> <edge source=1 target=4 /> <edge source=1 target=2 /> <edge source=2 target=3 /> </graph></graphml>23JSON{ 1 : { nach : [4,2] } 2 : { nach : [3] }}SQL
  • 8.
    Warum GraphDB?Man kanneine „etwas steht in einer Beziehung mit etwas“ in fast jeder Datenbank modellierenProbleme: „Teure“ JOINs (was passiert bei Milliarden von Verbindungen?)Index Lookups um herauszufinden welche Knoten verbunden sind81423
  • 9.
    GraphDB von sonesSeit30.06.2010 OpenSource unter AGPLv3http://github.com/sones/sonesSeit dieser Woche in Version 2.0 verfügbarperformante modulare GraphDBProperty Graph + minimale Ontologiefrei definierbare Attribute an Objekten, Vererbung von Attributen (~OOP)Offene Schnittstellen zur Plug-In EntwicklungSQL ähnliche, einfache Anfragesprache „GQL“REST Schnittstelle (XML, JSON)leistungsfähige API mit Languagebindings für C#, Java, Javascript, PHPPlatformunabhängig dank des Mono Projects9
  • 10.
    das Mono ProjektOpenSource Implementierung der CommonLanguage Runtime (CLR) von .NETBinärkompatibel mit Microsoft.NETOpen Source Implementierung des größten Teils der .NET Klassenbibliothek.NET 1.1, 2.0, 3.5, 4.0PlatformunabhängigLinux, Windows, Mac OSX, BSD, Solaris,...Unterstützung weiterer Programmiersprachen wie z.B. F# (Funktionale Programmierung)http://www.mono-project.com/http://github.com/mono10
  • 11.
    GraphDB auf MonoGraphDBstellt hohe Anforderungen an MonoGarbageCollector muss performant und stabil funktionierenViele parallel laufende Prozesse (Parallel Framework, Lock Free Data Structures,...)11
  • 12.
    Monospace Conference 23.– 25. Juli 2011Boston, USAhttp://monospace.us12
  • 13.
    Beispiel: „Wortschatz Leipzig“RelationaleDatenbank vs. GraphDBÜber 26 Mio. Rows in 4 Tabellen sind reine Relationendaten13
  • 14.
    Beispiel: „Wortschatz Leipzig“14MySQLQuerySELECT w.word AS wort, k.sigAS sig FROM co_sk, words w WHERE k.w1_id=(SELECT w_id FROM words w WHERE word = “Laptop”) AND k.w2_id=w.w_idORDER BY k.sigDESC LIMIT 10;
  • 15.
    Beispiel: „Wortschatz Leipzig“15MySQLQuerySELECT w.word AS wort, k.sigAS sig FROM co_sk, words w WHERE k.w1_id=(SELECT w_id FROM words w WHERE word = “Laptop”) AND k.w2_id=w.w_idORDER BY k.sigDESC LIMIT 10;GQL QueryFROM Word SELECT Cooccurrences.TOP(10) WHERE Content = ‘Laptop’;
  • 16.
  • 17.
    Vielen Dank!17Daniel KirstenpfadGründer/ CTOTel.: +49 (0)361/ 3026 250info@sones.desones GmbH HQSchillerstrasse 504109 LeipzigGermanyWeb: www.sones.comMail: info@sones.deTel.: +49 (0)341 39 29 68 0Fax: +49 (0)361/ 2445 008sones GmbH R&DEugen-Richter-Straße 4499085 ErfurtGermanyWeb: www.sones.comMail: info@sones.deTel.: +49 (0)361/ 3026 250Fax: +49 (0)361/ 2445 00817