Migration von Neo4j zu Amazon Neptune - Amazon Neptune

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Migration von Neo4j zu Amazon Neptune

Neo4j und Amazon Neptune sind beide Graphdatenbanken, die für transaktionale Online-Graph-Workloads konzipiert wurden und das Labeled-Property-Graph-Datenmodell unterstützen. Aufgrund dieser Ähnlichkeiten ist Neptune eine beliebte Wahl für Kunden, die ihre aktuellen Neo4j-Anwendungen migrieren möchten. Bei diesen Migrationen handelt es sich jedoch nicht einfach um Lift-and-Shift-Lösungen, da es zwischen den beiden Datenbanken Unterschiede bei den Sprachen und der Feature-Unterstützung, den Betriebsmerkmalen, der Serverarchitektur und den Speicherkapazitäten gibt.

Auf dieser Seite wird der Migrationsprozess beschrieben und es werden Dinge aufgezeigt, die vor der Migration einer Neo4j-Graph-Anwendung zu Neptune zu beachten sind. Diese Überlegungen gelten generell für jede Neo4j-Graph-Anwendung, unabhängig davon, ob sie von einer Community-, Enterprise- oder Aura-Datenbank betrieben wird. Obwohl jede Lösung einzigartig ist und zusätzliche Verfahren erfordern kann, folgen alle Migrationen demselben allgemeinen Muster.

Jeder der in den folgenden Abschnitten beschriebenen Schritte beinhaltet Überlegungen und Empfehlungen zur Vereinfachung des Migrationsprozesses. Darüber hinaus gibt es Open-Source-Tools und Blog-Beiträge, in denen der Prozess beschrieben wird, sowie einen Abschnitt zur Feature-Kompatibilität mit empfohlenen Architekturoptionen.

Allgemeine Informationen zur Migration von Neo4j zu Neptune

Mit der Unterstützung für die openCypher-Abfragesprache durch Neptune können Sie die meisten Neo4j-Workloads, die das Bolt-Protokoll oder HTTPS verwenden, zu Neptune verschieben. OpenCypher ist jedoch eine Open-Source-Spezifikation, die die meisten, aber nicht alle Funktionen enthält, die von anderen Datenbanken wie Neo4j unterstützt werden.

Obwohl Neptune in vielerlei Hinsicht kompatibel ist, stellt es keinen direkten Ersatz für Neo4j dar. Neptune ist ein vollständig verwalteter Graphdatenbank-Service mit Enterprise-Features wie hohe Verfügbarkeit und hohe Datenbeständigkeit, der sich architektonisch von Neo4j unterscheidet. Neptune ist Instance-basiert und verfügt über eine einzige primäre Writer-Instance und bis zu 15 Lesereplikat-Instances, mit denen Sie die Lesekapazität horizontal skalieren können. Mit Neptune Serverless können Sie Ihre Datenverarbeitungskapazität je nach Abfragevolumen automatisch nach oben oder unten skalieren. Dies ist unabhängig vom Neptune-Speicher, der automatisch skaliert wird, wenn Sie Daten hinzufügen.

Neptune unterstützt die Open-Source-Standardspezifikation OpenCypher, Version 9. Wir bei AWS sind davon überzeugt, dass Open Source für alle gut ist, und setzen uns dafür ein, sowohl unseren Kunden den Wert von Open Source näherzubringen als auch Open-Source-Communitys die operative Exzellenz von AWS zu bieten.

Viele Anwendungen, die auf Neo4j laufen, verwenden jedoch auch proprietäre Features, die nicht als Open-Source-Funktionen verfügbar sind und die Neptune nicht unterstützt. Neptune unterstützt beispielsweise keine APOC-Prozeduren, einige Cypher-spezifische Klauseln und Funktionen sowie die Datentypen Char, Date oder Duration. Neptune wandelt die fehlenden Datentypen automatisch in unterstützte Datentypen um.

Neben openCypher unterstützt Neptune auch die Apache-TinkerPop-Gremlin-Abfragesprache für Eigenschaftsgraphen (sowie SPARQL für RDF-Daten). Gremlin kann mit openCypher auf demselben Eigenschaftsgraphen interoperieren und in vielen Fällen können Sie Gremlin verwenden, um Funktionen bereitzustellen, die openCypher nicht bietet. Im Folgenden finden Sie einen kurzen Vergleich der beiden Sprachen:

openCypher Gremlin

Style

Deklarativ

Unerlässlich

Syntax

Mustervergleich

Match p=(a)-[:route]->(d) WHERE a.code='ANC' RETURN p

Transversal-basiert

g.V().has('code', 'ANC'). out('route').path(). by(elementMap())

Benutzerfreundlichkeit

Von SQL-inspiriert, auch für Nicht-Programmierer lesbar

Steilere Lernkurve, ähnlich wie bei Programmiersprachen wie Java

Flexibilität

Niedrig

Hoch

Unterstützung für Abfragen

Zeichenfolgenbasierte Abfragen

Zeichenfolgenbasierte Abfragen oder Inline-Code, der von Client-Bibliotheken unterstützt wird

Clients

HTTPS und Bolt

HTTPS und Websockets

Im Allgemeinen ist es nicht erforderlich, Ihr Datenmodell zu ändern, um von Neo4j zu Neptune zu migrieren, da sowohl Neo4j als auch Neptune Labeled Property Graph (LPG)-Daten unterstützen. Neptune weist jedoch einige Architektur- und Datenmodellunterschiede auf, die Sie zur Leistungsoptimierung nutzen können. Beispiele:

Bitte wenden Sie sich an den AWS Support oder an Ihr AWS-Account-Team, wenn Sie weitere Fragen haben. Wir nutzen Ihr Feedback, um neue Features zu priorisieren, die Ihren Anforderungen entsprechen.