Daten von Amazon DynamoDB zu Oracle NoSQL Database Cloud Service migrieren.

Es gibt zwei Optionen zum Migrieren von Daten von Amazon DynamoDB zu Oracle NoSQL Database Cloud Service mit dem Oracle NoSQL Database-Migrator:

  • Oracle NoSQL-Standardschema verwenden
  • Benutzerdefiniertes Schema verwenden

Für beide Optionen ist eine JSON-Konfigurationsdatei erforderlich, die Informationen zu den Quelldateien und der Zieldatenbank (Sink) enthält. In beiden Szenarios ist die Quelle im Amazon DynamoDB-Format formatierte JSON-Dateien, die in Amazon S3 Object Storage gespeichert sind, während das Ziel die Oracle NoSQL Database Cloud Service-Datenbank ist. Da Amazon DynamoDB eine schemalose Datenbank ist, wird die Migration mit einem Oracle NoSQL-Standardschema empfohlen.

Daten mit dem Oracle NoSQL-Standardschema migrieren

Bei der Migration mit dem Standardschema wird eine neue Oracle NoSQL Database Cloud Service-Tabelle mit zwei oder drei Spalten erstellt: Partitionsschlüssel, Sortierschlüssel (optional) und Dokument. Partitionsschlüssel und Sortierschlüssel werden aus der Amazon-Tabelle DynamoDB in die Oracle NoSQL Database Cloud Service-Tabelle migriert. Alle verbleibenden Amazon-DynamoDB-Attribute werden in der Dokumentspalte im JSON-Format aggregiert.

