Knoten oder Kante
Für Graph DB sind sowohl Properties als auch Kanten Attribute, eine Unterscheidung fällt der Typ: Handelt es sich etwa um einen String oder Integer, ist es eine Property, beim Typ Knoten hingegen eine Kante.
Graph DB bringt eine eigene Abfragesprache namens GQL mit, die sich sichtlich an SQL orientiert. Wie man in relationalen Datenbanken erst eine Tabelle anlegt, muss man in ihr zunächst definieren, wie ein Knoten aussieht beziehungsweise welche Informationen er speichert. Das sieht dann beispielsweise so aus:
CREATE ABSTRACT VERTEX TYPE Person ATTRIBUTES (String Name) MANDATORY (Name)INDICES (Name)
Dieser Befehl teilt Graph DB mit, dass es im Graphen Knoten gibt, die einen »String«
unter der Bezeichnung »Name«
speichern, dessen Angabe auch zwingend erforderlich ist (»MANDATORY«
) und indiziert werden soll (»INDICES«
). Aufgrund des Schlüsselworts »ABSTRACT«
kann man jedoch nicht direkt Personen-Knoten erstellen, sondern muss erst einen oder mehrere weitere Knotentypen von diesem ableiten:
CREATE VERTEX TYPES Freund EXTENDS Person ATTRIBUTES (Integer Alter, SET<Freund> kennt)
Die Graph DB kann folglich Eigenschaften zwischen Knoten vererben. Jetzt darf der Admin passende Freunde erzeugen und miteinander verbinden:
INSERT INTO Freund VALUES (Name = 'Peter', Alter = 52) INSERT INTO Freund VALUES (Name = 'Paula', Alter = 34) LINK Freund (Name = 'Peter') TO Freund(Name = 'Paula') VIA kennt
Auch wer aus einer der unterstützten Programmiersprachen C#, PHP, Java oder Javascript heraus auf die Datenbank zugreifen möchte, muss GQL-Anweisungen absetzen. Das Einfügen eines Knotens sieht unter C# wie folgt aus:
var ergebnis = GraphDSServer.Query(SecToken, \ TransactionID, "INSERT INTO Freund VALUES \ (Name ='Peter', Alter = 52)",SonesGQLConstants.GQL);
C#-Nutzer dürfen außerdem eine Anfrage auch mit speziellen Funktionen zusammenstöpseln, was aber schon bei einfachen Queries schnell zu unübersichtlichem Spaghetticode führt.
Der Datenbankserver stellt eine kleine Webanwendung namens Web Shell bereit, über die der Anwender den Datenbestand direkt per GQL im Browser manipuliert. Dazu muss er nach dem Start der Datenbank nur die URL »http://localhost:9975/WebShell«
ansteuern (Abbildung 5). Die Web Shell liefert ihre Ausgaben im Json- oder XML-Format. Gleiches gilt für den, der per REST zugreift.
Sones Graph DB gibt es in einer kostenlosen Variante, die unter der AGPLv3 steht. Gegenüber der kommerziellen Ausgabe arbeitet sie ausschließlich im Hauptspeicher (In-Memory-Datenbank). Schaltet jemand den Server ab, sind alle gespeicherten Daten futsch. Des Weiteren fehlen der Open-Source-Fassung Transaktionen und Properties an Kanten. Die gibt es erst seit der 2011 erschienenen Version 2.0, die zudem modular aufgebaut ist und sich so um neue Funktionen oder Abfragesprachen erweitern lässt.
Kurz vor Redaktionsschluss musste Sones Insolvenz anmelden. Wie es mit der Firma und der Datenbank weitergeht, war noch unklar. Ein Teil der Nutzergemeinde möchte jedoch zumindest die Open-Source-Variante erhalten und weiterentwickeln.
Info Grid
Das Info-Grid-Projekt werkelt nicht nur an einer einfachen Graphdatenbank, sondern an einem ganzen Framework, mit dem sich vollständige Webanwendungen klöppeln lassen. Das Framework enthält Bausteine zur Nutzerverwaltung, Rechtemanagement und sogar ein Templatesystem, das die Datenbankinhalte aufbereitet und etwa als HTML-Seite oder XML-Dokument ausgibt. Als Programmiersprache dient Java, die Webanwendungen samt Graphdatenbank laufen auf einem Java-EE-Anwendungsserver (Enterprise Edition).
Info Grid soll vor allem Informationen aus unterschiedlichen Quellen zusammenführen. Paradebeispiel ist das Einsammeln mehrerer Newsfeeds, die das Framework aufbereitet und in Form eines Graphen der Webanwendung zur Verfügung stellt. Die eigentlichen Daten bleiben dabei in ihren externen Quellen liegen, Info Grid erstellt für sie nur einen virtuellen Graphen. Für den Anwender bleibt dieser Vorgang unsichtbar – er erfährt nicht, wo die Daten liegen.
Eine Info-Grid-Datenbank kann mit anderen Kolleginnen in einem Netzwerk über das XPRISO-Protokoll [10] kommunizieren. Dieses erlaubt sowohl auf den Datenbestand der anderen Instanzen zuzugreifen als auch eine Peer-to-Peer-Replikation durchzuführen. Die direkt in Info Grid abgelegten Informationen kann die Datenbank entweder im Speicher behalten, als Datei auf die Festplatte packen oder an andere Dienste weiterreichen, etwa an Hadoop [11], Amazon S3 oder sogar eine relationale Datenbank.
Info Grid bezeichnet Knoten als Mesh Objects, zwischen denen Beziehungen (Relationships) existieren. Der damit entstehende Graph ist eine Mesh Base. Wer den Knoten einem Typ zuordnet, stellt sicher, dass der Node nur ganz bestimmte Properties erhält. Was da wie erlaubt ist, bestimmt der Admin in einer XML-Datei, dem so genannten Model. Info Grid gibt ein paar Properties vor, darunter die eindeutige Identifikationsnummer und sogar ein Ablaufdatum, nach dem es den Knoten auf Wunsch wieder löscht.
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 8 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





