Amazon DynamoDBからOracle NoSQL Database Cloud Serviceへのデータの移行

Oracle NoSQL Database Migratorを使用して、Amazon DynamoDBからOracle NoSQL Database Cloud Serviceにデータを移行するには、次の2つのオプションがあります:

  • Oracle NoSQLデフォルト・スキーマの使用
  • カスタム・スキーマの使用

どちらのオプションにも、ソース・ファイルとターゲット・データベース(シンク)に関する情報を含む構成JSONファイルが必要です。どちらのシナリオでも、ソースはAmazon S3オブジェクト・ストレージに格納されているAmazon DynamoDB形式のJSONファイルですが、ターゲットはOracle NoSQL Database Cloud Serviceデータベースです。Amazon DynamoDBはスキーマレス・データベースであるため、Oracle NoSQLデフォルト・スキーマを使用して移行することをお薦めします。

Oracle NoSQLデフォルト・スキーマを使用したデータの移行

デフォルト・スキーマを使用して移行する場合、パーティション・キー、ソート・キー(オプション)およびドキュメントという2つまたは3つの列を使用して新しいOracle NoSQL Database Cloud Service表が作成されます。パーティション・キーおよびソート・キーは、Amazon DynamoDB表からOracle NoSQL Database Cloud Service表に移行されます。残りのAmazon DynamoDB属性は、ドキュメント列でJSON形式で集計されます。

