Neo4j 2.0: Eine Graphdatenbank für alle
Von Michael Hunger
()
Über dieses E-Book
zwischen Elementen. Bisher war es nicht so einfach, die interessanten, vernetzten Domänen verlustlos in einer Datenbank zu
speichern und effizient abzufragen. Neo4j, besonders die neue Version 2.0, erlaubt es, komplexe Datenmodelle direkt zu modellieren
und herausfordernde Anwendungsfälle performant umzusetzen. In diesem Buch gibt Michael Hunger, langjähriger Mitarbeiter von Neo
Technology, an praktischen Beispielen einen Überblick zur Anwendung der quelloffenen Graphdatenbank.
Mehr von Michael Hunger lesen
Ähnlich wie Neo4j 2.0
Titel in dieser Serie (20)
Abofallen im Netz: Wie Sie teure Klicks vermeiden Bewertung: 0 von 5 Sternen0 BewertungenNeo4j 2.0: Eine Graphdatenbank für alle Bewertung: 0 von 5 Sternen0 BewertungenZertifizierung für Softwarearchitekten: Ihr Weg zur iSAQB-CPSA-F-Prüfung Bewertung: 0 von 5 Sternen0 BewertungenAgile Softwareentwicklung: Ein Leitfaden für Manager Bewertung: 0 von 5 Sternen0 BewertungenJavaScript für Java-Entwickler Bewertung: 0 von 5 Sternen0 BewertungenSQL-Abfragen optimieren: Was Entwickler über Performance wissen müssen Bewertung: 0 von 5 Sternen0 BewertungenJavaScript und TypeScript für C#-Entwickler Bewertung: 0 von 5 Sternen0 BewertungenCloud Computing: Rechtliche Grundlagen Bewertung: 0 von 5 Sternen0 BewertungenSecurity im E-Commerce: Absicherung von Shopsystemen wie Magento, Shopware und OXID Bewertung: 0 von 5 Sternen0 BewertungenCSS3: Die Referenz für Webentwickler Bewertung: 0 von 5 Sternen0 BewertungenJavaScript für Java-Entwickler Bewertung: 0 von 5 Sternen0 BewertungenIhr Recht als Blogger: Juristische Tipps für Blogs, Podcasts und Co. Bewertung: 0 von 5 Sternen0 BewertungenIhr Recht bei Onlineauktionen. Juristische Tipps für eBay und Co. Bewertung: 0 von 5 Sternen0 BewertungenVorsicht Suchmaschine: Rechtliche Tipps für Google und Co. Bewertung: 0 von 5 Sternen0 BewertungenDynamic Proxies: Effizient programmieren Bewertung: 0 von 5 Sternen0 BewertungenJavaScript für Java-Entwickler Bewertung: 0 von 5 Sternen0 BewertungenCrime Scene Internet: Ein Streifzug durch das Computer- und Internetstrafrecht Bewertung: 0 von 5 Sternen0 BewertungenSQL Server: Performanceprobleme analysieren und beheben Bewertung: 0 von 5 Sternen0 BewertungenZertifizierung für Softwarearchitekten: Ihr Weg zur iSAQB-CPSA-F-Prüfung Bewertung: 0 von 5 Sternen0 BewertungenIhr Recht als Programmierer: Juristische Tipps für Angestellte, Selbstständige und Freelancer Bewertung: 0 von 5 Sternen0 Bewertungen
Ähnliche E-Books
Relationale Datenmodellierung: Eine Modellierungshilfe für DB-Designer Bewertung: 0 von 5 Sternen0 BewertungenStructr: Quelloffenes Daten-CMS auf Neo4j-Basis Bewertung: 0 von 5 Sternen0 BewertungenOpenLaszlo: schnell + kompakt Bewertung: 0 von 5 Sternen0 BewertungenDatenbanken: Grundlagen und Entwurf Bewertung: 0 von 5 Sternen0 BewertungenNoSQL-Überblick - Neo4j, Apache Cassandra und HBase: Neo4j, Apache Cassandra und HBase Bewertung: 0 von 5 Sternen0 BewertungenNoSQL-Überblick - Elasticsearch und Redis Bewertung: 0 von 5 Sternen0 BewertungenNoSQL-Überblick: Couchbase, Riak, MongoDB Bewertung: 0 von 5 Sternen0 BewertungenSoftwarearchitektur für Dummies Bewertung: 0 von 5 Sternen0 BewertungenBigData mit JavaScript visualisieren: D3.js für die Darstellung großer Datenmengen einsetzen Bewertung: 0 von 5 Sternen0 BewertungenBig Data: Executive Briefing Bewertung: 0 von 5 Sternen0 BewertungenRelationale Datenbanken: Grundlagen, Modellierung, Speicherung, Alternativen Bewertung: 0 von 5 Sternen0 BewertungenCouchDB mit PHP Bewertung: 0 von 5 Sternen0 BewertungenBig Data, Fast Data Bewertung: 0 von 5 Sternen0 BewertungenBusiness Intelligence mit Power BI: ETL Prozesse, Datenmodellierung und Dashboarding für fortgeschrittene User Bewertung: 0 von 5 Sternen0 BewertungenWeb-Applikationen entwickeln mit NoSQL: Das Buch für Datenbank-Einsteiger und Profis! Bewertung: 0 von 5 Sternen0 BewertungenEine Reise durch die Welt von NoSQL Bewertung: 0 von 5 Sternen0 BewertungenSemantic Web: schnell + kompakt Bewertung: 0 von 5 Sternen0 BewertungenVisuelle Analysen mit Project-Cards: Ein Arbeitsbuch für visuelle Analysen in IT-Projekten Bewertung: 0 von 5 Sternen0 BewertungenSQL-Abfragen optimieren: Was Entwickler über Performance wissen müssen Bewertung: 0 von 5 Sternen0 BewertungenGfSE SE-Handbuch: Die Klammer in der technischen Entwicklung Bewertung: 0 von 5 Sternen0 BewertungenSharePoint Kompendium - Bd. 9: Agilität Bewertung: 0 von 5 Sternen0 BewertungenServerless Computing in der AWS Cloud Bewertung: 0 von 5 Sternen0 BewertungenBig Data: Datenverarbeitung basierend auf MOM und SQL Bewertung: 0 von 5 Sternen0 BewertungenDSL mit Xtext/Xtend. 4GL-Entwicklung produktiver gestalten Bewertung: 0 von 5 Sternen0 BewertungenNoSQL Einführung: CouchDB, MongoDB und Regis Bewertung: 0 von 5 Sternen0 BewertungenSharePoint Kompendium - Bd. 15 Bewertung: 0 von 5 Sternen0 BewertungenSoftwarestabilität in der Industrie Bewertung: 0 von 5 Sternen0 BewertungenR – kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenSQL Server: Performanceprobleme analysieren und beheben Bewertung: 0 von 5 Sternen0 BewertungenErste Schritte: Eigene IoT-Lösungen mit dem ESP32: Mikrocontroller, Internet und PC Bewertung: 0 von 5 Sternen0 Bewertungen
Rezensionen für Neo4j 2.0
0 Bewertungen0 Rezensionen
Buchvorschau
Neo4j 2.0 - Michael Hunger
geschützt.
1 Einführung: Die Welt ist ein Graph
Wir sind umgeben von einem Netz aus Informationen
Von all den Informationen, die tagtäglich verarbeitet werden, ist ein beträchtlicher Anteil nicht wegen ihres Umfangs interessant, sondern wegen der inhärenten Verknüpfungen, die darin enthalten sind. Denn diese machen den eigentlichen Wert solcher Daten aus.
Verknüpfungen reichen von historischen Ereignissen, die zu Orten, Personen und anderen Ereignissen in Beziehung stehen (und selbst in der heutigen Politik ihre Auswirkungen zeigen), bis hin zu Genstrukturen, die unter konkreten Umwelteinflüssen auf Proteinnetzwerke abgebildet werden.
In der IT-Branche sind es Netzwerke, Computer, Anwendungen und Nutzer, die weitreichende Netze bilden, in denen Informationen ausgetauscht und verarbeitet werden. Und nicht zuletzt stellen soziale Netzwerke (ja, neben den virtuellen gibt es auch noch reale) aus Familien, Kollegen, Freunden, Nachbarn bis hin zu ganzen Kommunen einen wichtigen Aspekt unseres Lebens dar.
Jeder Teil unseres Lebens wird von zahlreichen Verbindungen zwischen Informationen, Dingen, Personen, Ereignissen oder Orten bestimmt. Große Internetfirmen versuchen natürlich, sich diese Informationen zunutze zu machen. Beispiele für großangelegte Projekte in dem Zusammenhang sind der Google Knowledge Graph¹ oder Facebook Graph Search².
Abbildung 1.1: Die Welt ist ein Graph
Vernetzte Informationen und Datenbanken
Wenn diese vernetzten Informationen in Datenbanken abgespeichert werden sollen, müssen wir uns Gedanken darüber machen, wie wir mit den Verbindungen umgehen. Normalerweise werden sie ignoriert, denormalisiert oder zusammengefasst, um in das Datenmodell der Datenbank zu passen und auch Abfragen schnell genug zu machen. Was dabei jedoch verloren geht, ist die Informationsfülle, die in anderen Datenbanken und Datenmodellen erhalten geblieben wäre. Genau in dieser Situation spielen Graphdatenbanken und das Graphdatenmodell ihre Stärken aus. Stark vernetzte Daten fallen in einer relationalen Datenbank sofort durch die schiere Menge an JOIN-Tabellen und JOIN-Klauseln in Abfragen auf (und durch die daraus resultierende schlechtere Abfragegeschwindigkeit).
Abbildung 1.2: Relationale JOIN-Tabelle
Graphdatenmodell
Die mathematische Theorie zu Graphen ist viel älter als man denkt. Leonard Euler begründete sie, als er einen Weg über die sieben Brücken des damaligen Königsbergs finden wollte, ohne eine doppelt überqueren zu müssen.³ Die Mathematik hat sich seitdem sehr ausführlich mit Graphtheorie und Graphalgorithmen befasst. Diese sollen aber nicht der Gegenstand dieses Buchs sein. Hier soll stattdessen praktisches Wissen für den pragmatischen und effektiven Umgang mit vernetzten Daten vermittelt werden.
Graphdatenbanken
Die Kombination aus Management von Graphstrukturen (und damit von vernetzten Daten) und Datenbankeneigenschaften wie Transaktionalität und ACID ist eine neuere Erscheinung. Graphdatenbanken, die dies leisten, sind Teil der NoSQL-Bewegung, die zumeist nicht relationale Datenbanken umfasst. Diese Datenbanken sind größtenteils quelloffen, entwicklerorientiert und mit einem Datenmodell versehen, das bestimmte Anwendungsfälle besonders gut unterstützt.
Graphdatenbanken sind dafür prädestiniert, relevante Informationsnetzwerke transaktional zu speichern und besonders schnell und effizient abzufragen. Das Datenmodell besteht aus Knoten, die mittels gerichteter, getypter Verbindungen miteinander verknüpft sind. Beide können beliebige Mengen von Attribut-Wert-Paaren (Properties) enthalten. Daher wird dieses Datenmodell auch als „Property-Graph" bezeichnet (Abbildung 1.3).
Jeder hat definitiv schon einmal mit Graphen gearbeitet. Sei es bei der Modellierung für eine relationale Datenbank (ER-Diagramm), beim Skizzieren von Domänenaspekten auf einem Whiteboard/Tafel (Symbole und Linien) oder einfach während der kreativen Sammlung von Informationen (Mindmaps). Graphen sind aufgrund der Einfachheit des Datenmodells und einer besonders leichten Visualisierung gut verständlich und leicht zu handhaben.
Abbildung 1.3: Property-Graph
Aber was ist nun so besonders an Graphdatenbanken? Dieses Kapitel geht näher auf dieses Thema anhand von Neo4j, einer Open-Source-Graphdatenbank ein. Sie ist nativ und in Java implementiert. Nativ bedeutet, dass Knoten und Beziehungen direkt in den internen Datenbankstrukturen als Records in den Datenbankdateien repräsentiert sind. Neo4j nutzt keine andere Datenbank als Persistenzmechanismus, sondern baut auf einer eigenen Infrastruktur auf, die speziell dafür entwickelt wurde, vernetzte Daten effizient zu speichern.
Wie schafft es eine Graphdatenbank, die hochperformante Navigation im Graphen zu realisieren? Das ist ganz einfach: mit einem Trick. Statt bei jeder Abfrage rechen- und speicherintensiv Entitäten immer wieder zu korrelieren, werden die Verbindungen beim Einfügen in die Datenbank als persistente Strukturen abgelegt. So wird zwar beim Speichern ein Zusatzaufwand in Kauf genommen, aber beim viel häufigeren Abfragen der Informationen können die direkt gespeicherten Verknüpfungsinformationen zur schnellen Navigation in konstanter Zeit genutzt werden.
Neo4j repräsentiert Knoten und Beziehungen in seinem Java-API als Java-Objekte (Node, Relationship) und im HTTP-API als JSON-Objekte. In der eigens für Graphen entwickelten Abfragesprache Cypher hingegen wird „ASCII-Art" verwendet.
Neo4js Abfragesprache Cypher
Was? ASCII-Art? Wie soll das denn funktionieren? Man denke einfach an Kreise und Pfeile auf einer Tafel oder einem Whiteboard, die man zum Diskutieren von Modellen schnell aufzeichnen kann. Das klappt, solange die Datenmengen, die es zu visualisieren gilt, klein genug oder nur konzeptionell sind, richtig gut. Bei größeren Graphen kann es schnell passieren, dass man den Wald vor Bäumen (oder Subgraphen) nicht mehr sehen kann. Aber wir wissen eigentlich, wonach wir suchen. Wir sind an