IT-Jobs, die dich glücklich machen

Graphendatenbanken -- Stärken und Schwächen anhand von Neo4j

Graphendatenbanken fristen im Vergleich zu relationalen und dokument-orientierten Datenbanken (noch) ein Nischendasein. Unser Gastautor Stefan Armbruster bringt auf den Punkt, wozu Graphendatenbanken nützlich sind und was das Projekt Neo4j im Besonderen ausmacht.

Was sind Graphdatenbanken, wie z.B. Neo4j?

Graphdatenbanken können überall dort ihre Stärken ausspielen, wo relationale Datenbanken aufgrund von Komplexität oder Performance an ihre Grenzen kommen. Komplexität bedeutet hier, dass man es in der relationalen Welt immer mit zwei unterschiedlichen Modellen zu tun hat, dem logischen Modell (also dem fachlichen) und dem physischen Modell (also den Tabellenstrukturen). Bei Graphdatenbanken ist das fachliche Modell und das Persistenzmodell identisch. Dadurch werden die Daten so strukturiert, wie es die Fachdomäne vorgibt.

Hinsichtlich Performance kennt man das Phänomen, dass Joins in relationalen Datenbanken mit wachsender Datenmenge langsamer werden. Intern werden sie typischerweise als B-Trees abgebildet, die mit O(log(n)) skalieren. Native Graphdatenbanken - wie Neo4j - dagegen speichern die Pendants zu Joins, also die Kanten, direkt als “Bürger erster Klasse” ab. Dadurch hängt eine Traversion durch den Datenbestand nur von der jeweils lokalen Struktur ab und ist nicht mehr abhängig von der Gesamt-Datenmenge, d.h. es ist eine O(1) Operation.



Das perfekte Einsatzgebiet...

Aus technischer Sicht: Immer wenn relationale Datenbanken zu schmerzen beginnen (s.o.), man es mit halb-strukturierten Daten zu tun hat oder man in Document/KeyValue/Column-Stores zu viel mit MapReduce zu tun hat.

Aus fachlicher Sicht: Aus sehr vielen Kundenprojekten sehen wir als typische Anwendungsfälle:

  • Echtzeit-Empfehlungen
  • Fraud-Detection
  • Knowledge-Management / Graph-Based Search
  • Masterdatamanagement
  • Logistik
  • Soziale Netze

Dafür lieber nicht…

Neo4j ist nicht dafür gebaut, mit einer großen Menge BLOB Daten umzugehen. Wenig Vorteil hat man auch in Fällen, in denen globale Aggregationen das typische Abfragemuster darstellen. Das können zwar Graphdatenbanken auch, aber nicht signifikant schneller als andere Technologien.



Wie und wann ist das Projekt Neo4j entstanden?

Neo4j hat seine Wurzeln noch vor der Jahrtausendwende. Die Anforderungen eines CMS Projektes konnten “klassisch” nicht gelöst werden. Daher haben unsere Gründer eine Bibliothek für Java geschrieben, mit der Daten als Knoten und Kanten abgelegt werden konnten. Über die Jahre entwickelte sich daraus eine vollwertige Datenbank.

Bis etwa 2007/2008 war es ein sehr kleines Startup in Malmö/Schweden. Vor etwa 10 Jahren kamen dann die ersten VCs an Bord und das Unternehmen ist seitdem auf nun knapp 250 Mitarbeiter weltweit gewachsen und hat insgesamt über 80 Mio. USD an Risikokapital erhalten.



Neo4J Inc. als Arbeitgeber

Für das weitere Wachstum suchen wir neue Kollegen in verschiedenen Richtungen. Sowohl Sales, Entwicklung als auch Field Engineering. Generell wird im Bereich Entwicklung vor allem für Malmö und London gesucht, während Sales und Field Engineering naturgemäß nahe beim Kunden sein soll.

Was Neo4j von anderen Startups unterscheidet ist die Firmenkultur. Man merkt die schwedische Seele deutlich. Das bedeutet, dass man z.B. bewusst ein langsameres, dafür aber nachhaltigeres Wachstum anstrebt. Entscheidungen werden im “good consensus” getroffen.

Als großartig empfinde ich die gegenseitige Hilfsbereitschaft. Ein “diese Aufgabe ist nicht mein Job” habe ich bisher von niemandem gehört. Oder um einen Kollegen zu zitieren:

asshole-free company


Über den Autor Stefan Armbruster


Stefan Armbruster / Neo4j
Stefan Armbruster -- Field Engineer bei Neo4j

Ich bin nun seit über 7 Jahren als Field Engineer bei Neo4j und begleite die Kunden von frühen Phasen mit technischer Vertriebsunterstützung über Evaluierungen und Implementierung bis hin zum “go live” und Support über den ganzen Lebenszyklus der Neo4j Projekte. Meist teilt sich das in viele kurze Engagements auf, die jeweils ein paar Tage dauern. Das bedeutet, dass ich nahezu im Wochenrhythmus mit anderen Leuten in anderen Projekten zu tun habe. Das bringt natürlich einiges an Reiserei mit sich, was ich (meistens) nicht ungern tue.

In meiner Freizeit bin ich seit vielen Jahren in der freiwilligen Feuerwehr tätig. Zum Ausspannen lese oder fotografiere ich gerne. Und leider viel zu selten auf dem Rennrad unterwegs.



Wo und wie kann man Dich bei Fragen kontaktieren?



Für Hinweise, Feedback oder Fragen kontaktiere uns bitte via Twitter@Jobpushy, unserem Slack Workspace oder über unsere sonstigen Kontaktangaben.