次のステップでは、Oracle NoSQLデフォルト・スキーマを使用してデータを移行する方法について説明します。

  1. AWSコンソールで、Amazon DynamoDBデータがエクスポートされるAmazon S3オブジェクト・ストレージにアクセスするユーザーのアクセス・キー(まだ存在しない場合)を作成します。
    新しいユーザーを作成し、そのユーザーの新しいアクセス・キーを作成することをお薦めします。ルートAmazonアカウント・ユーザーのアクセス・キーを作成しないでください。アクセス・キーを作成する場合は、ユースケースを指定する必要があります。AWS外部で実行されているアプリケーション: このアクセス・キーを使用して、データ・センターまたはAWSリソースにアクセスする必要があるAWS外部の他のインフラストラクチャで実行されているワークロードを認証する予定ですというユースケースを使用してください。ユーザーまたはアクセス・キーの作成の詳細は、「ドキュメントのレビュー」の項を参照してください。
    アクセス・キーと秘密アクセス・キーを書き留めます。これらは再度表示されません。
  2. Amazon S3バケットがまだ存在しない場合は、作成します。バケット名、リージョンおよびバケットURLを確認します。
    詳細は、ドキュメントのレビューの項のバケットの作成を参照してください。
  3. Amazon DynamoDBサービスを選択し、Oracle NoSQL Database Cloud Serviceに移行するAmazon DynamoDB表を選択します。
    「一般情報」で、パーティション・キーおよびソート・キー属性の名前とタイプを確認します。
  4. 「Amazon DynamoDB」サービス・メニューから「S3にエクスポート」をクリックし、「S3にエクスポート」をクリックします。
  5. エクスポートする表の名前を選択し、データのエクスポート先となるバケットの名前(ステップ2で作成したバケットの名前)を選択します。
  6. エクスポート設定の構成:
    • 「全体エクスポート」を選択します。
    • エクスポートされたファイル形式の場合は、DynamoDB JSONを選択します。
    • 暗号化用のデフォルトのAmazon S3キーを選択します。
    • PITR (ポイント・イン・タイム・リカバリ)を有効にします。表をエクスポートするために必要です。
  7. 「エクスポート」をクリックします。
    エクスポートの進行中にエクスポートIDを書き留めます。エクスポートの詳細は、Amazon S3へのDynamoDBデータ・エクスポート: 仕組みを参照してください。
  8. エクスポートが完了したら、AWSコンソールに移動し、Amazon S3サービスを選択します。
  9. データがエクスポートされたバケットを選択します。
    AWSDynamoDB/ExportIDという名前のバケット内に新しいディレクトリが作成されました。dataという名前のサブディレクトリが、エクスポートされたAmazon DynamoDB表データを含む一連のGZIP圧縮JSONファイルを含むこのディレクトリに作成されます。フォーマットされたJSONファイルの詳細は、ドキュメントのレビューの項のDynamoDB表エクスポート出力形式を参照してください。
  10. OCIコンソールで、ターゲットのOracle NoSQL Database Cloud Service表を所有するOCIユーザーのAPIキーを作成します。このユーザーには、Oracle NoSQL Database Cloud Service表を作成および管理する権限が必要です。
    ユーザーOCID、テナンシOCID、フィンガープリントおよびOCIリージョンIDに注意してください。秘密鍵と公開鍵を PEMファイルに保存します。このAPIキーは、Amazon DynamoDB形式のJSONファイルを表にアップロードするために、Oracle NoSQL Database Migratorによって使用されます。
  11. Oracle NoSQL Database Cloud Service表のコンパートメントがまだ存在しない場合は作成します。
    コンパートメント名に注意してください。
  12. コンピュート・インスタンスを作成します。
    このコンピュート・インスタンスは、Oracle NoSQL Database Migratorソフトウェアを実行します。Always-Free Computeインスタンス(VM.Standard.E4)。1 OCPUと16GBのメモリを搭載したフレックスで十分かつコスト効率に優れています。
  13. Oracle Linux 8でコンピュート・インスタンスを構成します。
  14. SSHを使用して、次のように新しいコンピュート・インスタンスにopc userとしてログインし、Java 11をインストールします:
    [opc@oci-compute ~]$ sudo yum install java-11
  15. Oracle NoSQL Database Migrator 1.5.0バイナリをまだダウンロードしていない場合はダウンロードしてください。詳細は、「ソフトウェア要件の確認」の項を参照してください。
  16. SCPを使用して、Oracle NoSQL Database Migrator ZIPファイルを新しいコンピュート・インスタンスのopc user'sホーム・ディレクトリにアップロードします。
  17. SSHを使用して、opc userとしてコンピュート・インスタンスにログインし、前のステップでダウンロードしたOracle NoSQL Database Migratorソフトウェアを解凍します。ファイルの内容は、/home/opc/nosql-migrator-1.5.0という名前の新しいディレクトリに解凍されます。ファイルは次のようにして解凍します。
    [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. SCPを使用して、ステップ10の秘密キーPEMファイルを、前のステップでOracle NoSQL Database Migratorが解凍されたコンピュート・インスタンスのopc userのホーム・ディレクトリにアップロードします。
  19. SSHを使用して、opc userとしてコンピュート・インスタンスにログインし、OCIアイデンティティ・ファイルを作成します。次の内容を使用して、/home/opc/.OCIディレクトリにOCIアイデンティティ・ファイルを作成します。
    [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. コンピュート・インスタンスのopc userとして、AWS構成ファイルおよび資格証明ファイルを作成します。次の内容を使用して、これらのファイルを/home/opc/.awsディレクトリに追加します。
    [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. コンピュート・インスタンスで、ディレクトリをnosql-migrator-1.5.0サブディレクトリに変更します。ソースおよびターゲット(シンク)に関する情報を含む移行構成JSONファイルを次のように作成します:
    [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. Oracle NoSQL Database Migratorおよび前のステップで作成した移行構成JSONファイルを使用して、次のようにデータ移行を実行します:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-dynamo-bucket_def_schema.json
    移行ジョブは、デフォルト・スキーマを使用して新しいOracle NoSQL Database Migrator表を作成し、Amazon S3オブジェクト・ストレージ・バケットからAmazon DynamoDB形式のJSONファイルを読み取って、それらのファイルから新しく作成された表にデータをインポートします。

カスタム・スキーマを使用したデータの移行

カスタム・スキーマを使用して移行する場合、Oracle NoSQL Database Cloud Service表データ定義言語(DDL)を使用して、新しいOracle NoSQL Database Cloud Service表をAmazon DynamoDB表のスキーマと同様の方法で定義する必要があります。新しい表の属性名およびタイプは、Amazon DynamoDB表の属性名およびタイプと同じである必要があります。パーティション・キーとソート・キーにはそれぞれ2048バイトと1024バイトの制限がありますが、Oracle NoSQL Database Cloud Serviceではこれらのキーは64バイトに制限されています。

  1. AWSコンソールで、Amazon DynamoDBデータがエクスポートされるAmazon S3オブジェクト・ストレージにアクセスするユーザーのアクセス・キー(まだ存在しない場合)を作成します。
    新しいユーザーを作成し、そのユーザーの新しいアクセス・キーを作成することをお薦めします。ルートAmazonアカウント・ユーザーのアクセス・キーを作成しないでください。アクセス・キーを作成する場合は、ユースケースを指定する必要があります。AWS外部で実行されているアプリケーション: このアクセス・キーを使用して、データ・センターまたはAWSリソースにアクセスする必要があるAWS外部の他のインフラストラクチャで実行されているワークロードを認証する予定ですというユースケースを使用してください。ユーザーまたはアクセス・キーの作成の詳細は、「ドキュメントのレビュー」の項を参照してください。
    生成されたアクセス・キーと秘密アクセス・キーは再度表示されないため、注意してください。
  2. Amazon S3バケットがまだ存在しない場合は、作成します。バケット名、リージョンおよびバケットURLを確認します。
    詳細は、ドキュメントのレビューの項のバケットの作成を参照してください。
  3. Amazon DynamoDBサービスを選択し、Oracle NoSQL Database Cloud Serviceに移行するAmazon DynamoDB表を選択します。
    「一般情報」で、パーティション・キーおよびソート・キー属性の名前とタイプを確認します。表のその他の属性とそのタイプに注意してください。
  4. 「Amazon DynamoDB」サービス・メニューから「S3にエクスポート」をクリックし、「S3にエクスポート」をクリックします。
  5. エクスポートする表の名前を選択し、データのエクスポート先となるバケットの名前(ステップ2で作成したバケットの名前)を選択します。
  6. エクスポート設定の構成:
    • 「全体エクスポート」を選択します。
    • エクスポートされたファイル形式の場合は、DynamoDB JSONを選択します。
    • 暗号化用のデフォルトのAmazon S3キーを選択します。
    • PITR (ポイント・イン・タイム・リカバリ)を有効にします。表をエクスポートするために必要です。
  7. 「エクスポート」をクリックします。
    エクスポートの進行中にエクスポートIDを書き留めます。エクスポートの詳細は、Amazon S3へのDynamoDBデータ・エクスポート: 仕組みを参照してください。
  8. エクスポートが完了したら、AWSコンソールに移動し、Amazon S3サービスを選択します。
  9. データがエクスポートされたバケットを選択します。
    AWSDynamoDB/ExportIDという名前のバケット内に新しいディレクトリが作成されました。dataという名前のサブディレクトリが、エクスポートされたAmazon DynamoDB表データを含む一連のGZIP圧縮JSONファイルを含むこのディレクトリに作成されます。フォーマットされたJSONファイルの詳細は、ドキュメントのレビューの項のDynamoDB表エクスポート出力形式を参照してください。
  10. OCIコンソールで、ターゲットのOracle NoSQL Database Cloud Service表を所有するOCIユーザーのAPIキーを作成します。このユーザーには、Oracle NoSQL Database Cloud Service表を作成および管理する権限が必要です。
    ユーザーOCID、テナンシOCID、フィンガープリントおよびOCIリージョンIDに注意してください。秘密鍵と公開鍵を PEMファイルに保存します。このAPIキーは、Amazon DynamoDB形式のJSONファイルを表にアップロードするために、Oracle NoSQL Database Migratorによって使用されます。
  11. Oracle NoSQL Database Cloud Service表のコンパートメントがまだ存在しない場合は作成します。
    コンパートメント名に注意してください。
  12. コンピュート・インスタンスを作成します。
    このコンピュート・インスタンスは、Oracle NoSQL Database Migratorソフトウェアを実行します。Always-Free Computeインスタンス(VM.Standard.E4)。1 OCPUと16GBのメモリを搭載したフレックスで十分かつコスト効率に優れています。
  13. Oracle Linux 8でコンピュート・インスタンスを構成します。
  14. SSHを使用して、次のように新しいコンピュート・インスタンスにopc userとしてログインし、Java 11をインストールします:
    [opc@oci-compute ~]$ sudo yum install java-11
  15. Oracle NoSQL Database Migrator 1.5.0バイナリをまだダウンロードしていない場合はダウンロードしてください。詳細は、「ソフトウェア要件の確認」の項を参照してください。
  16. SCPを使用して、Oracle NoSQL Database Migrator ZIPファイルを新しいコンピュート・インスタンスのopc user'sホーム・ディレクトリにアップロードします。
  17. SSHを使用して、opc userとしてコンピュート・インスタンスにログインし、前のステップでダウンロードしたOracle NoSQL Database Migratorソフトウェアを解凍します。ファイルの内容は、/home/opc/nosql-migrator-1.5.0という名前の新しいディレクトリに解凍されます。ファイルは次のようにして解凍します。
    [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. SCPを使用して、ステップ10の秘密キーPEMファイルを、前のステップでOracle NoSQL Database Migratorが解凍されたコンピュート・インスタンスのopc userのホーム・ディレクトリにアップロードします。
  19. SSHを使用して、opc userとしてコンピュート・インスタンスにログインし、OCIアイデンティティ・ファイルを作成します。次の内容を使用して、/home/opc/.OCIディレクトリにOCIアイデンティティ・ファイルを作成します。
    [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. コンピュート・インスタンスのopc userとして、AWS構成ファイルおよび資格証明ファイルを作成します。次の内容を使用して、これらのファイルを/home/opc/.awsディレクトリに追加します。
    [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. ディレクトリをnosql-migrator-1.5.0サブディレクトリに変更し、Oracle NoSQL Database Cloud Serviceデータ定義言語(DDL)文を作成して、ステップ3でAmazon DynamoDB表から収集された属性と同様の属性を持つ新しいOracle NoSQL Database Cloud Service表を作成します。新規Oracle NoSQL Database Cloud Service表の作成DDL文の例を次に示します:
    [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. コンピュート・インスタンスで、ディレクトリをnosql-migrator-1.5.0サブディレクトリに変更します。ソースおよびターゲット(シンク)に関する情報を含む移行構成JSONファイルを次のように作成します:
    [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. Oracle NoSQL Database Migratorおよび前のステップで作成した移行構成JSONファイルを使用して、次のようにデータ移行を実行します:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-dynamo-bucket_custom_schema.json
    移行ジョブでは、ステップ21で定義したカスタム・スキーマDDLを使用して新しいOracle NoSQL Database Migrator表が作成され、その後、Amazon S3オブジェクト・ストレージ・バケットからAmazon DynamoDB形式のJSONファイルが読み取られ、それらのファイルから新しく作成された表にデータがインポートされます。