These
These
DIPLOMARBEIT
In
Informationssysteme L
KANDIDAT RELATORE:
Nicholas Tonna [Link] [Link] Wilma Penzo
INDEX
1
EINFÜHRUNG…………………………………………………………………….4
KAPITEL 1 DIE GRAPH-DATENBANK……………………………………………….5
1.1 Evolution der Datenbankmodelle im Laufe der Jahre …………………………5
1.2 Die NoSQL-Datenbank…………………………………………………………………7
1.2.1 Kategorien von NoSQL-Datenbanksystemen……………………………………....7
1.3 Was ist ein Graph? …………………………………………………………………..9
1.3.1 Das Property-Graph-Modell……………………………………………………10
1.4 Ich Graph DBMS……………………………………………………………………11
KAPITEL 3 NEO4J………………………………………………………………..28
3.1 Architektur………………………………………………………………………28
3.1.1 Speicherstruktur………………………………………………………...29
3.1.2 Cache………………………………………………………………………31
3.1.3 Transaktionsmodul………………………………………………………..32
3.1.4 Neo4j Hochverfügbarkeit (HA)……………………………………………..33
3.1.5 API…………………………………………………………………………34
3.2 Cypher-Abfragesprache…………………………………………………………..35
3.3 Leistungsvergleich zwischen APIs…………………………………………………37
3.4 Confronto prestazionale tra Neo4j e MySQL……………………………………40
FAZIT……………………………………………………………………..45
2
EINFÜHRUNG
3
Das Unternehmensinformationssystem (UIS) ist die Gesamtheit der technischen Mittel, der Verfahren
UnternehmensDiese Systeme stützen sich heute immer mehr auf die Informationssysteme.
Dank denen es möglich ist, neben der Geschwindigkeit auch die Effizienz zu steigern.
von Informationen, große Mengen von Daten in Datenbanken speichern. Die Datenbanken
Es gibt Archive, in denen die Daten strukturiert gespeichert sind. Die Aufgabe von
Die effiziente Organisation, Abfrage und Manipulation der Datenbank ist einem ... anvertraut.
sistema software chiamatoDBMS(Database Management System).
In der folgenden Thesis werden zwei Arten von DBMS verglichen (die zur Vereinfachung
wir können einfach Datenbanken nennen): iRelationale Datenbanken und iGraph
Datenbank.
Relationale Datenbanken entstanden mit der Einführung des relationalen Modells durch
Teil von Codd[1] im Jahr 1970 und seitdem sind sie die am häufigsten verwendeten Datenbanken. Mit diesem
Das logische Modell hat es tatsächlich ermöglicht, fast die gesamte Gesamtheit der
Anwendungsfälle, die in der realen Welt auftraten. Mit dem Aufkommen des Internets und
Mit dem Aufkommen der sozialen Netzwerke hat sich die Datenverbindung und die Anzahl der
Informationen und Anfragen zu verwalten; dies hat die Grenzen des Modells ans Licht gebracht
relational in handling large amounts of highly connected data or in storing data
nicht strukturiert.
Aus diesem Grund wurde eine neue Kategorie von Datenbanken entwickelt, die als NoSQL (Nicht nur)
SQL), darunter die Graphdatenbanken, die ein flexibleres Modell und eine garantieren können
bessere Skalierbarkeit. Bisher haben sich diese Modelle nicht sehr verbreitet in der Welt.
kommerziell, die weiterhin an den relationalen Modellen festhält, und nur einige große
Unternehmen haben begonnen, in solche Technologien zu investieren (zum Beispiel Google,
database a grafo, quest’ultimo DBMS sarà approfondito nel terzo capitolo della tesi.
KAPITEL 1 DIE GRAFDAtei
4
1.1 Entwicklung der Datenbankmodelle im Laufe der Jahre
5
Die ersten Modelle verwendeten hauptsächlich dateisystembasierte Strukturen und daher
sul modello fisico, in particolare parliamo del modello gerarchico (hierarchical
Datenbankmodell) und des Netzwerkdatenbankmodells.
Eine erste Entwicklung erfolgt mit der Entwicklung der relationalen Datenbank gemäß der
Formulierung von Codd [1], der die Idee hatte, die logische Ebene von derjenigen zu trennen
physisch.
Dieses Modell, das auf der Mengenlehre, der Prädikatenlogik und
strukturiert um das mathematische Konzept der Beziehung, ist es bis heute eines der Modelle
viel häufiger verwendet, da es viel intuitiver und ausdrucksvoller für die Strukturierung von Daten ist,
Infolge des relationalen Modells entwickelt sich auch dank des Einflusses von
dieser letzte verbunden mit dem Einfluss der Graphentheorie, das semantische Modell, das versucht
um den konzeptionellen Level sehr nah am semantischen Bereich zu halten.
In den 80er Jahren wurde das objektorientierte Modell eingeführt, dessen Hauptidee war
die Darstellung der Daten als Sammlungen von Objekten [1].
Neben letzterem erscheinen auch die Graphmodelle, die
versuche, das Anwendungsgebiet in Form eines Graphen darzustellen, indem ich, wie
Wir werden später zahlreiche Vorteile sehen, insbesondere in Bezug auf die Leistung.
Das grafbasierte Modell wurde aufgrund seiner Wirksamkeit im Laufe der Jahre stark weiterentwickelt.
6
Wie wir gesehen haben, trat die relationale Datenbank bereits in den 70er Jahren auf.
und auch aus diesem Grund ist es und war es sehr stark genutzt. Gerade wegen dieser Eigenschaft
Die verlängerte Nutzung wurde sehr entwickelt, aber trotz dessen ist die Datenbank
Relational ist nicht für die Unterstützung der horizontalen Skalierbarkeit heute konzipiert worden.
Mit Skalierbarkeit ist die Fähigkeit einer Datenbank gemeint, zu wachsen oder zu schrumpfen in
Funktion der Bedürfnisse und Verfügbarkeiten und kann zwei Arten sein:
Vertikale Skalierbarkeit
Horizontale Skalierbarkeit
Die vertikale (Scale-up) betrifft die Fähigkeit eines Systems, sich zu verbessern.
Hardwaremerkmale der einzelnen Komponenten, während die horizontale (Scale Out)
kann beispielsweise erreicht werden, indem einem Rechner eine zusätzliche Einheit hinzugefügt wird
Berechnung der gleichen Leistung, die die geleistete Arbeit des Ersten unterstützen und erweitern kann.
so die Potenziale.
NoSQL-Datenbankmanagementsysteme sind Software-Systeme, die es ermöglichen,
Daten speichern und organisieren, ohne auf das relationale Modell zu setzen und
die horizontale Skalierbarkeit ermöglichen (effizienter und weniger kostspielig als die
Vertikale Skalierbarkeit). Der Begriff NoSQL bedeutet "nicht nur SQL". SQL ist der
Sprache, die häufig in relationalen Datenbanken verwendet wird und oft übernommen wird
Darstellung des gesamten relationalen Paradigmas.
Die NoSQL-Datenbanken werden in vier Hauptkategorien unterteilt.
Schlüssel-Wert-Speicher
7
ABBILDUNG 2 Darstellung des Key-Value Stores
Dokumenten-Datenbank
Dokumentenorientierte Datenbanken speichern Daten nicht in Tabellen mit
campi uniformi per ogni record come nei database relazionali, ma ogni record
es wird als ein Dokument gespeichert, das bestimmte Merkmale aufweist.
Dem Dokument kann eine beliebige Anzahl von Feldern mit beliebigen
Länge, diese Felder können auch mehrere Datenstücke enthalten.
Questa caratteristica fa sì che non ci sia uno spreco di spazio, poiché i record
sie sind nicht verpflichtet, einem festen Schema zu folgen und sind daher gezwungen, auszufüllen
Spaltenorientierte Datenbank
Dieses Modell wurde entwickelt, um eine große Menge an Daten zu verarbeiten und
Merke die Datentabellen in Form von Datenspalten statt als
righe di dati. Il “Column-Oriented database” può essere visto come una
Entwicklung des „Key-Value-Stores“, da es im Gegensatz dazu zwei oder
mehr Ebenen der Indizierung. Der äußere Schlüssel (Zeilenschlüssel) wird verwendet für
Graphdatenbank
Die Graphdatenbank ist eine auf der Graphentheorie basierende Datenbank und sehr nützlich.
um mit Leichtigkeit Millionen von Knoten zu durchqueren, die durch Beziehungen miteinander verbunden sind.
8
Diese Datenbanken sind äußerst skalierbar und flexibel und sind heute sehr
vor allem aufgrund der Entwicklung von sozialen Netzwerken, die de facto sind
Grafen mit Millionen von Knoten.
Im Folgenden werden wir dieses letzte Modell näher untersuchen.
Wie die Mathematik eine wichtige Rolle in der Informatik spielt (zum Beispiel viele
Konzepte wie Kryptographie, Automatisierung und auch andere einfachere Konzepte wie
Die mathematische und boolesche Logik verbinden eng die Mathematik und die
Informatik), so ist die Graphentheorie ein weiteres sehr verwendetes Konzept in diesem
Wissenschaft. Viele Datenstrukturen wie die hierarchischen Organisationen, die Diagramme von
Die Knoten im Graphen repräsentieren die Entitäten und die Kanten die Beziehungen zwischen den Knoten.
Formeller gesagt bezeichnet man eine Graphen als ein geordnetes Paar G = (V,E), wobei V die Menge der
nodi und E ist die Menge der Kanten. Eine Kante ist ein Paar (a,b) von Vertices, mit a∈V und
b ∈ V.
Nehmen wir das bekannte soziale Netzwerk Twitter als Beispiel, in Abbildung 3 sehen wir ein
9
FIGUR 3 Ein kleines Graf, das eine Gruppe von Followern mit hinzugefügtem darstellt
die Nachrichten von einer dieser.
Die Knoten enthalten Eigenschaften in Form von Schlüssel-Wert-Paaren, wobei "Schlüssel" ist
Die Identifikationsnummer der Eigenschaft, "Wert" hängt hingegen vom Typ ab.
Datum;
Die Knoten können mit einem oder mehreren "Labels" gekennzeichnet werden. Die Labels geben an, dass
Rolle der Knoten innerhalb der Datenbank (Labeled Property Graph Modell);
Beziehungen haben einen Namen und sind gerichtet, und sie haben immer einen Knoten.
der Ausgangspunkt und ein Zielknoten;
10
Eine wichtige Eigenschaft, die man sich bezüglich der Property Graphs merken sollte, ist jedoch
Bezüglich aller Grafen ist, dass eine Relation immer zwei Knoten verbindet und dass
Die Eliminierung eines Knotens führt zur Eliminierung der damit verbundenen Beziehungen.
Viele Menschen finden das Property Graph Model intuitiv und leicht verständlich, tatsächlich,
sebbene semplice, può essere usato per descrivere la stragrande maggioranza dei casi
d’uso grafici, in modo tale che diano indicazioni utili sui nostri dati.
11
Datenspeicherung
Einige Graph DBMS verwenden nativen Graphspeicher[4], das heißt, sie verfügen über eine
Plattform zur Speicherung von Informationen, die entwickelt und optimiert wurde, um Daten zu speichern
in Form eines Graphen. Verschiedene Graph-DBMS übersetzen und speichern die Informationen in
Modi differenti, ovvero innerhalb einer relationalen Datenbank, einer orientierten Datenbank
den Objekten oder einer anderen Art von Datenspeicher.
Verarbeitungseinheit
Wir können die Graph DBMS in zwei Kategorien unterteilen, wobei die erste aus all denen besteht,
die die indexfreie Nachbarschaft nutzen, native Verarbeitung Engine (leistungsfähiger); die
seconda quelli che non la usano, processing engine non nativo.
Ein Graph erfüllt die indexfreie Nachbarschaft, wenn das Vorhandensein einer Beziehung zwischen zwei Knoten
kann nur überprüft werden, indem man einen der Knoten besucht, und erfordert dagegen keinen Zugang zu einem
äußerer globaler Index. Das bedeutet, dass jedes Element einen Zeiger enthält
direkt zu seinen benachbarten Elementen, was die Suchanfragen über den Index überflüssig macht.
FIGUR 5 Eine Übersicht über die Modelle einiger heute vorhandener Graphdatenbanken
Markt.
12
KAPITEL 2 RELATIONALE VS GRAPH DATENBANK
2.1 Datenmodell
Ein weiteres zentrales Konzept in diesem Modell ist die Normalisierung, die ein ...
13
Das relationale Modell, obwohl es ein mittlerweile standardisiertes und weit verbreitetes Modell ist,
In Strukturen mit hochgradig vernetzten Daten, wie zum Beispiel Netzwerken oder den
Sozial, die Daten müssen unter Verwendung einer hohen Anzahl von Tabellen gespeichert werden.
Das Graphmodell
Un modello a grafo usa nodi e archi per rappresentare e archiviare l'informazione. La
Darstellung der Daten durchGrafibietet eine Alternative zu derrelationales Modell.
Derzeit sind die Hauptreferenzmodelle für die Implementierung von Datenbanken
Grafo sind zwei:
Das Property-Graph-Modell (bereits im vorherigen Kapitel beschrieben)
Das Resource Description Framework ist ein Modell, das vom World Wide Web vorgeschlagen wurde.
14
- Aussage (Ausdruck): ist das Element, das eine Ressource beschreibt
besteht aus einem Subjekt, das die Ressource darstellt, einem Prädikat, das
esprime la Property e da un oggetto chiamato Value che indica il valore della
Eigentum.
Jede Instanz dieses Modells besteht daher aus einer Menge von Tripeln des Typs
Subjekt-Prädikat-Objekt, die eine Struktur in Form eines Graphen bilden, in der die Ressourcen sind
Die beiden Modelle (Property Graph Model und RDF) sind nicht vollständig identisch, auch
da normalerweise der Übergang von einem zum anderen sehr intuitiv ist. Für beide gibt es
spezifische Abfragesprachen, aber nur für RDF gibt es einen Standard
anerkannt inSPARQL[2].
Aus struktureller Sicht sind Graphdatenbanken im Gegensatz zu relationalen Datenbanken
sind viel flexibler: Jeder Knoten und jede Beziehung im Graph hat seine eigenen Eigenschaften
ohne dabei einem starren Schema wie im Fall der relationalen Datenbank zu folgen,
In diesem Schema wird das Problem der Nullwerte nicht auftreten und
Um Platz für diese Werte zu schaffen.
Tabellen, die verschiedene Instanzen enthalten, stehen in Beziehung zueinander; um dies zu tun, nutzen sie
Der Join, der in der SQL-Sprache ein Operator ist, der es ermöglicht, die Tupel zu kombinieren.
die zwei Tabellen durch die Operation der Verbindung (oder Vereinigung) derAlgebra
relational.
Ein Nachteil von Beziehungen in relationalen Datenbanken ist, dass sie haben
semantische Ambiguität, da sie beispielsweise das Gewicht und die Stärke der nicht spezifizieren
15
Beziehungselbst und zudem sind die Join-Operationen sehr aufwendig, insbesondere
all’interno di contesti altamente connessi, come network e social (molto diffusi ai
heutige Tage)
Die Kosten einer Datenbankabfrageoperation steigen signifikant an
seconda del numero di join che vengono eseguiti. Si ponga ad esempio il caso che un
Soziales Netzwerk, strukturiert wie in Abbildung 7, um die Freunde eines Subjekts zu finden.
In der Tabelle "Person" innerhalb der Datenbank registriert. Bezüglich dieses Typs
Für die Abfrage ist eine Join-Operation erforderlich, da die Tabelle "Person"
Sie wird sich mit dieser "PersonFriend" auseinandersetzen müssen, daher würde die Abfrage nicht Ergebnis bringen.
besonders kostspielig oder schwierig, da es nur einen einzigen Join zwischen den Tabellen erfordert,
Die Anzahl der Tupel kann durch die WHERE-Klausel reduziert werden.
Wenn man beispielsweise die Freunde der Freunde eines bestimmten Subjekts finden möchte,
Die Operation würde zwei Joins erfordern, und daher würden die Abfragen syntaktisch und
computationally more complex and would consequently increase the cost of the
Antwort.
Beziehungen in Graphdatenbanken
Wenn es verbundene Daten gibt, die semantische Abhängigkeiten zwischen den Entitäten umfassen, dann der
Das grafbasierte Modell ist viel geeigneter, da die Beziehungen, auf die sie sich beziehen können.
Als assoziierte Eigenschaften behalten sie diese semantischen Abhängigkeiten bei.
16
Im Falle von sozialen Netzwerken, ein einfaches Beispiel für hochgradig verbundene Daten und Netzwerke
In diesem sozialen Netzwerk sind die Verbindungen zwischen den Entitäten nicht einheitlich für das gesamte
Domäne. Der Graph bietet ein reichhaltigeres Bild eines Netzwerk-Kontexts, tatsächlich aus der Abbildung
8 Wir können intuitiv verstehen, wer der Freund von wem ist und wer der Kollege von wem ist (durch)
die Beziehung FREUND_VON oder KOLLEGE_VON) und auch wenn diese Beziehung
wird erwidert.
Dank der Beziehungen ist es außerdem möglich, den Graphen zu "durchqueren", also sich zwischen den
Knoten, die durch Beziehungen verbunden sind. Daten durch diese Überschneidungen abfragen.
es verhindert, dass kostspielige Gruppierungsoperationen auf dem gesamten Datensatz durchgeführt werden.
Relationale Datenbanken zum Abfragen, Einfügen, Ändern und Löschen von Daten im
Datenbank, verwenden den SQL-Standard.
17
SQL ist eine deklarative Sprache, die auf relationaler Algebra basiert. Mit diesem
Sprache ist möglich:
creare e modificare Datenbankschemata(DDL -Datenbeschreibungssprache);
einfügen, ändern und verwalten von gespeicherten Daten (DML -Datenmanipulation
Sprache);
Daten abfragen (DQL -Datenabfragesprache);
Erstellen und Verwalten von Werkzeugen zur Kontrolle und zum Zugang zu Daten (DCL -Datenkontrolle
Sprache).
18
die Daten. Diese weisen einen geringeren Abstraktionsgrad im Vergleich zu den beiden Sprachen auf.
Oben erwähnt, aber eine ausgezeichnete Effizienz.
2.4 Skalierbarkeit
Die Skalierbarkeit ist ein sehr wichtiges Merkmal, das eine Nutzung bestimmt
Effizienz der Datenbank [3] und bis heute ist eines der wichtigsten Anforderungen für
moderne Anwendungen, da sie mit Millionen von Daten umgehen müssen.
Die Skalierbarkeit gibt es in zwei Arten: vertikal und horizontal. Um die erste Art zu erreichen, ist
Es ist notwendig, die Kapazitäten der Maschine zu erhöhen, was Kosten verursacht.
elevato. Aus diesem Grund ist horizontale Skalierbarkeit viel gebräuchlicher, und man kann
Erhalten durch zwei Techniken: Replikation, Sharding.
Replikation bedeutet, dass die Daten auf mehreren Knoten eines Computernetzwerks repliziert sind.
dadurch die Daten robuster machen. Tatsächlich, wenn ein Knoten ausfällt, gehen die verlorenen Daten verloren.
Das bedeutet, dass die Daten nicht auf einem einzelnen Computer gespeichert sein müssen, sondern
verteilte auf mehrere Knoten. Sharding ist eine sehr flexible Technik, bei der die
Knoten können hinzugefügt werden, wenn die Daten wachsen, und entfernt werden, wenn
Die Skalierbarkeit in relationalen Datenbanken stellt ein Problem dar, aufgrund von Operationen der
Tatsächlich ist aufgrund der Fragmentierung der Daten eine große Notwendigkeit gegeben.
Kommunikation zwischen den Knoten, die eine größere Anzahl von Beitritten erfordern wird, und daher ein Kostenaufwand.
größer; das ist der Grund, warum NoSQL-Datenbanken die Operationen nicht unterstützen
di join.
19
Die Skalierung der Daten eines Graphen durch Sharding kann komplizierter sein als
distribuire i dati negli altri database NoSQL anche se comunque è possibile [6].
Dies liegt an der sehr vernetzten Natur von Graphen. Wenn ein Graph verteilt wird,
Im Wesentlichen ist es besser, so weit wie möglich Beziehungen zu vermeiden, die mehrere umfassen.
In der Informatik ist eine Transaktion eine Abfolge von Operationen, die abgeschlossen werden kann oder
Mit einem Erfolg oder einem Misserfolg: Im ersten Fall muss das Ergebnis der Operationen ...
Im zweiten Fall muss der Zustand wieder konsistent gemacht werden.
vor dem Beginn der Transaktion [2].
In relationalen Datenbanken genießen Transaktionen vier Eigenschaften, die als Eigenschaften bezeichnet werden.
ACID:
Atomarität: Die Transaktion ist in ihrer Ausführung unteilbar, sodass sie daher
entweder vollständig oder gar nicht (Ausführungen sind nicht zulässig)
Teilweise);
Konsistenz: Es ist die Fähigkeit einer Transaktion, die Einschränkungen nicht zu verletzen.
Referenzen und Integrität der Datenbank, sodass jeder Client, der darauf zugreift,
Die Datenbank liest die letzten aktualisierten Daten.
Isolation: es ist die Garantie, dass das DBMS die Transaktionen ordnungsgemäß ausführt.
unabhängig und isoliert, sodass sie sich nicht gegenseitig stören, wenn
Die Ausführung dieser ist gleichzeitig.
Haltbarkeit: Die im Datenbank gespeicherten Daten werden auf der Festplatte gespeichert und
nach dem Neustart der Datenbank verfügbar.
Diese Eigenschaften ermöglichen es Transaktionen, korrekte und sichere Operationen auszuführen.
auf der Grundlage von Daten.
Die Konsistenz wird in relationalen Datenbanken durch das zentrale Sperrsystem gewährleistet.
grazie al quale i dati sono bloccati fino a quando non si raggiunge uno stato stabile.
Die neuen NoSQL-Datenbanken, einschließlich einiger Graphdatenbanken, haben sich für eine bessere entschieden.
20
Verfügbarkeit der Daten (Hochverfügbarkeit). Diese Datenbanken folgen einem Paradigma
genannt BASE (Basically Available, Soft-state, Eventually consistent).
Der Unterschied zwischen den beiden Systemen ist durch das CAP-Theorem erklärbar, das vorgeschlagen wurde
Erstmals von Eric Brewer [3] im Jahr 2000 behauptet, dass ein verteiltes System
zur gleichen Zeit nur zwei der folgenden Garantien bereitstellen:
Konsistenz: Sie liegt vor, wenn in einer verteilten Umgebung alle
Server haben die gleichen Daten;
Verfügbarkeit: Sie liegt vor, wenn das System die Garantie bietet, dass
Zugang und Benutzerfreundlichkeit der Daten;
Wenn man sich entscheidet, die Partitionstoleranz zu vernachlässigen, können Operationen durchgeführt werden.
lesen und schreiben, bis alle Knoten online sind und es sicher ist, dass
i dati siano consistenti. Il problema si presenta quando si crea partizione tra i nodi, a
Ursache, warum die Daten die Synchronisierung verlieren. Um die Partition zu vermeiden, ...
sie könnten alle Daten in eine einzige Maschine eingeben, aber das würde führen zu
sicherlich Beschränkungen in der Skalierbarkeit.
Falls man sich entscheidet, auf die Verfügbarkeit zu verzichten, wird das System für die
Änderungsoperationen, wird die Konsistenz gewährleisten, indem die Daten für einen
gewisse Zeit. Das System bleibt nicht verfügbar, bis die Änderung nicht erfolgt ist.
auf alle Knoten verteilt. Dies ist die Idee, die den ACID-Eigenschaften folgt.
Falls stattdessen entschieden wird, die Konsistenz zu bestrafen, dann
die Verfügbarkeit der Daten und die Toleranz der Partitionierung bestimmen, sodass die Knoten
sie bleiben online, auch wenn sie nicht mit anderen kommunizieren können. Die Daten werden jedoch
synchronisiert nur nachdem die Partition gelöst wurde (es handelt sich genau um das Eventual)
Konsistenz
I problemi di inconsistenza di solito risultano più difficili da trattare. D’altro canto, i
Systeme benötigen nicht ständig Konsistenz.
21
Eine Besonderheit von Graphdatenbanken ist, dass, obwohl sie NoSQL-Datenbanken sind, einige
Modelle unterstützen die ACID-Eigenschaften, und das ist der Fall bei Neo4j, wie wir im
nächstes Kapitel.
2.6 Verwaltung der Indizes
Wenn man eine Graphstruktur in einer relationalen Datenbank speichern möchte, ist es
Es ist notwendig, wie folgt vorzugehen:
Erstelle eine ENTITY VERTICES für die Eckpunkte mit den Eigenschaften:
- ID des Scheitels;
- Variablenattribute für die im Knoten enthaltenen Informationen (Name usw.).
Erstellen Sie eine EDGES-Entität für die Kanten mit den Eigenschaften:
- ID des Bogens;
- VERTEX_FROM: ID del vertice di partenza;
- VERTEX_TO: ID des Zielknotens;
- Zusätzliche Informationen über die Beziehung zwischen den Spitzen.
Dieser Ansatz ist jedoch, obwohl er korrekt ist, mit einem schwerwiegenden Problem verbunden:
Mit der Erhöhung der Zeilen (insbesondere in der Tabelle der Spitzen) steigt die Lesegebühr.
aumenta sensibilmente. Il costo per una lettura tramite indice B-Tree infatti è
dell'ordine di O(log(n)), dove n = numero totale di vertici del grafo. Per esaminare gli
M archi in uscita dal vertice di partenza haben wir daher eine Berechnungskosten C von
C=(Mlog(n)) [7].
Grafdatenbanken bieten eine andere Lösung im Vergleich zu relationalen Datenbanken, indem sie die
Die Technik wird als indexfreie Nachbarschaft bezeichnet. Tatsächlich, um eine Lesung zu erreichen...
die beiden Ecken, und somit ohne die Notwendigkeit eines globalen Index [8]. Mit anderen Worten, jedes
22
nodo porta le informazioni sui nodi a cui è relazionato, rendendo indipendente le
Leistungsfähigkeit der globalen Datenbankgrößen und mögliche Graphanalyse
schwer mit globalen Indizes zu verwalten.
2.7 Vergleich zwischen Datenentwürfen
Bei der Gestaltung einer Datenbank können wir drei Phasen unterscheiden:
Die konzeptionelle Gestaltung, deren Ziel es ist, die Daten der Realität darzustellen (oder
Die physikalische Gestaltung, in der das physikalische Schema implementiert wird, das in
Die Praxis besteht in einem logisch optimierten Schema in Bezug auf die Vorhersagen.
der Anwendungsbelastung.
Um die beiden Arten von Datenbanken (relationale und graphbasierte) zu vergleichen, kann man das einfache ...
Beispiel für das Design einer Datenbank zur Verwaltung eines Rechenzentrums, das heißt
ein Datenverarbeitungszentrum, dessen Struktur in Abbildung 9 dargestellt werden kann
[4].
23
FIGUR 9 Beispiel eines Rechenzentrums.
Die nächste Phase ist das konzeptionelle Design, das das Ergebnis der Sammlung übersetzt.
die Anforderungen in einer formalen Beschreibung darzustellen, um typische Mehrdeutigkeiten zu beseitigen
von Sätzen in natürlicher Sprache ein konzeptionelles Schema zu erstellen. Sie wurden
verschiedene konzeptionelle Modelle vorgeschlagen, aber das bekannteste und am häufigsten verwendete ist sicherlich das
Entitäts-Beziehungsdiagramm (E-R).
In Bezug auf das vorherige Beispiel kann das folgende E-R-Diagramm erstellt werden:
24
ABBILDUNG 10 Ein Entity-Relationship-Diagramm für ein Rechenzentrum.
Da es gibt keine DBMS, die direkt auf den Konzepten eines operieren können.
Das E-R-Schema muss in relationale Schemata übersetzt werden, indem man also von einem ...
konzeptionelles Schema in ein logisches Schema. Diese Übersetzung erfolgt nach einfachen
Standardregeln und wird oft automatisch durchgeführt. Im logischen Modell sind die Daten
sind in normalisierten Tabellen strukturiert, um Redundanz zu eliminieren und mit dem
SQL-Sprache.
Die letzte Phase, die der eigentlichen Implementierung vorausgeht, ist die der
physikalische Entwurf, in dem die logischen Schemen in Abhängigkeit von der
Die voraussichtliche Arbeitsbelastung kann beispielsweise manchmal nützlich sein, um zu verbessern
die Effizienz und die Geschwindigkeit der Datenbank, eine Denormalisierung der Daten, Technik die
Es sieht die Duplizierung von Daten vor, um eine bessere Leistung zu erzielen.
25
Mit einem Entity-Relationship-Diagramm verwendet man einen Graphen, um zu ...
eine genaue Darstellung des Bereichs [4].
In Bezug auf das Beispiel ist es möglich, das Graphmodell in Abbildung 11 zu erstellen.
Im Beispiel sieht man, wie die Knoten mit Eigenschaften angereichert wurden und wie die Kanten
geben Sie den Typ der Beziehung an, die zwischen den Knoten besteht (die Beziehungen sind in diesem Fall
Überprüfen, ob es geeignet ist, bestimmte Abfragen auszuführen, und die Fehler beheben oder
eventuelle Ungenauigkeiten. Die nachfolgenden Änderungen der Struktur des Graphen sind
Ermöglicht durch die Flexibilität des Graphmodells.
26
Leistungen
Einer der größten Vorteile, die durch die Graphdatenbank gebracht werden, ist die deutliche Verbesserung
der Leistung im Falle von stark verbundenen Daten, nicht nur im Hinblick auf die Datenbanken
relational, aber auch relativ zu den NoSQL.
Im Vergleich zu relationalen Datenbanken, wo die Leistung der Abfragen abnimmt mit
Mit dem Anstieg der Daten bleiben die Leistungen in Graph-Datenbanken konstant, auch
Mit der Zunahme der Daten, da die Abfragen aufgrund der indexfreien Adjazenz sich beziehen
nur zu einem Teil des Graphen. Dies führt dazu, dass die Zeit nur proportional ist zu
Teil des Graphen zu durchqueren.
Flexibilität
Graphdatenbanken haben im Gegensatz zu relationalen Datenbanken, die ein festes Schema besitzen, keine.
schemalos. Dies ermöglicht ihm, sich an die Entwicklung des Anwendungsbereichs anzupassen
ohne die gesamte Datenbank neu zu gestalten und zu konvertieren. Der Graph ist natürlich
Additiv, daher ist es möglich, neue Knoten, Beziehungen und Teilgraphen zu einem hinzuzufügen.
Struktur, ohne die Funktionen und Abfragen, die für die vorherige Version erstellt wurden, zu stören.
del-Datenbank.
Es gibt jedoch auch nachteilige Aspekte der Graphdatenbank, einer davon ist die
Es ist ein Fakt, dass viele Graphdatenbanken (wie zum Beispiel Neo4j) relativ sind.
„junge“ und haben ein niedrigeres Reifestadium im Vergleich zu relationalen Datenbanken
Mit Reife beziehen wir uns darauf, wie gut das System getestet wurde: Tatsächlich ist, wenn ein System
stato testato ein größeres Mal, bedeutet das, dass es stabiler ist und es wurde
Trovati und korrigiert eine größere Anzahl von Fehlern.
Relational-Datenbanken haben über Jahrzehnte Speicherunterstützung bereitgestellt,
dies hat sie reif und stabil gemacht, außerdem haben sie auch eine Standardsprache.
SQL, das sicherstellt, dass die Unterstützung für eine Implementierung der Datenbank möglich ist
Multiutente, während einige Graphdatenbanken, wie zum Beispiel Neo4j, dies nicht haben.
innerhalb ihrer Struktur einen Mechanismus zur Verwaltung der Sicherheit und der
27
Multi-User-Zugriff (die Zugriffskontrollliste wird nur auf Anwendungsebene verwaltet)
[9].
KAPITEL 3 NEO4J
28
REST (Representational State Transfer) können wir als die Gesamtheit der Methoden definieren
Um Ressourcen (zum Beispiel Seiten) zu erhalten (Get), zu senden (Post) und zu löschen (Delete)
3.1 Architektur
3.1.1 Speicherstruktur
Alle Daten und Informationen des Graphen, die der Server speichert und verwaltet, werden
Gespeichert in einer Reihe von Dateien, die den Namen Store File tragen, welche
werden in einem einzigen Ordner gespeichert, dem Datenbankordner.
Die Daten zu den Knoten in der Neo4j-Datenbank werden in einer Datei namens gespeichert.
[Link] innerhalb der Festplatte. Jedes Element, das in den Store-Dateien gespeichert ist für
29
Die Knoten haben eine feste Speicherdauer, die als Datensatz bezeichnet wird (dies geschieht
in den meisten Datei-Stores von Neo4j).
In der Abbildung sehen wir den Datensatz der Store-Datei für die Knoten, und jeder Datensatz hat einen
Länge von 9 Byte. Das erste Byte stellt ein Flag dar, das uns sagt, ob der Datensatz
obligatorisch oder nicht, um die Daten eines Knotens zu speichern, die folgenden vier Bytes
repräsentieren die ID der ersten Beziehung, die mit dem Knoten verbunden ist, die restlichen vier Bytes.
Die feste Länge ermöglicht eine schnellere Suche der Knoten innerhalb des Dateispeichers.
Zum Beispiel, wenn wir einen Knoten mit ID 100 haben, reicht es aus, bis zu 900 Byte zu scrollen.
innerhalb der Datei und so kann die Datenbank superschnelle Suchen zu einem Kosten
unterlegen
Ein Datensatz fester Größe (wie in Abbildung 12) mit 33 enthält die Beziehungen.
Byte. Jedes Protokoll enthält neben dem Flag die IDs des Start- und Zielknotens, die
Zeiger auf den Beziehungstyp, die Zeiger auf den vorherigen und nächsten Datensatz
30
Beziehung des Ausgangs- und Zielknotens. Die letzten 4 Bytes enthalten hingegen die ID der
prima Eigenschaft der Beziehung.
3.1.2 Cache
Mit dem Begriff Cache bezeichnet man einen kleinen Speicherbereich und
äußerst schnell, das die am häufigsten verwendeten Informationen speichert, in
um sie schnell wiederzulesen.
In Neo4j gibt es zwei verschiedene Arten von Caches:
Dateipuffer-Cache;
- Objektcache;
Il File Buffer Cache può essere anche chiamatolow level cacheofile system cache.
Dieser letzte agiert auf den Datei-Speichern, die dauerhaft auf der Festplatte gespeichert sind.
Laden von Teilen davon in den Speicher mit dem Ziel, die Leistung zu verbessern
31
Schreiben und Lesen. Der Dateisystem-Cache verbessert die Leistung, indem er in den Caches speichert und
Die permanente Speicherung auf der Festplatte bis zur Rotation des logischen Protokolls verschieben
di Neo4j und das Durchqueren des Graphen, was es ermöglicht, die eigene zu verbessern
Durchschnittsgeschwindigkeit. Die Lesevorgänge können 5 bis 10 Mal betragen.
schneller als die der Dateipuffer-Cache[5].
Während die Datensätze der Beziehungen auf der Festplatte den Großteil der
Informationen und die der Knoten enthalten nur Verweise auf ihre erste Beziehung,
Im Object Cache kehrt sich die Situation um. Hier halten die Knoten tatsächlich die Referenzen zu
Alle Beziehungen und die Aufzeichnungen der Beziehungen werden erheblich vereinfacht, indem
nur die ID der Eigenschaften.
3.1.3 Transaktionsmodul
Neo4j.
Gerade weil diese Eigenschaften garantiert werden, wird die Transaktionsverwaltung in
Neo4j ist ziemlich ähnlich dem, was in relationalen Datenbanken passiert, in denen
Rollback werden durchgeführt (eine Operation, die es ermöglicht, die Datenbank auf einen
stato korrekt vorher zu einem möglichen Fehler) im Falle, dass die Transaktion nicht durchgeführt wurde.
32
um den Zugang zu einer gemeinsam genutzten Ressource in einer Multitasking-Umgebung zu begrenzen
Das Transaktionsprotokoll ist ein Prozess, der das „Tagebuch“ verwaltet, also einen stabilen Speicher.
wo die durch die Transaktionen durchgeführten Aktionen aufgezeichnet werden. Diese Komponente ist
sehr wichtig, um die Datenbank auch im Falle eines konsistenten Zustands zu halten
fehlerhaft, denn ohne das Transaktionsprotokoll wäre es unmöglich, das Rollback durchzuführen.
33
Unafaul-tolerant database architecture[5], dove diversi database (Slave)
können so konfiguriert werden, dass sie eine exakte Kopie einer einzelnen Datenbank sind
Bietet eine horizontal skalierende, überwiegend lesende Architektur, die es ermöglicht, den
System zur besseren Handhabung von Leseeinheiten als es ein Einzelner tun kann
Datenbank.
Die Neo4j-Clusterstruktur besteht aus einem Load Balancer, dessen Funktion darin besteht, dass
die Lese- und Schreibbefehle von den Anwendungen zu empfangen und sie zuzuweisen
Server. Der Load Balancer führt normalerweise die Schreibvorgänge auf dem Master aus, während
Die Slaves werden anschließend über das HA-Cluster mit dem Master synchronisiert.
Protokoll, damit jeder Knoten aktuelle und konsistente Daten halten kann. Im Falle
Stattdessen wird die Schreiboperation auf einem Slave durchgeführt, diese wird zuerst erfolgen.
mit dem Master synchronisiert und wird nicht als abgeschlossen betrachtet, bis es nicht vorhanden ist.
stato das COMMIT (Signal, dass die Transaktion erfolgreich abgeschlossen wurde) auf beiden
Ich Server. Dieser Ansatz ist sicherlich sicherer als der erste (da die
Transaktionen werden auf zwei Servern anstelle von einem ausgeführt), aber andererseits ergibt sich auch
langsamer. Die Leseoperationen sind viel einfacher (da sie keine ...
Transaktionen) und werden von jedem Knoten bearbeitet [10].
Der Zookeeper-Dienst ist eine Komponente, die den Status der Dienste überwacht und im Falle von
Fehler von der Master-Node, es wählt einen neuen aus. Normalerweise, wenn dies
Es geschieht, dass ein neuer Master gewählt wird und innerhalb weniger Sekunden aktiv wird und
Balcer, indem er die Konfigurationsanweisungen für den Cluster bereitstellt und hervorhebt, was sie sind
3.1.5 API
34
Systemprogrammierer interagieren selten direkt mit dem Dateisystem oder
mit Caches, da sie es vorziehen, andere Tools zu verwenden: die APIs.
Die Abkürzung API steht für Application Programming Interface und entspricht einer Menge
die dem Programmierer zur Verfügung stehenden Verfahren, die es ermöglichen, mit einem
Technologie, ohne die internen Mechanismen der Technologie kennen und verwalten zu müssen.
Frage.
Neo4j stellt verschiedene APIs zur Verfügung:
Core Java API. Es ist eine imperative Java API, die es ermöglicht zu exécutieren
Wenn Neo4j im Servermodus läuft, spricht man von REST-APIs. Die APIs, von denen es heißt,
Das Server wird eingerichtet, um es den Clients zu ermöglichen, Anfragen im JSON-Format (JavaScript) zu senden.
Objektnotation, ein Format, das für den Austausch von Daten zwischenAnwendungenclient-
Server) hauptsächlich über das Protokoll HTTP.
3.2 Cypher-Abfragesprache
Cypher [4][5] ist, wie bereits erwähnt, eine deklarative Sprache, die von SQL inspiriert ist, die
erlaubt es Benutzern oder Anwendungen, die Datenbank unter Nutzung des Konzepts abzufragen
dipattern(sottografi). Der Vorgang, mit dem ein spezifisches Muster gefunden wird
Innerhalb des Graphen wird es als Graph-Mustererkennung bezeichnet.
35
Come la maggior parte dei linguaggi query, Cypher è composto da clausole le più
Wichtig sind sicherlich die Klauseln START, MATCH und RETURN.
Ein Beispiel für eine Abfrage könnte sein:
START A = node:people(name:‘Luca’)
MATCH (A)-[:KENNT]->(B)-[:KENNT]->(C); (A)-[:KENNT]->(C)
GIB B, C ZURÜCK;
- START
Geben Sie einen oder mehrere Ausgangspunkte an, die Knoten oder Beziehungen sein können, innerhalb von
des Graphen. Sie werden durch Recherchen über einen Index oder mehrere erhalten.
selten, mit direktem Zugang zu einem Knoten oder einer Beziehung über eine ID.
Im Beispiel wird ein Knoten über den Index mit dem Namen "people" gesucht, der besitzt
Die Eigenschaft "name" mit dem Wert "Luca". "A" hingegen wird der Identifikator dieses Knotens sein.
(o nodi) von Ausgang und wird verwendet, um auf den Ausgangsknoten innerhalb zu verweisen
unsere Anfrage.
-SPIEL
Diese Klausel ermöglicht es einem Benutzer oder einer Anwendung, die Muster zu beschreiben, die
werden dann von der Datenbank gefunden.
Um diese Muster zu beschreiben, werden ASCII-Zeichen (amerikanischer Standardcode für)
Die Kodierung der Zeichen). Runde Klammern werden verwendet, um die Knoten anzuzeigen, und
Paare von Bindestrichen (-), gefolgt von dem Größer- oder Kleinerzeichen (die die Richtung anzeigen)
der Beziehung) um die Beziehungen zu zeichnen (- - > und <- -). Zwischen den Strichen, innerhalb
delle parentesi quadre e prefissato dai due punti, è presente il nome del tipo di
Beziehung.
Das Muster unseres Beispiels wird wie folgt aussehen:
36
FIGURA 17 Muster der MATCH-Klausel: (A)-[:KNOWS]->(B)-[:KNOWS]->(C);
(A)-[:KENNT]->(C).
Dieses Muster, das die drei Knoten (A, B, C) durch die Beziehungen „KENNT“ verbindet
könnte theoretisch viele Male innerhalb des Graphen vorkommen. Auch deshalb
Tatsächlich wird die START-Klausel verwendet, die in unserem Fall "A" nur einengt.
Die Knoten, die das Attribut "name" mit dem Wert "Luca" besitzen.
Dank der MATCH-Klausel werden die kostspieligen JOIN-Operationen vermieden.
-RÜCKGABE
Diese Klausel legt fest, welche Knoten, Beziehungen und Eigenschaften zurückgegeben werden müssen.
In Bezug auf das Beispiel sind die interessierenden Knoten die, die mit den Identifikatoren verbunden sind.
-SET: legt die Werte fest, die den Eigenschaften zugeordnet sind;
37
Wie in den vorherigen Abschnitten zu sehen ist, verfügt Neo4j über verschiedene Methoden zur Abfrage und
Interagieren mit den Daten: Core Java API, Traversal API und Cypher.
Knoten der Publikationen oder Essays (Paper). Die Essays werden mit den Autoren verbunden sein (oder
Testergebnisse
Nachfolgend listen wir die Ergebnisse der verschiedenen Tests auf, die sich jeweils voneinander unterscheiden.
für die gewählte Datenbankgröße (Data1 oder Data 2) und/oder für die verwendete Abfragetyp
(Komplexität1 oder Komplexität2). Um die Skalierbarkeit des Systems zu zeigen, wird ein
Anzahl der Abfragen (die wir uns erinnern, können vom Typ Complexity1 sein oder
Komplexität 2) die von 10 bis 9000 reicht, die Antwortzeit auf solche Anfragen wird ausgedrückt in
Sekunden.
38
1. Data1 e Complexity1:
ABBILDUNG 19Testergebnis
Daten1 e Komplexität2:
3. Daten2 e Komplexität1:
FIGUR 21Testergebnis 3
4. Daten2 e Komplexität2:
39
FIGURA 22Ergebnis Test 4
Bei der Analyse der Testergebnisse bieten die Core Java APIs den schnellsten Ansatz.
Beim Abfragen der Datenbank ist Cypher deutlich der Langsamste.
Die Motivation liegt darin, dass Cypher eine deklarative Sprache verwendet,
Im Abfragecode wird nur ausdrücken, "was" man erreichen möchte, ohne das zu vernachlässigen.
Aufgabe, das "Wie" zu definieren, um es der Maschine zu ermöglichen, die folglich einen haben wird
compito più oneroso. D’altro canto Cypher risulta un linguaggio più astratto e
semplice dal punto di vista sintattico e per questo spesso è preferibile alle Core Java
API. Die Traversal-API stellt einen guten Kompromiss zwischen den beiden oben genannten Sprachen dar.
„Nummer“ ist klein, die Größe der Datenbank beeinflusst die Leistung nicht, während
Wenn die Kostendifferenz hoch ist, wird sie sehr sensibel und resulta sehr.
langsamer in größeren Datenbanken (Abbildung 19). Aus der Kurve in Abbildung 19
notiere auch, wie die Größe der Datenbank viel offensichtlicher Auswirkungen hat auf
Cypher im Vergleich zu den Core Java APIs oder den Traversal APIs.
40
Die Komplexität der Abfrage beeinflusst erheblich die Kosten der Leistung (höher
Je größer die Komplexität, desto höher werden die Kosten bei gleicher Anzahl an Abfragen.
In diesem Kapitel wird versucht, die Fähigkeiten von Neo4j und MySQL im Umgang mit
Mit einer Graphstruktur dargestellte verbundene Daten.
Die Graphstruktur ist ziemlich verbreitet und reale Beispiele sind soziale Netzwerke, die
chemisch/biologisches Netzwerk (um molekulare Bindungen und Karten darzustellen
genetische) und die Verkehrsnetze (um die Straßenwege darzustellen).
Das Benchmarking wird aus einer objektiven Perspektive durchgeführt, indem getestet wird:
- ihre Leistungen bei der Beantwortung einer festgelegten Reihe von Anfragen;
- der benötigte Speicherplatz;
die Skalierbarkeit;
aus einer subjektiveren Perspektive bewertend:
Maturität;
-Programmierfreundlichkeit;
-Flexibilität.
Testgestaltung
Um die beiden Datenbanken zu testen, werden 12 Grafen erstellt, in denen jeder Knoten eine Eigenschaft enthält.
Die Werte der Eigenschaften von 4 der Graphen werden ganzzahlig (integers) sein, die folgenden 4
sarannostring(Zeichenfolgen oder Zeichenfolgen) von 8KB und die letzten 4 immer
Strings von 32KB. Es werden 4 Grafen jedes Typs verwendet, sodass der erste
enthalten 1000 Knoten, der zweite 5000, der dritte 10000 und der vierte 100000 Knoten (siehe
Abbildung 23) [13], um die Skalierbarkeit zu bewerten.
Gemäß den vorherigen Anweisungen wird die Struktur jedes Graphen erzeugt
zufällig aus einem Programm.
Anschließend wird jeder der Graphen in einer MySQL-Datenbank gespeichert und in einem
Datenbank Neo4j, wie in Abbildung 23 gezeigt, in der auch der Raum dargestellt ist.
die von den beiden Datenbanken geforderte Archivierung.
41
FIGUR 23Datenbank des Tests
Um Graphen in der relationalen Datenbank (MySQL) zu speichern, werden zwei Tabellen verwendet:
- nodecon die Attribute „nodeId“ (also die Identifikationsnummer des Knotens) und „Eigenschaften“;
-edgecon die Attribute "source" (das den Startknoten angibt) und "sink" (das angibt
Ankunftsname).
Abfrage
Um die Datenbank zu testen, werden sechs Abfragen durchgeführt, die in zwei Gruppen unterteilt werden können.
Lestructural querysono:
alle Orphan-Nodes finden (d.h. ohne Eingangs- und Ausgangskanten) innerhalb des
Graph
S4: attraversare il grafo fino a profondità 4 e determinare il numero di nodi trovati.
S128: Durchqueren Sie den Graphen bis zu einer Tiefe von 128 und bestimmen Sie die Anzahl der Knoten.
gefunden.
Ledata Abfragen:
I1: Bestimmen Sie die Anzahl der Knoten, die eine Eigenschaft mit Wert (integer) haben
gleich einem bestimmten zugewiesenen Wert.
I2: Bestimmen Sie die Anzahl der Knoten, die eine Eigenschaft mit Wert (Integer) haben.
unter einem bestimmten zugewiesenen Wert.
42
C1: die Anzahl der Knoten bestimmen, deren Eigenschaften eine bestimmte Zeichenfolge enthalten (oder
Zeichenfolge).
Die von MySQL verwendete Sprache zur Abfrage von Daten ist selbstverständlich SQL, während
Für Neo4j wurden die Traversal-APIs verwendet.
Risultati
In den folgenden Tabellen sind die Ergebnisse in zeitlicher Hinsicht der Abfragen aufgeführt.
Beschreiben Sie den vorherigen Absatz.
ABBILDUNG 26 Ergebnisse der Datenabfrage C1 in Millisekunden. Der Test wurde durchgeführt für
Objektive Bewertungen
43
Für die Abfragen S4 und S128 ist Neo4j in den meisten Fällen deutlich mehr
rapido (Abbildung 24). Dies liegt daran, dass Neo4j profitieren kann, auch dank
Beim indexfreien Adjazenz ermöglicht das Durchqueren des Graphen einem Knoten, ...
sich über seine Beziehungen zu anderen damit verbundenen Knoten zurückverfolgen. Dieser Typ von
Die Operation wird von relationalen Datenbanken nicht unterstützt, die stattdessen durchführen müssen.
Subjektive Bewertungen
Diese Art von Bewertungen sind nicht in quantitativen Zahlen messbar, sondern sind
dennoch wichtig, wenn es darum geht, welche Art von Datenbank gewählt werden soll
verwendet. Die Merkmale, die analysiert und verglichen werden sollen, sind:
Reife, Programmierfreundlichkeit und Flexibilität.
Man spricht von einem ausgereiften System, wenn es gründlich getestet wurde, denn je mehr
Je mehr Tests durchgeführt werden, desto mehr werden die identifizierten „Fehler“ sein und folglich die
Beispiel Oracle [13] und Microsoft [13], die viel in diese investiert haben.
44
Datenbanken. Stattdessen haben Graphdatenbanken im Allgemeinen eine geringere
Marktdurchdringung, die vor allem darauf zurückzuführen ist, dass eine Sprache fehlt
die einzige Befragung und auch deshalb sind sie weniger reif als die
relational
Die Tatsache, eine einzigartige Programmiersprache zu haben, macht die Transaktionen
tra verschiedene Implementierungen einfacher in relationalen Datenbanken als in denen
ein Graph. Die Leichtigkeit beim Schreiben von Abfragen hängt hingegen stark von der Art der ...
Befragungen, zum Beispiel das Schreiben von Durchquerungsabfragen in Neo4j, erweist sich als
In dieser Arbeit wird nach einer kurzen Einführung in den Bereich der NoSQL-Datenbanken
presentato un confronto tra i database a grafo e quelli relazionali analizzandone i
Modelle, die Transaktionen, die Indizes, die Programmierung und schließlich die Leistung für die
welche Abfragen wurden auf der relationalen Datenbank MySQL und derjenigen zu ...
Grafo Neo4j.
Das relationale Modell im Vergleich zum grafbasierten Modell hat insbesondere Einschränkungen gezeigt, hauptsächlich aufgrund von
Sicht der Flexibilität und der Leistung (insbesondere bei großen Mengen von
dati) während es in Reife, Konsistenz und Sicherheit besser abgeschnitten hat.
Aus der Analyse, die in der Thesis durchgeführt wurde, kann man schließen, dass zu definieren, was das Beste ist
45
strukturierte Daten darstellen. Beide Datenbanken weisen daher positive Aspekte auf und
Negativen und einen passendere Anwendungsbereich.
Man kann jedoch sagen, dass die Daten in vielen Realitäten heute immer mehr verbunden sind und die
Die Menge der zu verwaltenden Daten wird immer größer und verändert sich ständig (eine Eigenschaft, die
Bibliografia
[2]Wikipedia. ([Link]
Mehak Gupta. "Ein neuartiger Ansatz zur Transformation von relationalen Datenbanken in Graphen
[4] Ian, Robinson, Jim Webber und Emil Eifrem. „Graphdatenbanken“. O’Reilly
Media Inc., 2013.
46
Jaroslav Pokorný. "Graphdatenbanken: ihre Macht und Einschränkungen."
Internationale Föderation für Information Processing (IFIP), S. 58–69, 2015.
Shalini Batra und Charu Tyagi. "Vergleichende Analyse von relationalen und graphbasierten"
Datenbanken. International Journal of Soft Computing and Engineering (IJSCE)
Band-2, Ausgabe-2, 2012.
[12] Florian Holzschuher und Prof. Dr. René Peinl. „Leistung von Graphabfragen
Sprachen. Vergleich von Cypher, Gremlin und Native Access in Neo4j. Institut
für Informationssysteme (iisys) Hochschule Hof Alfons-Goppel-Platz 1 DE-95028
Hof, Deutschland, 2013.
[13] Chad Vicknair, Michael Macias, Zhendong Zhao, Xiaofei Nan, Yixin Chen und
Dawn Wilkins. „Ein Vergleich zwischen einer Graphdatenbank und einer relationalen Datenbank“.
47