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.
Verwenden von Amazon Neptune als Ziel für AWS Database Migration Service
Amazon Neptune ist ein schneller, zuverlässiger, vollständig verwalteter Graph-Datenbankservice, mit dem es ganz einfach ist, Anwendungen zu erstellen und auszuführen, die mit stark verbundenen Datensätzen arbeiten. Den Kern von Neptune bildet eine speziell entwickelte, hochleistungsfähige Graphdatenbank-Engine. Diese Engine ist für die Speicherung von Milliarden von Beziehungen und die Abfrage des Graphen mit einer Latenzzeit von Millisekunden optimiert. Neptune unterstützt die gängigen Graph-Abfragesprachen Apache TinkerPop Gremlin und W3C SPARQL. Weitere Informationen zu Amazon Neptune finden Sie unter Was ist Amazon Neptune? im Amazon-Neptune-Benutzerhandbuch.
Ohne eine Graphdatenbank wie Neptune modellieren Sie wahrscheinlich hoch verbundene Daten in einer relationalen Datenbank. Da die Daten über potenziell dynamische Verbindungen verfügen, müssen Anwendungen, die solche Datenquellen verwenden, verbundene Datenabfragen in SQL modellieren. Dieser Ansatz erfordert, dass Sie einen zusätzlichen Layer schreiben, um Graph-Abfragen in SQL zu konvertieren. Außerdem haben relationale Datenbanken eine Schemastarrheit. Änderungen am Schema an modelländernden Verbindungen erfordern Ausfallzeiten und zusätzliche Wartung der Abfragekonvertierung, um das neue Schema zu unterstützen. Die Abfrageleistung ist auch eine weitere große Einschränkung, die beim Entwerfen Ihrer Anwendungen berücksichtigt werden muss.
Graph-Datenbanken können solche Situationen erheblich vereinfachen. Frei von einem Schema, einem Rich Graph Query Layer (Gremlin oder SPARQL) und Indizes, die für Graph-Abfragen optimiert sind, erhöhen die Flexibilität und Leistung. Die Graphdatenbank von Amazon Neptune verfügt auch über Enterprise-Features wie Verschlüsselung im Ruhezustand, eine sichere Autorisierungsebene, Standardsicherungen, Multi-AZ-Unterstützung, Unterstützung für Lesereplikate und mehr.
Mit AWS DMS können Sie relationale Daten migrieren, die einen stark verbundenen Graphen von einem DMS-Quellendpunkt für jede unterstützte SQL-Datenbank auf einen Neptune-Zielendpunkt modellieren.
Weitere Informationen finden Sie im Folgenden.
Themen
- Übersicht über die Migration zu Amazon Neptune als Ziel
- Angeben von Endpunkteinstellungen für Amazon Neptune als Ziel
- Erstellen einer IAM-Servicerolle für den Zugriff auf Amazon Neptune als Ziel
- Angeben von Graph-Zuordnungsregeln mit Gremlin und R2RML für Amazon Neptune als Ziel
- Datentypen für die Migration von Gremlin und R2RML zu Amazon Neptune als Ziel
- Einschränkungen bei der Verwendung von Amazon Neptune als Ziel
Übersicht über die Migration zu Amazon Neptune als Ziel
Bevor Sie mit der Migration zu einem Neptune-Ziel beginnen, erstellen Sie die folgenden Ressourcen in Ihrem AWS-Konto:
-
Einen Neptune-Cluster für den Zielendpunkt.
-
Eine relationale SQL-Datenbank, die von AWS DMS unterstützt wird, für den Quellendpunkt.
-
Einen Amazon-S3-Bucket für den Zielendpunkt. Erstellen Sie diesen S3-Bucket in derselben AWS-Region wie Ihren Neptune-Cluster. AWS DMS verwendet diesen S3-Bucket als Zwischendateispeicher für die Zieldaten, die in einem Massenladevorgang in die Neptune-Datenbank geladen werden. Weitere Informationen zum Erstellen eines S3-Buckets finden Sie unter Erstellen von Buckets im Benutzerhandbuch für Amazon Simple Storage Service.
-
Einen Virtual Private Cloud (VPC)-Endpunkt für S3 in derselben VPC wie der Neptune-Cluster.
-
Eine AWS Identity and Access Management(IAM)-Rolle, die eine IAM-Richtlinie enthält. In dieser Richtlinie sollten die Berechtigungen
ListObject
,GetObject
,PutObject
undDeleteObject
für den S3-Bucket für den Zielendpunkt angegeben werden. Diese Rolle wird sowohl von AWS DMS als auch von Neptune mit IAM-Zugriff auf den Ziel-S3-Bucket und die Neptune-Datenbank übernommen. Weitere Informationen finden Sie unter Erstellen einer IAM-Servicerolle für den Zugriff auf Amazon Neptune als Ziel.
Nachdem Sie über diese Ressourcen verfügen, sind die Einrichtung und das Starten einer Migration zu einem Neptune-Ziel ähnlich wie bei einer Volllastmigration unter Verwendung der Konsole oder der DMS-API. Eine Migration zu einem Neptune-Ziel erfordert jedoch einige spezifische Schritte.
So migrieren Sie eine relationale AWS DMS-Datenbank zu Neptune
-
Erstellen Sie eine Replikations-Instance wie unter Erstellen einer Replikations-Instance beschrieben.
-
Erstellen und testen Sie eine relationale SQL-Datenbank, die von AWS DMS für den Quellendpunkt unterstützt wird.
-
Erstellen und testen Sie den Zielendpunkt für Ihre Neptune-Datenbank.
Um den Zielendpunkt mit der Neptune-Datenbank zu verbinden, geben Sie den Servernamen für den Neptune-Cluster-Endpunkt oder den Neptune-Writer-Instance-Endpunkt an. Geben Sie außerdem den S3-Bucket-Ordner für AWS DMS an, um die Zwischendateien für das Massenladen in die Neptune-Datenbank zu speichern.
Während der Migration speichert AWS DMS alle migrierten Zieldaten in diesem S3-Bucket-Ordner bis zu einer von Ihnen angegebenen maximalen Dateigröße. Wenn dieser Dateispeicher diese maximale Größe erreicht, lädt AWS DMS in einem Massenladevorgang die gespeicherten S3-Daten in die Zieldatenbank. Der Ordner wird gelöscht, um die Speicherung zusätzlicher Zieldaten für das nachfolgende Laden in die Zieldatenbank zu ermöglichen. Weitere Informationen zum Festlegen dieser Einstellungen finden Sie unter Angeben von Endpunkteinstellungen für Amazon Neptune als Ziel.
-
Erstellen Sie eine Volllast-Replikationsaufgabe mit den Ressourcen, die in den Schritten 1 bis 3 erstellt wurden, und gehen Sie wie folgt vor:
-
Verwenden Sie die Aufgaben-Tabellenzuordnung wie gewohnt, um bestimmte Quellschemas, Tabellen und Ansichten zu identifizieren, die mit entsprechenden Auswahl- und Transformationsregeln aus Ihrer relationalen Datenbank migriert werden sollen. Weitere Informationen finden Sie unter Verwenden der Tabellenzuweisung zum Angeben von Aufgabeneinstellungen.
-
Geben Sie Zielzuordnungen an, indem Sie eine der folgenden Optionen auswählen, um Zuordnungsregeln aus Quelltabellen und Ansichten für den Neptune-Zieldatenbank-Graphen anzugeben:
-
Gremlin JSON – Informationen zur Verwendung von Gremlin JSON zum Laden einer Neptune-Datenbank finden Sie unter Gremlin-Format zum Laden von Daten im Amazon-Neptune-Benutzerhandbuch.
-
SPARQL RDB to Resource Description Framework Mapping Language (R2RML) – Weitere Informationen zur Verwendung von SPARQL R2RML finden Sie in der W3C-Spezifikation R2RML: RDB to RDF Mapping Language
.
-
-
Führen Sie eine der folgenden Aktionen aus:
-
Geben Sie mithilfe der AWS DMS-Konsole Graph-Zuordnungsoptionen mithilfe der Graph-Zuordnungsregeln auf der Seite Datenbankmigrationsaufgabe erstellen.
-
Geben Sie mithilfe der AWS DMS-API diese Optionen über den
TaskData
-Anforderungsparameter desCreateReplicationTask
-API-Aufrufs an.
Weitere Informationen und Beispiele für die Verwendung von Gremlin JSON und SPARQL R2RML zum Angeben von Graph-Zuordnungsregeln finden Sie unter Angeben von Graph-Zuordnungsregeln mit Gremlin und R2RML für Amazon Neptune als Ziel.
-
-
-
Starten Sie die Replikation für Ihre Migrationsaufgabe.
Angeben von Endpunkteinstellungen für Amazon Neptune als Ziel
Um einen Zielendpunkt zu erstellen oder zu ändern, können Sie die Konsole oder die CreateEndpoint
- oder ModifyEndpoint
-API-Vorgänge verwenden.
Geben Sie für ein Neptune-Ziel in der AWS DMS-Konsole Endpunktspezifische Einstellungen auf der Konsolenseite Endpunkt erstellen oder Endpunkt ändern an. Geben Sie für CreateEndpoint
und ModifyEndpoint
Anforderungsparameter für die NeptuneSettings
-Option an. Das folgende Beispiel zeigt, wie dies über die Befehlszeilenschnittstelle (CLI) möglich ist.
dms create-endpoint --endpoint-identifier my-neptune-target-endpoint --endpoint-type target --engine-name neptune --server-name my-neptune-db.cluster-cspckvklbvgf.us-east-1.neptune.amazonaws.com --port 8192 --neptune-settings '{"ServiceAccessRoleArn":"arn:aws:iam::123456789012:role/myNeptuneRole", "S3BucketName":"my-bucket", "S3BucketFolder":"my-bucket-folder", "ErrorRetryDuration":57, "MaxFileSize":100, "MaxRetryCount": 10, "IAMAuthEnabled":false}‘
Hier gibt die CLI-Option --server-name
den Servernamen für den Neptune-Cluster-Writer-Endpunkt an. Sie können auch den Servernamen für einen Neptune-Writer-Instance-Endpunkt angeben.
Die --neptune-settings
-Option fordert Parameter wie folgt an:
-
ServiceAccessRoleArn
– (Erforderlich) Der Amazon-Ressourcenname (ARN) der Servicerolle, die Sie für den Neptune-Zielendpunkt erstellt haben. Weitere Informationen finden Sie unter Erstellen einer IAM-Servicerolle für den Zugriff auf Amazon Neptune als Ziel. -
S3BucketName
– (Erforderlich) Der Name des S3-Buckets, in dem DMS migrierte Diagrammdaten vorübergehend in CSV-Dateien speichern kann, bevor sie in einem Massenladevorgang in die Neptune-Zieldatenbank geladen werden. DMS ordnet die SQL-Quelldaten Diagrammdaten zu, bevor sie in diesen CSV-Dateien gespeichert werden. -
S3BucketFolder
– (Erforderlich) Ein Ordnerpfad, in dem DMS migrierte Diagrammdaten in dem S3-Bucket speichern soll, der durchS3BucketName
angegeben wird. -
ErrorRetryDuration
– (Optional) Die Anzahl der Millisekunden, die DMS auf einen erneuten Massenladevorgang migrierter Diagrammdaten in die Neptune-Zieldatenbank warten soll, bevor ein Fehler ausgelöst wird. Der Standardwert ist 250. -
MaxFileSize
– (Optional) Die maximale Größe der migrierten Diagrammdaten in KB, die in einer CSV-Datei gespeichert werden, bevor DMS eine Massenladung der Daten in die Neptune-Zieldatenbank vornimmt. Der Standardwert ist 1.048.576 KB (1 GB) Wenn dies erfolgreich ist, löscht DMS den Bucket und ist bereit, den nächsten Stapel der migrierten Diagrammdaten zu speichern. -
MaxRetryCount
– (Optional) Gibt an, wie oft DMS eine Massenladung migrierter Diagrammdaten in die Neptune-Zieldatenbank erneut versucht, bevor ein Fehler ausgelöst wird. Der Standardwert für ist 5. -
IAMAuthEnabled
– (Optional) Wenn Sie die IAM-Autorisierung für diesen Endpunkt aktivieren möchten, legen Sie für diesen Parametertrue
fest und fügen Sie das entsprechende IAM-Richtliniendokument zu Ihrer Servicerolle hinzu, die inServiceAccessRoleArn
angegeben ist. Der Standardwert istfalse
.
Erstellen einer IAM-Servicerolle für den Zugriff auf Amazon Neptune als Ziel
Um auf Neptune als Ziel zuzugreifen, erstellen Sie mithilfe von IAM eine Dienstrolle. Fügen Sie dieser Rolle abhängig von Ihrer Neptune-Endpunktkonfiguration einige oder alle folgenden IAM-Richtlinien- und Vertrauensdokumente an. Wenn Sie den Neptune-Endpunkt erstellen, geben Sie den ARN dieser Servicerolle an. Auf diese Weise können AWS DMS und Amazon Neptune Berechtigungen für den Zugriff auf Neptune und den zugehörigen Amazon-S3-Bucket übernehmen.
Wenn Sie in Ihrer Neptune-Endpunktkonfiguration den Parameter IAMAuthEnabled
in NeptuneSettings
auf true
festlegen, fügen Sie Ihrer Servicerolle eine IAM-Richtlinie wie die folgende hinzu. Wenn Sie IAMAuthEnabled
auf false
festlegen, können Sie diese Richtlinie ignorieren.
// Policy to access Neptune { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "neptune-db:*", "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-CLG7H7FHK54AZGHEH6MNS55JKM/*" } ] }
Die vorangehende IAM-Richtlinie ermöglicht vollen Zugriff auf den von Resource
angegebenen Neptune-Ziel-Cluster.
Fügen Sie Ihrer Dienstrolle eine IAM-Richtlinie wie die folgende an. Diese Richtlinie ermöglicht es DMS, migrierte Diagrammdaten vorübergehend im S3-Bucket zu speichern, den Sie für den Massenladevorgang in die Neptune-Zieldatenbank erstellt haben.
//Policy to access S3 bucket { "Version": "2012-10-17", "Statement": [{ "Sid": "ListObjectsInBucket0", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::my-bucket" ] }, { "Sid": "AllObjectActions", "Effect": "Allow", "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::my-bucket/" ] }, { "Sid": "ListObjectsInBucket1", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/" ] } ] }
Die vorangehende IAM-Richtlinie ermöglicht es Ihrem Konto, den Inhalt des S3-Buckets (arn:aws:s3:::my-bucket
) abzufragen, der für Ihr Neptune-Ziel erstellt wurde. Außerdem kann Ihr Konto vollständig mit dem Inhalt aller Bucket-Dateien und Ordner arbeiten (arn:aws:s3:::my-bucket/
).
Bearbeiten Sie die Vertrauensbeziehung und fügen Sie Ihrer Servicerolle die folgende IAM-Rolle an, damit AWS DMS und der Amazon-Neptune-Datenbankservice die Rolle übernehmen können.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "neptune", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Weitere Informationen zum Angeben dieser Servicerolle für den Neptune-Zielendpunkt finden Sie unter Angeben von Endpunkteinstellungen für Amazon Neptune als Ziel.
Angeben von Graph-Zuordnungsregeln mit Gremlin und R2RML für Amazon Neptune als Ziel
Die von Ihnen erstellten Graph-Zuordnungsregeln geben an, wie Daten, die aus einer relationalen SQL-Datenbankquelle extrahiert werden, in ein Neptune-Datenbank-Cluster-Ziel geladen werden. Das Format dieser Zuweisungsregeln unterscheidet sich je nachdem, ob die Regeln zum Laden von Eigenschaftsdiagrammdaten mit Apache TinkerPop Gremlin oder RDF(Resource Description Framework)-Daten mit R2RML dienen. Im Folgenden finden Sie Informationen zu diesen Formaten und wo Sie mehr darüber erfahren können.
Sie können diese Zuordnungsregeln angeben, wenn Sie die Migrationsaufgabe mithilfe der Konsole oder der DMS-API erstellen.
Geben Sie mithilfe der Graph-Zuordnungsregeln auf der Seite Datenbankmigration erstellen diese Zuordnungsregeln an. In Graph-Zuordnungsregeln können Sie die Zuordnungsregeln direkt mit dem bereitgestellten Editor eingeben und bearbeiten. Sie können auch nach einer Datei suchen, die die Zuordnungsregeln im entsprechenden Graph-Zuordnungsformat enthält.
Geben Sie mithilfe der API diese Optionen über den TaskData
-Anforderungsparameter des CreateReplicationTask
-API-Aufrufs an. Legen Sie TaskData
auf den Pfad einer Datei fest, die die Zuordnungsregeln im entsprechenden Graph-Zuordnungsformat enthält.
Graph-Zuordnungsregeln zum Generieren von Eigenschafts-Graph-Daten mit Gremlin
Verwenden Sie Gremlin zum Generieren der Eigenschafts-Graph-Daten an, geben Sie ein JSON-Objekt mit einer Zuordnungsregel für jede Graph-Entität ein, die aus Quelldaten generiert werden soll. Das Format dieses JSON-Objekts ist speziell für einen Masseladevorgang von Amazon Neptune definiert. Die folgende Vorlage zeigt, wie die einzelnen Regeln in diesem Objekt aussehen:
{ "rules": [ { "rule_id": "(an identifier for this rule)", "rule_name": "(a name for this rule)", "table_name": "(the name of the table or view being loaded)", "vertex_definitions": [ { "vertex_id_template": "{col1}", "vertex_label": "(the vertex to create)", "vertex_definition_id": "(an identifier for this vertex)", "vertex_properties": [ { "property_name": "(name of the property)", "property_value_template": "{col2} or text", "property_value_type": "(data type of the property)" } ] } ] }, { "rule_id": "(an identifier for this rule)", "rule_name": "(a name for this rule)", "table_name": "(the name of the table or view being loaded)", "edge_definitions": [ { "from_vertex": { "vertex_id_template": "{col1}", "vertex_definition_id": "(an identifier for the vertex referenced above)" }, "to_vertex": { "vertex_id_template": "{col3}", "vertex_definition_id": "(an identifier for the vertex referenced above)" }, "edge_id_template": { "label": "(the edge label to add)", "template": "{col1}_{col3}" }, "edge_properties":[ { "property_name": "(the property to add)", "property_value_template": "{col4} or text", "property_value_type": "(data type like String, int, double)" } ] } ] } ] }
Das Vorhandensein eines Vertex-Labels bedeutet, dass der Knoten hier erstellt wird. Seine Abwesenheit bedeutet, dass der Knoten von einer anderen Quelle erstellt wird, und diese Definition fügt nur Knoteneigenschaften hinzu. Geben Sie so viele Knoten- und Grenzdefinitionen an, wie erforderlich, um die Zuordnungen für die gesamte relationale Datenbankquelle anzugeben.
Es folgt eine Beispielregel für eine employee
-Tabelle.
{ "rules": [ { "rule_id": "1", "rule_name": "vertex_mapping_rule_from_nodes", "table_name": "nodes", "vertex_definitions": [ { "vertex_id_template": "{emp_id}", "vertex_label": "employee", "vertex_definition_id": "1", "vertex_properties": [ { "property_name": "name", "property_value_template": "{emp_name}", "property_value_type": "String" } ] } ] }, { "rule_id": "2", "rule_name": "edge_mapping_rule_from_emp", "table_name": "nodes", "edge_definitions": [ { "from_vertex": { "vertex_id_template": "{emp_id}", "vertex_definition_id": "1" }, "to_vertex": { "vertex_id_template": "{mgr_id}", "vertex_definition_id": "1" }, "edge_id_template": { "label": "reportsTo", "template": "{emp_id}_{mgr_id}" }, "edge_properties":[ { "property_name": "team", "property_value_template": "{team}", "property_value_type": "String" } ] } ] } ] }
Hier ordnen die Knoten- und Grenzdefinitionen eine Meldebeziehung von einem employee
-Knoten mit Mitarbeiter-ID (EmpID
) und einem employee
-Knoten mit einer Manager-ID (managerId
) zu.
Weitere Informationen zum Erstellen von Graph-Zuordnungsregeln mit Gremlin JSON finden Sie unter Gremlin-Format zum Laden von Daten im Amazon-Neptune-Benutzerhandbuch.
Graph-Zuordnungsregeln zum Generieren von RDF/SPARQL-Daten
Wenn Sie RDF-Daten laden, die mit SPARQL abgefragt werden sollen, schreiben Sie die Graph-Zuordnungsregeln in R2RML. R2RML ist eine Standard-W3C-Sprache für die Zuordnung relationaler Daten zu RDF. In einer R2RML-Datei gibt eine Dreifach-Zuordnung (z B. <#TriplesMap1>
folgend) eine Regel an, um jede Zeile einer logischen Tabelle in null oder mehr RDF-Triple zu übersetzen. Eine Betreffzuordnung (z. B. eine beliebige rr:subjectMap
folgend) gibt eine Regel zum Generieren der Betreffe der RDF-Triple an, die von einer Tripel-Zuordnung generiert werden. Eine -Prädikat-Objekt-Zuordnung (z. B. eine beliebige rr:predicateObjectMap
folgend) ist eine Funktion, die ein oder mehrere Prädikat-Objekt-Paare für jede logische Tabellenzeile einer logischen Tabelle erstellt.
Ein einfaches Beispiel für eine nodes
-Tabelle folgt.
@prefix rr: <http://www.w3.org/ns/r2rml#>. @prefix ex: <http://example.com/ns#>. <#TriplesMap1> rr:logicalTable [ rr:tableName "nodes" ]; rr:subjectMap [ rr:template "http://data.example.com/employee/{id}"; rr:class ex:Employee; ]; rr:predicateObjectMap [ rr:predicate ex:name; rr:objectMap [ rr:column "label" ]; ]
Im vorherigen Beispiel definiert die Zuordnung Graph-Knoten, die aus einer Tabelle mit Mitarbeitern zugeordnet sind.
Ein weiteres einfaches Beispiel für eine Student
-Tabelle folgt.
@prefix rr: <http://www.w3.org/ns/r2rml#>. @prefix ex: <http://example.com/#>. @prefix foaf: <http://xmlns.com/foaf/0.1/>. @prefix xsd: <http://www.w3.org/2001/XMLSchema#>. <#TriplesMap2> rr:logicalTable [ rr:tableName "Student" ]; rr:subjectMap [ rr:template "http://example.com/{ID}{Name}"; rr:class foaf:Person ]; rr:predicateObjectMap [ rr:predicate ex:id ; rr:objectMap [ rr:column "ID"; rr:datatype xsd:integer ] ]; rr:predicateObjectMap [ rr:predicate foaf:name ; rr:objectMap [ rr:column "Name" ] ].
Im vorherigen Beispiel definiert die Zuordnung Graph-Knoten, die Freund-eines-Freundes-Beziehungen zwischen Personen in einer Student
-Tabelle zuordnen.
Weitere Informationen zum Erstellen von Graph-Zuordnungsregeln mit SPARQL R2RML finden Sie in der W3C-Spezifikation R2RML: RDB to RDF Mapping Language
Datentypen für die Migration von Gremlin und R2RML zu Amazon Neptune als Ziel
AWS DMS führt eine Datentypzuordnung von Ihrem SQL-Quellendpunkt zu Ihrem Neptune-Ziel auf zwei Arten durch. Welche Art Sie verwenden, hängt vom Graph-Zuordnungsformat ab, das Sie zum Laden der Neptune-Datenbank verwenden:
-
Apache TinkerPop Gremlin, mit einer JSON-Darstellung der Migrationsdaten.
-
SPARQL von W3C, unter Verwendung einer R2RML-Darstellung der Migrationsdaten.
Weitere Informationen zu diesen beiden Graph-Zuordnungsformaten finden Sie unter Angeben von Graph-Zuordnungsregeln mit Gremlin und R2RML für Amazon Neptune als Ziel.
Nachfolgend finden Sie Beschreibungen der Datentypzuordnungen für jedes Format.
Datentypzuordnungen von SQL-Quelle auf Gremlin-Ziel
Die folgende Tabelle zeigt die Datentypzuordnungen von einer SQL-Quelle auf ein Gremlin-formatiertes Ziel.
AWS DMS ordnet einen beliebigen nicht aufgelisteten SQL-Quelldatentyp einem Gremlin-String
zu.
SQL-Quelldatentypen |
Gremlin-Zieldatentypen |
---|---|
NUMERIC (und Varianten) |
Double |
DECIMAL |
|
TINYINT |
Byte |
SMALLINT |
Short |
INT, INTEGER |
Int |
BIGINT |
Long |
FLOAT |
Float |
DOUBLE PRECISION |
|
REAL |
Double |
BIT |
Boolean |
BOOLEAN |
|
DATE |
Date |
TIME |
|
TIMESTAMP |
|
CHARACTER (und Varianten) |
String |
Weitere Informationen zu den Gremlin-Datentypen zum Laden von Neptune finden Sie unter Gremlin-Datentypen im Neptune-Benutzerhandbuch.
SQL-Quell-zu-R2RML-Zieldatentyp-Zuordnungen (RDF)
Die folgende Tabelle zeigt die Datentypzuordnungen von einer SQL-Quelle zu einem R2RML-formatierten Ziel.
Bei allen aufgelisteten RDF-Datentypen wird zwischen Groß- und Kleinschreibung unterschieden, mit Ausnahme des RDF-Literal. AWS DMS ordnet jeden nicht aufgelisteten SQL-Quelldatentyp einem RDF-Literal zu.
Ein RDF-Literal ist eine von einer Vielzahl von wörtlichen lexikalischen Formen und Datentypen. Weitere Informationen finden Sie unter RDF-Literale
SQL-Quelldatentypen |
R2RML-(RDF-)Zieldatentypen |
---|---|
BINARY (und Varianten) |
xsd:hexBinary |
NUMERIC (und Varianten) |
xsd:decimal |
DECIMAL |
|
TINYINT |
xsd:integer |
SMALLINT |
|
INT , INTEGER |
|
BIGINT |
|
FLOAT |
xsd:double |
DOUBLE PRECISION |
|
REAL |
|
BIT |
xsd:boolean |
BOOLEAN |
|
DATE |
xsd:date |
TIME |
xsd:time |
TIMESTAMP |
xsd:dateTime |
CHARACTER (und Varianten) |
RDF-Literal |
Weitere Informationen zu den RDF-Datentypen zum Laden von Neptune und zu ihren Zuordnungen zu SQL-Quelldatentypen finden Sie unter Datentypkonvertierungen
Einschränkungen bei der Verwendung von Amazon Neptune als Ziel
Bei der Verwendung von Neptune als Ziel gelten die folgenden Einschränkungen:
-
AWS DMS unterstützt derzeit nur Volllastaufgaben für die Migration zu einem Neptune-Ziel. Die CDC-Migration (CDC = Change Data Capture) zu einem Neptune-Ziel wird nicht unterstützt.
-
Stellen Sie sicher, dass in Ihrer Neptune-Zieldatenbank alle Daten manuell gelöscht werden, bevor Sie die Migrationsaufgabe starten, wie in den folgenden Beispielen zu sehen ist.
Um alle Daten (Eckpunkte und Edges) innerhalb des Graphen zu löschen, führen Sie den folgenden Gremlin-Befehl aus.
gremlin> g.V().drop().iterate()
Um Eckpunkte mit dem Label
'customer'
zu löschen, führen Sie den folgenden Gremlin-Befehl aus.gremlin> g.V().hasLabel('customer').drop()
Anmerkung
Es kann einige Zeit dauern, bis ein großes Dataset gelöscht wird. Möglicherweise möchten Sie
drop()
mit einem Limit iterieren, z. B.limit(1000)
.Um Edges mit dem Label
'rated'
zu löschen, führen Sie den folgenden Gremlin-Befehl aus.gremlin> g.E().hasLabel('rated').drop()
Anmerkung
Es kann einige Zeit dauern, bis ein großes Dataset gelöscht wird. Möglicherweise möchten Sie
drop()
mit einem Limit iterieren, z. B.limit(1000)
. -
Der DMS-API-Vorgang
DescribeTableStatistics
kann aufgrund der Art der Neptune-Graph-Datenstrukturen ungenaue Ergebnisse zu einer bestimmten Tabelle zurückgeben.Während der Migration scannt AWS DMS jede Quelltabelle und verwendet die Graph-Zuordnung, um die Quelldaten in einen Neptune-Graphen zu konvertieren. Die konvertierten Daten werden zuerst im S3-Bucket-Ordner gespeichert, der für den Zielendpunkt angegeben ist. Wenn die Quelle gescannt wird und diese zwischengeschalteten S3-Daten erfolgreich generiert werden, geht
DescribeTableStatistics
davon aus, dass die Daten erfolgreich in die Neptune-Zieldatenbank geladen wurden. Aber das ist nicht immer wahr. Um zu überprüfen, ob die Daten für eine bestimmte Tabelle korrekt geladen wurden, vergleichen Sie diecount()
-Rückgabewerte an beiden Enden der Migration für diese Tabelle.Im folgenden Beispiel hat AWS DMS eine
customer
-Tabelle aus der Quelldatenbank geladen, der das Label'customer'
im Neptune-Zieldatenbank-Graphen zugewiesen ist. Sie können sicherstellen, dass dieses Label in die Zieldatenbank geschrieben wird. Vergleichen Sie dazu die Anzahl der in der Quelldatenbank verfügbarencustomer
-Zeilen mit der Anzahl der mit'customer'
beschrifteten Zeilen, die nach Abschluss der Aufgabe in die Neptune-Zieldatenbank geladen wurden.Führen Sie die folgenden Schritte aus, um die Anzahl der Kundenzeilen aus der Quelldatenbank mithilfe von SQL abzurufen.
select count(*) from customer;
Um die Anzahl der beschrifteten
'customer'
-Zeilen zu erhalten, die mit Gremlin in den Zieldatenbank-Graph geladen wurden, führen Sie Folgendes aus.gremlin> g.V().hasLabel('customer').count()
-
Wenn derzeit eine einzelne Tabelle nicht geladen werden kann, schlägt die gesamte Aufgabe fehl. Im Gegensatz zu einem relationalen Datenbankziel sind Daten in Neptune stark verbunden, was es in vielen Fällen unmöglich macht, eine Aufgabe fortzusetzen. Wenn eine Aufgabe aufgrund dieser Art von Datenladefehler nicht erfolgreich fortgesetzt werden kann, erstellen Sie eine neue Aufgabe, um die Tabelle zu laden, die nicht geladen werden konnte. Bevor Sie diese neue Aufgabe ausführen, löschen Sie die teilweise geladene Tabelle manuell aus dem Neptune-Ziel.
Anmerkung
Sie können eine Aufgabe fortsetzen, bei der die Migration zu einem Neptune-Ziel fehlschlägt, wenn der Fehler behoben werden kann (z. B. ein Netzwerk-Transitfehler).
-
AWS DMS unterstützt die meisten Standards für R2RML. Bestimmte R2RML-Standards, einschließlich inverser Ausdrücke, Verknüpfungen und Ansichten, werden jedoch von AWS DMS nicht unterstützt. Eine Problemumgehung für eine R2RML-Ansicht besteht darin, eine entsprechende benutzerdefinierte SQL-Ansicht in der Quelldatenbank zu erstellen. Verwenden Sie in der Migrationsaufgabe die Tabellenzuordnung, um die Ansicht als Eingabe auszuwählen. Ordnen Sie dann die Ansicht einer Tabelle zu, die dann von R2RML verwendet wird, um Diagrammdaten zu generieren.
-
Wenn Sie Quelldaten mit nicht unterstützten SQL-Datentypen migrieren, sind die sich daraus ergebenen Zieldaten möglicherweise nicht ganz genau. Weitere Informationen finden Sie unter Datentypen für die Migration von Gremlin und R2RML zu Amazon Neptune als Ziel.
-
AWS DMS unterstützt die Migration von LOB-Daten zu einem Neptune-Ziel nicht.