© Excellent backgrounds/Shutterstock.com
Quelloffenes Daten-CMS auf Neo4j-Basis - Teil 1: Grundlagen

Structr bringt Struktur in den Graphen


Das Interesse an Graphdatenbanken wie Neo4j steigt. Doch ist der Einstieg in die Materie oft schwierig, stehen einem doch manchmal Ansichten und Gewohnheiten aus jahrzehntelangem Umgang mit relationalen Datenbanken, einstmals De-facto-Standard, im Weg. Dass man die wunderbare Welt der Graphen auch ohne Graphentheorie im Lebenslauf erschließen kann, zeigt das neuartige Daten-CMS Structr, das sich dem Thema von einer ganz anderen Seite nähert und die Erstellung graphbasierter Anwendungen ermöglicht – sogar ohne Programmierkenntnisse.

Nicht erst seitdem NoSQL-Datenbanken in zahlreichen Variationen das Ökosystem der Datenbanken bevölkern und mit ihrer Vielfalt die bis dahin recht eintönige Systemlandschaft wohltuend bereichern, erfreuen sich Graphdatenbanken wachsender Beliebtheit. Als eine der ersten Graphdatenbanken begeistert Neo4j schon seit 2007 die damals noch kleine Graphszene. Die Version 1.0 erschien 2010, zu einer Zeit, in der manche andere Datenbank noch nicht einmal konzipiert war.

Ausgereift: Die Graphdatenbank Neo4j

Entsprechend ausgereift und inzwischen durchaus weit verbreitet ist Neo4j heute in einer kontinuierlich weiterentwickelten Version 2.1 verfügbar, und das demnächst erscheinende Release 2.2 verspricht interessante neue Funktionen und vor allem weitere Performanceverbesserungen, u. a. durch die Umstellung auf einen neuen Query Planner im Kern.

Grund für die rasante Entwicklung von Graphdatenbanken ist neben der wichtigen Eigenschaft, dass die Abfragegeschwindigkeit in Graphdatenbanken nicht durch Join- oder Map/Reduce-Operationen limitiert ist, vor allem auch die Tatsache, dass das Graphmodell sehr anschaulich ist. Die Datenmodellierung, der grundlegende Prozess der Abbildung eines Ausschnitts der realen Welt auf ein davon abstrahiertes Modell, der der Softwareentwicklung vorausgeht bzw. zumindest vorausgehen sollte, beginnt meistens mit einer Whiteboard-Zeichnung bestehend aus Kreisen und Pfeilen: dem ersten Graph des Projekts (Abb. 1).

morgner_1.tif_fmt1.jpgAbb. 1: Datenmodell auf Whiteboard

Die Übertragung in eine Graphdatenbank ist dann eine vergleichsweise leichte Übung, denn diese erfolgt in der Regel 1:1, indem die Kreise als Knoten (engl. Node oder Vertex) und die Pfeile als Kanten (Relationship oder Edge) direkt in der Datenbank angelegt werden. Die sonst üblicherweise notwendige Abbildung auf Tabellen, das objekt-relationale Mapping, fällt weg. Konsequenterweise sind für die technische Umsetzung auch keine ORM-Bibliotheken notwendig, die diesen mitunter komplexen Prozess zwar erleichtern, aber dennoch zusätzliche Komplexität in jedes Projekt bringen. Die Diskrepanz zwischen dem Objektmodell, das sich im Übrigen auch im Klassenmodell objektorientierter Sprachen wiederfindet, und dem tabellarischen Persistenzmodell, im Englischen auch „Impedance Mismatch“ genannt [1], gilt es zu vermeiden – mit einer Graph­datenbank ein erreichbares Ziel.

Leichter Einstieg auch dank Visualisierung

Der erste Schritt vom Datenmodell auf dem Whiteboard bis zur ersten, mit Beispieldaten gefüllten Datenbank ist recht einfach. Ausgefeilte Werkzeuge wie der Neo4j-Browser (Abb. 2) erleichtern das Anlegen und Bearbeiten von Datensätzen, und die direkte Visualisierung der Daten hilft besonders am Anfang enorm, schnell zu guten Ergebnissen zu kommen.

morgner_2.tif_fmt1.jpgAbb. 2: Neo4j-Browser

Der Weg zu einer nutzbaren mobilen oder Webanwendung mit einer ansehnlichen Oberfläche, Mehrbenutzerfähigkeit mit Login und Sicherheitskonzept, Unterstützung von Datumsfeldern, Zeitzonen etc. sowie interaktiven Elementen ist jedoch überhaupt nicht trivial. Am Anfang steht, wie sonst auch, die Auswahl des Datenbanktreibers für die präferierte Programmiersprache, oft verbunden mit und gefolgt von der Frage nach einem Framework, das einem viel eintönige Entwicklerarbeit abnimmt. Die meisten heute verfügbaren, ausgereiften Frameworks, die man in Projekten über die Zeit kennengelernt und möglicherweise sogar liebgewonnen hat, sind ausschließlich für relationale Datenbanken konzipiert und lassen sich daher nicht mit Graphdatenbanken einsetzen. Bei Neo4j kommt die Fragestellung hinzu, ob man den Server im Standalone-Modus betreibt und die Anwendung über die REST-Schnittstelle und Remote Cypher kommunizieren lässt, oder die Datenbank in seine (JVM-)Anwendung einbettet.

Für manche Anwender und Entwickler ist die Hürde zwischen einer Beispielgraphdatenbank und dem ersten funktionalen Prototyp einer realen Anwendung heute oft noch zu hoch, insbesondere, wenn Zeit und Budget bei der Evaluierung oder Pilotierung zu Projektbeginn stark begrenzt sind oder man sich nur in seiner Freizeit damit beschäftigen kann.

Entwicklungszeit zur realen Anwendung verkürzen

Über diese Hürde hinweghelfen kann Structr. Das quelloffene, auf Neo4j aufsetzende System besitzt Eigenschaften, die es zum einen als Werkzeug für die schnelle Anwendungsentwicklung (Rapid Application Development) prädestinieren; zum anderen trägt es bewusst den Untertitel „Daten-CMS“, um zum Ausdruck zu bringen, dass CMS-Kenntnisse und ein Grundverständnis für Datenbanken ausreichen sollten, um funktionierende Anwendungen zu erstellen. Um dies zu ermöglichen, ...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang