Softwareentwicklung und Architektur / 27.07.2020 / Sergej Epp

Teil 2: Web-App-Entwicklung mit Neo4J

Während eines ihrer Kunden-Engagements haben unsere Kollegen Sergej Epp und Felix Hau ein „On-the-fly“-Projekt realisiert: Nämlich eine App, die die Stakeholder über geplante Absenzen der Teammitglieder informiert.

Für das Projekt kamen das Web-Framework Groovy on Grails sowie die Graphdatenbank Neo4J zum Einsatz. In dieser dreiteiligen Blogserie beschreiben sie, welche Vorteile die beiden Technologien haben und wie sie sich im Praxis-Einsatz bewähren. Teil 2 stellt Neo4J genauer vor.



Vorteile und Besonderheiten von Graphdatenbanken

Nach wie vor sind relationale Datenbanken weit verbreitet. Je nach Applikation sollte aber die Frage gestellt werden, welche Aufgaben die Datenbank erfüllen muss. In Fällen, in welchen weniger die Datenmenge, sondern eher die Beziehungen der Objekte zueinander im Fokus steht, bieten sich die sogenannten Graphdatenbanken an.

Ein gutes Beispiel hierfür ist der Page-Ranking-Algorithmus von Google. Um Seiten zu priorisieren erhalten die „Backlinks“ hohes Gewicht. Je mehr andere Seiten im Internet auf eine Seite verweisen, desto stärker ist ihre Position in der Rangliste. Mittlerweile nutzen viele Unternehmen die Vorteile der Technologie. Die Anwenderliste von Neo4J enthält namhafte Referenzen wie Adobe, ebay, Microsoft und AirBnB.

Während relationale Datenbanken die Daten in Tabellen strukturieren und speichern, nutzen die Graphdatenbanken hierfür Graphen. Diese bestehen aus Datenobjekten sowie den Beziehungen der Objekte untereinander – auch „Knoten“ und „Kanten“ genannt. Hierdurch entfallen aufwändige Joins, wie sie bei den relationalen Datenbanken bekannt sind.

Dies hat nicht zuletzt den Vorteil, dass die Graphdatenbank whiteboard-friendly ist. Das heißt, die fachlichen Anforderungen an die Datenbank lassen sich sehr gut intuitiv an einer Tafel oder einem Blatt Papier aufzeichnen, bevor sie technisch umgesetzt werden. Dies erleichtert das konzeptionelle Herangehen an Probleme mit sehr komplexen Datenrelationen.

Im Vergleich zu relationalen Datenbanken sind Graphdatenbanken zudem schneller in der Abfrage und flexibler in der Handhabung. Das Schema einer Graphdatenbank lässt sich mit weit weniger Aufwand ändern und es ist leicht möglich, Beziehungsdefinitionen hinzuzufügen oder zu modifizieren. Damit ist die Technologie sehr gut für schnell skalierende Applikationsanforderungen geeignet, bei welchen mit der Zeit neue Wege der Abfrage und Datenrelation notwendig werden.



Neo4J im Praxis-Einsatz

Wer diese und weitere Vorteile zum Einsatz bringen will, ist mit Neo4J gut beraten. Die Datenbank ist sowohl in einer quelloffenen als auch kommerziellen Version erhältlich und unter den Graphdatenbank-Systemen derzeit das populärste. Bedienen lässt sich Neo4J mit der eigenen Abfragesprache Cypher. 

Neo4J verfolgt den Ansatz, die Bedienung der Datenbank sowie die Integration des Datenbankmodells in die Applikation einfach oder sogar „intuitiv“ zu gestalten. Dies hat sich in unserem Praxis-Projekt so bestätigt, auf das wir im dritten und letzten Teil dieser Blogserie noch näher eingehen werden. Hervorzuheben ist dabei, dass sich der Ein- beziehungsweise Umstieg in Cypher reibungslos gestaltet und sich sehr leserliche Abfragen damit schreiben lassen.

Im Zusammenspiel mit Web-Frameworks wie Grails erweist sich die Integration als völlig unproblematisch. Und nicht nur, wenn es um Applikationen mit komplexen Datenbeziehungen geht, ist Neo4J einen Blick wert. Nämlich auch wenn die Einfachheit und schnelle Integration im Vordergrund steht, stellt es eine wertvolle Alternative zu den bekannten relationalen Datenbanken dar.

Einblicke

Shaping the future with our clients