In den folgenden Schritten wird beschrieben, wie Daten mit dem Oracle-Standardschema NoSQL migriert werden.

  1. Erstellen Sie in der AWS-Konsole einen Zugriffsschlüssel (sofern noch nicht vorhanden) für den Benutzer, der auf den Amazon S3-Objektspeicher zugreift, in den die Amazon-Daten DynamoDB exportiert werden.
    Es wird empfohlen, einen neuen Benutzer zu erstellen und einen neuen Zugriffsschlüssel für den Benutzer zu erstellen. Erstellen Sie keinen Zugriffsschlüssel für den Root-Benutzer des Amazon-Kontos. Beim Erstellen eines Zugriffsschlüssels muss ein Anwendungsfall angegeben werden. Stellen Sie sicher, dass Sie den Anwendungsfall "Anwendung, die außerhalb von AWS ausgeführt wird: Sie planen, diesen Zugriffsschlüssel zur Authentifizierung von Workloads zu verwenden, die in Ihrem Data Center oder einer anderen Infrastruktur außerhalb von AWS ausgeführt werden und auf Ihre AWS-Ressourcen zugreifen müssen" verwenden. Weitere Informationen zum Erstellen von Benutzern oder Zugriffstasten finden Sie im Abschnitt "Dokumentation prüfen".
    Beachten Sie den Zugriffsschlüssel und den Secret-Zugriffsschlüssel. Diese werden nicht mehr angezeigt.
  2. Erstellen Sie einen Amazon S3-Bucket, falls noch kein Bucket vorhanden ist. Notieren Sie sich den Bucket-Namen, die Region und die Bucket-URL.
    Weitere Informationen finden Sie unter "Bucket erstellen" im Abschnitt "Dokumentation prüfen".
  3. Wählen Sie den Amazon-Service DynamoDB aus, und wählen Sie dann die Tabelle Amazon DynamoDB aus, die zu Oracle NoSQL Database Cloud Service migriert werden soll.
    Notieren Sie unter "Allgemeine Informationen" den Namen und Typ des Partitionsschlüssels, und sortieren Sie die Schlüsselattribute.
  4. Klicken Sie im Menü des Amazon-Service DynamoDB auf In S3 exportieren, und klicken Sie dann auf In S3 exportieren.
  5. Wählen Sie den Namen der zu exportierenden Tabelle aus, und wählen Sie dann den Namen des Buckets aus, in den die Daten exportiert werden sollen (den Namen des in Schritt 2 erstellten Buckets).
  6. Exporteinstellungen konfigurieren:
    • Wählen Sie Vollständiger Export.
    • Wählen Sie DynamoDB JSON als exportiertes Dateiformat aus.
    • Wählen Sie den Amazon S3-Standardschlüssel für die Verschlüsselung aus.
    • Aktivieren Sie PITR (Point-in-Time Recovery). Erforderlich für die zu exportierende Tabelle.
  7. Klicken Sie auf Exportieren.
    Beachten Sie die Export-ID, während der Export ausgeführt wird. Weitere Informationen zum Exportieren finden Sie unter "DynamoDB Datenexport nach Amazon S3: Funktionsweise".
  8. Navigieren Sie nach Abschluss des Exports zur AWS-Konsole, und wählen Sie den Amazon S3-Service aus.
  9. Wählen Sie den Bucket aus, in den die Daten exportiert wurden.
    Im Bucket AWSDynamoDB/ExportID wurde ein neues Verzeichnis erstellt. In diesem Verzeichnis wird ein Unterverzeichnis mit dem Namen data erstellt, das eine Reihe von GZIP-komprimierten JSON-Dateien mit den exportierten Amazon DynamoDB-Tabellendaten enthält. Weitere Informationen zu den formatierten JSON-Dateien finden Sie unter "DynamoDB Tabellenexportausgabeformat" im Abschnitt "Dokumentation prüfen".
  10. Erstellen Sie in der OCI-Konsole einen API-Schlüssel für den OCI-Benutzer, der Eigentümer der Oracle NoSQL Database Cloud Service-Zieltabelle ist. Dieser Benutzer muss über Berechtigungen zum Erstellen und Verwalten der Oracle NoSQL Database Cloud Service-Tabelle verfügen.
    Beachten Sie die Benutzer-OCID, die Mandanten-OCID, den Fingerprint und die OCI-Regions-ID. Speichern Sie die privaten und öffentlichen Schlüssel in PEM-Dateien. Dieser API-Schlüssel wird von Oracle NoSQL Database Migrator verwendet, um die formatierten JSON-Dateien im Amazon-DynamoDB-Format in die Tabelle hochzuladen.
  11. Erstellen Sie ein Compartment für die Oracle NoSQL Database Cloud Service-Tabelle, falls noch kein Compartment vorhanden ist.
    Notieren Sie sich den Compartment-Namen.
  12. Erstellen Sie eine Compute-Instanz.
    Auf dieser Compute-Instanz wird die Oracle NoSQL Database-Migrator-Software ausgeführt. Eine Instanz vom Typ "Immer kostenlos" (VM.Standard.E4). Flex mit 1 OCPU und 16 GB Arbeitsspeicher) ist ausreichend und kostengünstig.
  13. Konfigurieren Sie die Compute-Instanz mit Oracle Linux 8.
  14. Melden Sie sich mit SSH wie folgt als opc user bei der neuen Compute-Instanz an, um Java 11 zu installieren:
    [opc@oci-compute ~]$ sudo yum install java-11
  15. Laden Sie die Binärdateien von Oracle NoSQL Database Migrator 1.5.0 herunter, falls noch nicht geschehen. Weitere Einzelheiten finden Sie im Abschnitt "Softwareanforderungen prüfen".
  16. Laden Sie mit SCP die ZIP-Datei für den Oracle NoSQL Database-Migrator in das Home-Verzeichnis opc user's in der neuen Compute-Instanz hoch.
  17. Melden Sie sich mit SSH als opc user bei der Compute-Instanz an, um die im vorherigen Schritt heruntergeladene Oracle NoSQL Database-Migrator-Software zu dekomprimieren. Der Inhalt der Datei wird in ein neues Verzeichnis namens /home/opc/nosql-migrator-1.5.0 dekomprimiert. Dekomprimieren Sie die Datei wie folgt:
    [opc@oci-compute ~]$ unzip V1033765-1.zip
    [opc@oci-compute ~]$ ls -l
    total 61964
    drwxr-xr-x. 3 opc opc 4096 Feb 23 20:32 nosql-migrator-1.5.0
    -rw-r--r--. 1 opc opc 63446080 Feb 14 19:26 V1033765-01.zip
    [opc@jc-bastion-phx migrator]$
  18. Laden Sie mit SCP die Private-Key-PEM-Datei aus Schritt 10 in das Home-Verzeichnis der opc user der Compute-Instanz hoch, in der Oracle NoSQL Database Migrator im vorherigen Schritt dekomprimiert wurde.
  19. Melden Sie sich mit SSH als opc user bei der Compute-Instanz an, um eine OCI-Identitätsdatei zu erstellen. Erstellen Sie die OCI-Identitätsdatei im Verzeichnis /home/opc/.OCI mit dem folgenden Inhalt:
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_10
    fingerprint=fingerprint_from_step_10
    tenancy=tenancy_OCID_from_step_10
    region=region_ID_from_step_10
    key_file=full_path_to_private_key_PEM_file_uploaded_step_18
  20. Erstellen Sie als opc user in der Compute-Instanz AWS-Konfigurations- und Zugangsdatendateien. Fügen Sie diese Dateien mit dem folgenden Inhalt im Verzeichnis /home/opc/.aws hinzu:
    [opc@oci-compute .aws]$ cat config
    [default]
    region=bucket_region_from_step_2
    [opc@oci-compute .aws]$ cat credentials
    [default]
    aws_access_key_id=aws_access_key_id_from_step_1
    aws_secret_access_key=aws_access_key_secret_from_step_1
  21. Wechseln Sie in der Compute-Instanz das Verzeichnis in das Unterverzeichnis nosql-migrator-1.5.0. Erstellen Sie wie folgt eine JSON-Datei für die Migrationskonfiguration, die Informationen zur Quelle und zum Ziel enthält (Sink):
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-dynamodb-bucket_custom-schema.json 
    {
     "source" : {
     "type" : "aws_s3",
     "format" : "dynamodb_json",
     "s3URL" : "https://bucket_name_from_step_2.s3.bucket_region_from_step_2.amazonaws.c
    om/AWSDynamoDB/export_ID/data",
     "credentials" : "/home/opc/.aws/credentials",
     "credentialsProfile" : "default"
     },
     "sink" : {
     "type" : "nosqldb_cloud",
     "endpoint" : "https://nosql.oci_region_ID_from_step_11.oci.oraclecloud.com",
     "table" : "new_Oracle_NoSQL_Database_Cloud_Service_table_name",
     "schemaInfo" : {
     "defaultSchema" : true,
     "DDBPartitionKey" : "partition_key_name_from_step_3:type_from_step_3",
     "DDBSortKey" : "sort_key_name_from_step_3:type_from_step_3",
     "readUnits" : 50,
     "writeUnits" : 50,
     "storageSize" : 25
     },
     "compartment" : "compartment_name_from_step_11",
     "includeTTL" : false,
     "credentials" : "/home/opc/.oci/config",
     "credentialsProfile" : "DEFAULT",
     "writeUnitsPercent" : 90,
     "overwrite" : true,
     "requestTimeoutMs" : 5000
     },
     "abortOnError" : false,
     "migratorVersion" : "1.5.0"
    }
    [opc@oci-compute nosql-migrator-1.5.0]$
  22. Führen Sie die Datenmigration mit dem Oracle NoSQL Database-Migrator und der im vorherigen Schritt erstellten JSON-Datei der Migrationskonfiguration wie folgt aus:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-dynamo-bucket_def_schema.json
    Der Migrationsjob erstellt eine neue Oracle NoSQL Database-Migratortabelle mit dem Standardschema. Lesen Sie dann die formatierten JSON-Dateien im Amazon DynamoDB-Format aus dem Amazon S3-Objektspeicher-Bucket, um die Daten aus diesen Dateien in die neu erstellte Tabelle zu importieren.

Daten mit einem benutzerdefinierten Schema migrieren

Wenn Sie ein benutzerdefiniertes Schema für die Migration verwenden, muss die neue Oracle NoSQL Database Cloud Service-Tabelle ähnlich wie das Schema der Amazon-Tabelle DynamoDB mit einer Oracle NoSQL Database Cloud Service Table Data Definition Language (DDL) definiert werden. Die Attributnamen und -typen für die neue Tabelle müssen mit den Attributnamen und -typen in der Amazon-Tabelle DynamoDB übereinstimmen. Der Partitionsschlüssel und der Sortierschlüssel sind auf 2048 bzw. 1024 Byte begrenzt. In Oracle NoSQL Database Cloud Service sind diese Schlüssel auf 64 Byte begrenzt.

  1. Erstellen Sie in der AWS-Konsole einen Zugriffsschlüssel (sofern noch nicht vorhanden) für den Benutzer, der auf den Amazon S3-Objektspeicher zugreift, in den die Amazon-Daten DynamoDB exportiert werden.
    Es wird empfohlen, einen neuen Benutzer zu erstellen und einen neuen Zugriffsschlüssel für den Benutzer zu erstellen. Erstellen Sie keinen Zugriffsschlüssel für den Root-Benutzer des Amazon-Kontos. Beim Erstellen eines Zugriffsschlüssels muss ein Anwendungsfall angegeben werden. Stellen Sie sicher, dass Sie den Anwendungsfall "Anwendung, die außerhalb von AWS ausgeführt wird: Sie planen, diesen Zugriffsschlüssel zur Authentifizierung von Workloads zu verwenden, die in Ihrem Data Center oder einer anderen Infrastruktur außerhalb von AWS ausgeführt werden und auf Ihre AWS-Ressourcen zugreifen müssen" verwenden. Weitere Informationen zum Erstellen eines Benutzers oder von Zugriffsschlüsseln finden Sie im Abschnitt "Dokumentation prüfen".
    Beachten Sie den generierten Zugriffsschlüssel und den Secret-Zugriffsschlüssel, da diese nicht erneut angezeigt werden.
  2. Erstellen Sie einen Amazon S3-Bucket, falls noch kein Bucket vorhanden ist. Notieren Sie sich den Bucket-Namen, die Region und die Bucket-URL.
    Weitere Informationen finden Sie unter "Bucket erstellen" im Abschnitt "Dokumentation prüfen".
  3. Wählen Sie den Amazon-Service DynamoDB aus, und wählen Sie dann die Tabelle Amazon DynamoDB aus, die zu Oracle NoSQL Database Cloud Service migriert werden soll.
    Notieren Sie unter "Allgemeine Informationen" den Namen und Typ des Partitionsschlüssels, und sortieren Sie die Schlüsselattribute. Beachten Sie die anderen Attribute in der Tabelle und ihre Typen.
  4. Klicken Sie im Menü des Amazon-Service DynamoDB auf In S3 exportieren, und klicken Sie dann auf In S3 exportieren.
  5. Wählen Sie den Namen der zu exportierenden Tabelle aus, und wählen Sie dann den Namen des Buckets aus, in den die Daten exportiert werden sollen (den Namen des in Schritt 2 erstellten Buckets).
  6. Exporteinstellungen konfigurieren:
    • Wählen Sie Vollständiger Export.
    • Wählen Sie DynamoDB JSON als exportiertes Dateiformat aus.
    • Wählen Sie den Amazon S3-Standardschlüssel für die Verschlüsselung aus.
    • Aktivieren Sie PITR (Point-in-Time Recovery). Erforderlich für die zu exportierende Tabelle.
  7. Klicken Sie auf Exportieren.
    Beachten Sie die Export-ID, während der Export ausgeführt wird. Weitere Informationen zum Exportieren finden Sie unter "DynamoDB Datenexport nach Amazon S3: Funktionsweise".
  8. Navigieren Sie nach Abschluss des Exports zur AWS-Konsole, und wählen Sie den Amazon S3-Service aus.
  9. Wählen Sie den Bucket aus, in den die Daten exportiert wurden.
    Im Bucket AWSDynamoDB/ExportID wurde ein neues Verzeichnis erstellt. In diesem Verzeichnis wird ein Unterverzeichnis mit dem Namen data erstellt, das eine Reihe von GZIP-komprimierten JSON-Dateien mit den exportierten Amazon DynamoDB-Tabellendaten enthält. Weitere Informationen zu den formatierten JSON-Dateien finden Sie unter "DynamoDB Tabellenexportausgabeformat" im Abschnitt "Dokumentation prüfen".
  10. Erstellen Sie in der OCI-Konsole einen API-Schlüssel für den OCI-Benutzer, der Eigentümer der Oracle NoSQL Database Cloud Service-Zieltabelle ist. Dieser Benutzer muss über Berechtigungen zum Erstellen und Verwalten der Oracle NoSQL Database Cloud Service-Tabelle verfügen.
    Beachten Sie die Benutzer-OCID, die Mandanten-OCID, den Fingerprint und die OCI-Regions-ID. Speichern Sie die privaten und öffentlichen Schlüssel in PEM-Dateien. Dieser API-Schlüssel wird von Oracle NoSQL Database Migrator verwendet, um die formatierten JSON-Dateien im Amazon-DynamoDB-Format in die Tabelle hochzuladen.
  11. Erstellen Sie ein Compartment für die Oracle NoSQL Database Cloud Service-Tabelle, falls noch kein Compartment vorhanden ist.
    Notieren Sie sich den Compartment-Namen.
  12. Erstellen Sie eine Compute-Instanz.
    Auf dieser Compute-Instanz wird die Oracle NoSQL Database-Migrator-Software ausgeführt. Eine Instanz vom Typ "Immer kostenlos" (VM.Standard.E4). Flex mit 1 OCPU und 16 GB Arbeitsspeicher) ist ausreichend und kostengünstig.
  13. Konfigurieren Sie die Compute-Instanz mit Oracle Linux 8.
  14. Melden Sie sich mit SSH wie folgt als opc user bei der neuen Compute-Instanz an, um Java 11 zu installieren:
    [opc@oci-compute ~]$ sudo yum install java-11
  15. Laden Sie die Binärdateien von Oracle NoSQL Database Migrator 1.5.0 herunter, falls noch nicht geschehen. Weitere Einzelheiten finden Sie im Abschnitt "Softwareanforderungen prüfen".
  16. Laden Sie mit SCP die ZIP-Datei für den Oracle NoSQL Database-Migrator in das Home-Verzeichnis opc user's in der neuen Compute-Instanz hoch.
  17. Melden Sie sich mit SSH als opc user bei der Compute-Instanz an, um die im vorherigen Schritt heruntergeladene Oracle NoSQL Database-Migrator-Software zu dekomprimieren. Der Inhalt der Datei wird in ein neues Verzeichnis namens /home/opc/nosql-migrator-1.5.0 dekomprimiert. Dekomprimieren Sie die Datei wie folgt:
    [opc@oci-compute ~]$ unzip V1033765-1.zip
    [opc@oci-compute ~]$ ls -l
    total 61964
    drwxr-xr-x. 3 opc opc 4096 Feb 23 20:32 nosql-migrator-1.5.0
    -rw-r--r--. 1 opc opc 63446080 Feb 14 19:26 V1033765-01.zip
    [opc@jc-bastion-phx migrator]$
  18. Laden Sie mit SCP die Private-Key-PEM-Datei aus Schritt 10 in das Home-Verzeichnis der opc user der Compute-Instanz hoch, in der Oracle NoSQL Database Migrator im vorherigen Schritt dekomprimiert wurde.
  19. Melden Sie sich mit SSH als opc user bei der Compute-Instanz an, um eine OCI-Identitätsdatei zu erstellen. Erstellen Sie die OCI-Identitätsdatei im Verzeichnis /home/opc/.OCI mit dem folgenden Inhalt:
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_10
    fingerprint=fingerprint_from_step_10
    tenancy=tenancy_OCID_from_step_10
    region=region_ID_from_step_10
    key_file=full_path_to_private_key_PEM_file_uploaded_step_18
  20. Erstellen Sie als opc user in der Compute-Instanz AWS-Konfigurations- und Zugangsdatendateien. Fügen Sie diese Dateien mit dem folgenden Inhalt im Verzeichnis /home/opc/.aws hinzu:
    [opc@oci-compute .aws]$ cat config
    [default]
    region=bucket_region_from_step_2
    [opc@oci-compute .aws]$ cat credentials
    [default]
    aws_access_key_id=aws_access_key_id_from_step_1
    aws_secret_access_key=aws_access_key_secret_from_step_1
  21. Ändern Sie das Verzeichnis in das Unterverzeichnis nosql-migrator-1.5.0, und erstellen Sie dann eine Oracle NoSQL Database Cloud Service Data Definition Language-(DDL-)Anweisung, um eine neue Oracle NoSQL Database Cloud Service-Tabelle mit ähnlichen Attributen zu erstellen, die in Schritt 3 in der Amazon-Tabelle DynamoDB erfasst wurden. Im Folgenden finden Sie ein Beispiel für eine neue DDL-Anweisung zum Erstellen von Oracle NoSQL Database Cloud Service-Tabellen:
    [opc@oci-compute nosql-migrator-1.5.0]$ cat /home/opc/table_name.ddl 
    CREATE TABLE IF NOT EXISTS table_name (partition_key_name_from_step_3 
    type,sort_key_name_from_step_3 type, attribute_1 type, attribute_2 
    type, PRIMARY 
    KEY(SHARD(partition_key_name_from_step_3),sort_key_name_from_step_3))
  22. Wechseln Sie in der Compute-Instanz das Verzeichnis in das Unterverzeichnis nosql-migrator-1.5.0. Erstellen Sie wie folgt eine JSON-Datei für die Migrationskonfiguration, die Informationen zur Quelle und zum Ziel enthält (Sink):
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-dynamodb-bucket_custom-schema.json 
    {
      "source": {
        "type": "aws_s3",
        "format": "dynamodb_json",
        "s3URL": "https://bucket_name_from_step_2.s3.bucket_region_from_step_2.amazonaws.com/AWSDynamoDB/export_ID_from_step_7/data",
        "credentials": "/home/opc/.aws/credentials",
        "credentialsProfile": "default"
      },
      "sink": {
        "type": "nosqldb_cloud",
        "endpoint": "https://nosql.oci_region_ID_from_step_10.oci.oraclecloud.com",
        "table": "new_Oracle_NoSQL_Database_Cloud_Service_table_name",
        "schemaInfo": {
          "schemaPath": "/home/opc/nosql-migrator-1.5.0/table_name.ddl_from_step_21",
          "readUnits": 50,
          "writeUnits": 50,
          "storageSize": 25
        },
        "compartment": "compartment_name_from_step_11",
        "includeTTL": false,
        "credentials": "/home/opc/.oci/config",
        "credentialsProfile": "DEFAULT",
        "writeUnitsPercent": 90,
        "overwrite": true,
        "requestTimeoutMs": 5000
      },
      "abortOnError": false,
      "migratorVersion": "1.5.0"
    }
  23. Führen Sie die Datenmigration mit dem Oracle NoSQL Database-Migrator und der im vorherigen Schritt erstellten JSON-Datei der Migrationskonfiguration wie folgt aus:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-dynamo-bucket_custom_schema.json
    Der Migrationsjob erstellt eine neue Oracle NoSQL Database-Migratortabelle mit der in Schritt 21 definierten benutzerdefinierten Schema-DDL. Anschließend liest er die JSON-Datei(en) im Amazon DynamoDB-Format aus dem Amazon S3-Objektspeicher-Bucket, um die Daten aus diesen Dateien in die neu erstellte Tabelle zu importieren.