Alle Highlights auf einen Blick!

Neo4j 3.5 ist da: Performance-Verbesserungen und Treiber-Updates

Michael Simons

© Shutterstock / wanpatsorn

Letzten Donnerstag erschien nach rund sechs Monaten Entwicklungszeit die Version 3.5 der populären Graph-Datenbank Neo4j. Das Update bringt unter anderem Performance-Verbesserungen, Treiberaktualisierungen und verschlüsselte Cluster Discovery.
 

Neo4j speichert nativ verbundene Daten als Graph ab. Das Kernmodell der Datenbank sind nicht Relationalen oder Dokumente. Der Graph besteht dabei aus Knoten (Nodes), Beziehungen der Knoten untereinander (Relationships), sowie Attributen (Properties), die sowohl auf Knoten und Beziehungen gespeichert werden können. Mit Cypher steht eine deklarative Abfragesprache für Graphen bereit.

Highlights des Releases

Highlights von Neo4j 3.5 sind erhebliche Performance-Verbesserungen durch native Indizes und die Möglichkeit, Transaktionen off-heap zu verwalten. Große Transaktionen profitieren vom potentiell größeren Speicherbereich off-heap und reduzieren nicht den Einfluss des Garbage Collectors.

Native Indizes bauen zudem nicht mehr auf Lucene auf und können für alle numerischen sowie textuellen Datentypen sowie boolesche, spatiale und temporale Attribute genutzt werden. Damit wird besonders Schreibleistung gesteigert (bis zu 5x schneller).

Indizes werden für den Zugriff auf Propertys genutzt und beschleunigen Abfragen (Existenz, Gleichheit, Bereiche und mehr). Gleiches gilt mit wenigen Einschränkungen auch für die ORDER BY-Cypher-Klausel. Auch sie nutzt die Reihenfolge aus dem Index und vermeidet wenn möglich eine Sortierung im Speicher.

Volltext-Indizes

Auf Basis von Apache Lucene stellt Neo4j mehrere Methoden bereit, um verschiedene Attribute pro Knotentyp in einem Volltextindex zu speichern. Dadurch entsteht die Möglichkeit, textintensive Anwendungen kombiniert mit Graph-Technologie zu bauen. Über Prozeduren kann man mit der vollen Lucene-Syntax auf den Index zugreifen. Der Volltext-Index kann auch asynchron geschrieben werden und beeinflusst dann nicht die Performanz des transaktionalen Commits.

Neue Funktionen der Enterprise-Edition

Alle bisher genannten Funktionen stehen sowohl in der unter GPL v3 lizenzierten Community-Edition als auch in der kommerziellen Enterprise-Variante zur Verfügung.

Verschlüsselte Cluster Discovery

Die Enterprise-Edition wird üblicherweise in einem Cluster-Szenario betrieben, oft auch in einem Multi-Data-Center-Setup. Die Kommunikation der Mitglieder eines Clusters untereinander war auch schon in 3.4 verschlüsselt. Mit Neo4j 3.5 wird diese Verschlüsselung auf die Service Discovery ausgeweitet, sodass zu keinem Zeitpunkt Daten unverschlüsselt transportiert werden. Verifizierung von Hostnamen und Subject Alternative Name (SAN) sowie aktive Verhinderung von Brute-Force-Attacken härten Installationen zusätzlich ab.

Treiber und Ökosystem

Wenige Tage vor dem Server wurde die neue Generation von Neo4j-Treibern veröffentlicht. Das Release 1.7 beinhaltet Treiber für Java, .Net, Python, JavaScript und Go. Alle Treiber greifen das Thema Server Name Indication (SNI) sowie Hostname-Verifizierung auf. Transaktionen können nun von allen Treibern detailliert konfiguriert werden. Neben einstellbaren Timeouts ist besondere die Möglichkeit interessant, individuellen Transaktionen individuelle Metadaten mit auf den Weg zu geben, die serverseitig ausgewertet werden können.

Und Spring?

Das Spring-Data-Neo4j-Team arbeitet zur Zeit an der Unterstützung nativer Neo4j-Typen. Neo4j unterstützt zahlreiche zeitbezogene Typen (Datum, Zeit, Datum mit Zeit sowie Zeiträume), die im nächsten Spring Data Release auf Java-8+-Typen abgebildet werden. Fast noch spannender sind die räumlichen Datentypen (Spatial-Types). Räumliche Datenverarbeitung, Features auf Knoten und Kanten im Raum ist ein inhärent „graphisches“ Thema und ermöglicht spannende Auswertungen:

  • Welche Masten in einem Stromnetz sind Engpässe und müssen besonders ertüchtigt werden?
  • An welchen Stellen in einem Verkehrsnetz treten besonders hohe Durchsätze auf?
  • Gewichtetes Routing durch Korridore mittels Graph-Algorithmen
  • Ermittlung unterschiedlicher, logischer Stromkreisverläufe auf einem physikalischen Netz

Abfragen dieser Art sind bereits heute problemlos in Neo4j zu realisieren. In naher Zukunft können die dazu notwendigen Daten komfortabel mit Spring-basierten Anwendungen erfasst werden.

Weitere Informationen zu Neo4j gibt es auf der Homepage der Plattform und auf GitHub.

Geschrieben von
Michael Simons
Michael Simons
Michael ist Vater, Ehemann, Radfahrer und Java Champion. Er ist Autor des ersten deutschen Buchs über Spring Boot 2 und Spring 5. Michael arbeitet im Spring Data Team bei Neo4j. Als Mitgründer und Leiter der EuregJUG in Aachen ist Michael seit langem in der Community-Arbeit engagiert.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: