ノート:

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

はじめに

Amazon DynamoDBは、Amazon Web Servicesが提供するフルマネージドのNoSQLデータベース・サービスで、高速でスケーラブルなキーバリューとドキュメント・データ・ストレージを提供します。

Oracle NoSQL Database Cloud Serviceは、Oracle Cloud Infrastructure上のOracle Corporationが提供するフルマネージドのNoSQLデータベース・サービスです。低レイテンシのパフォーマンスとクラウドネイティブ・アプリケーションの自動スケーリングを備えた、スケーラブルなキーバリューおよびJSONドキュメント・ストレージを提供します。

このチュートリアルでは、ツールOracle NoSQL Database Migratorを使用して、Amazon DynamoDBからOracle NoSQL Database Cloud Serviceにデータを移行する方法について説明します。

移行ワークフローでは、DynamoDBのネイティブなS3へのエクスポート機能を使用して、表データをDynamoDB JSON形式で抽出します。その後、エクスポートされたデータは、Oracle Cloud Infrastructure (OCI)で実行されているOracle NoSQL Database Cloud Serviceにインポートされます。

アーキテクチャ

移行ワークフローは、次のコンポーネントで構成されます。

イメージ

高レベルの移行プロセス

  1. DynamoDB表およびAmazon S3バケットをプロビジョニングします。
  2. 表でPITRを有効にし、DynamoDB表をAmazon S3バケットにエクスポートします。
  3. OCIコンピュート・インスタンスをプロビジョニングします
  4. ComputeにOracle NoSQL Database Migratorツールをインストールして構成します。
  5. OCIコンピュートでAWSおよびOCI認証を構成します。
  6. Amazon S3バケットからOCI NoSQLへの移行を実行
  7. Oracle NoSQL Databaseで移行データを検証します。

前提条件

始める前に次を確認します。

タスク1: Amazon DynamoDBリソースのプロビジョニング

このチュートリアルでは、この演習で必須となる基本的な必須リソースのみをAWSにプロビジョニングします。

1.AWSでのIAMユーザーの作成

DynamoDB操作を管理する専用IAMユーザーを作成します。

a. AWS Consoleにログイン

b. IAM、ユーザーに移動します

c. 「ユーザーの作成」をクリックします

d. プログラム的アクセスの割当て

イメージ

e. 確認し、「Create user」をクリックします。

⚠️ 本番環境では、最小権限のIAMポリシーを使用します。

2.AWSでのDynamoDB表の作成

a. AWS Consoleにサインインします。

b. DynamoDBに移動します。

イメージ

c. 「表の作成」をクリックします。

イメージ

d. 次を指定します:

e. デフォルト設定を受け入れて表を作成します。

f. 作成された表を確認します。

イメージ

3.DynamoDB表に新しい列を追加するか、サンプル・レコードを挿入します。

a. AWS Consoleにサインインします。

b. 表を選択します

c. 「処理」、「品目の作成」をクリックします。

イメージ

d. サンプル・レコードの挿入

イメージ

e. レコードの検証

イメージ

タスク2: Amazon S3バケットへのDynamoDB表のエクスポート

DynamoDBのネイティブなS3へのエクスポート機能を使用して、DynamoDB JSON形式の表データをS3バケットに抽出します。

1.Amazon S3バケットの作成

a. AWS Consoleへのサインイン

b. S3に移動します。

c. 新規バケットの作成

イメージ

d. デフォルト設定を維持

e. バケットの検証

イメージ

2.Point-In-Timeリカバリ(PITR)の有効化

DynamoDBエクスポートにはPoint-in-Timeリカバリが必要です。PITRは、エクスポートする前に表レベルで有効にする必要があります。

a. 表の選択

b. Point-in-Timeリカバリの有効化

イメージ

c. PITRを有効にした後。

イメージ

3. 表データをS3バケットにエクスポートします。

a. AWS Consoleにサインインします。

b. 表の選択

c. 「S3にエクスポート」をクリックします。

d. 選択:

e. 「エクスポート」をクリックします

イメージ

イメージ

4. エクスポートされたデータの検証

完了後:

イメージ

S3://bucket-name/AWSDynamoDB/ExportID/data/

次を含む:

イメージ

タスク3: Oracle Cloud Infrastructure環境の準備

1. コンパートメントの作成

a. OCIコンソールにサインインしてください。

b. アイデンティティとセキュリティ、コンパートメントに移動します。

c. Oracle NoSQL表の新しいコンパートメントを作成します。

2. コンピュート・インスタンスを作成する

a. Compute、Instancesに移動します。

b. 「インスタンスの作成」をクリックします。

c. 選択します:

このコンピュート・インスタンスは、Oracle NoSQL Database Migratorを実行します。

3.Oracle NoSQL Database Migratorのインストール

Oracle NoSQL Migratorは、DynamoDBエクスポート・ファイルをAmazon S3から読み取り、データをOCI Oracle NoSQLデータベースにインポートします。上で作成したOCIコンピュートにOracle NoSQL Migratorツールをインストールします。

a. Java 11のインストール

Oracle NoSQL Database Migratorでは、Javaがコンピュートで実行されている必要があります。

sudo yum install java-11

b. Extractマイグレータ・パッケージ

tar -zxvf V1053574-01.tar.gz
cd nosql-migrator-1.8.0/

インストールの検証:

[opc@nosql-migrator-1.8.0]\$ ls -ltr
total 332
-rw-r--r--. 1 opc opc    822 Nov 13 07:26 sdk_logging.properties
-rw-r--r--. 1 opc opc   1720 Nov 13 07:26 README.md
-rw-r--r--. 1 opc opc    897 Nov 13 07:26 log4j2.xml
-rw-r--r--. 1 opc opc   1870 Nov 13 07:26 LICENSE.txt
-rw-r--r--. 1 opc opc    488 Dec  2 07:11 Dockerfile
-rw-r--r--. 1 opc opc 234275 Dec 23 08:38 THIRD_PARTY_LICENSES.txt
-rwxr-xr-x. 1 opc opc  73063 Dec 23 08:38 runMigrator
-rw-r--r--. 1 opc opc   4640 Dec 23 08:38 CHANGELOG.md
drwxr-xr-x. 2 opc opc    124 Feb  6 02:50 lib

タスク4: セキュア・アクセス(OCIおよびAWS)の構成

Oracle NoSQL Migratorを使用するには、コンピュート・インスタンスがAmazon S3リソースとOracle Cloud Infrastructure (OCI)リソースの両方にアクセスできるように、セキュアなクラウド間認証を構成する必要があります。

1.OCI APIキーの作成

OCIコンソールで、ターゲットのOracle NoSQL Database Cloud Service表を所有するOCIユーザーのAPIキーを作成します。このユーザーには、Oracle NoSQL Database Cloud Service表を作成および管理する権限が必要です。

a. OCIコンソールで、「プロファイル」、「APIキー」を開きます。

b. 新しいAPIキーを追加します

イメージ

c. 非公開キーをダウンロードします。

d. レコード:

イメージ

2.OCI構成ファイルの作成

a. SSHを使用して、前に作成したコンピュート・インスタンスにopcユーザーとしてログインします。

b. すべてのOCIアイデンティティ・ファイルを/home/opc/.oci directoryの下に作成します。

秘密キー:

c. コンピュート上の秘密キーを/home/opc/.oci/ociuser.pemとしてコピーします。

/home/opc/.oci/ociuser.pem

構成ファイル:

\$vi /home/opc/.oci/config

次に例を示します:

[DEFAULT]
user=ocid1.user.oc1...
fingerprint=xx:xx:xx
tenancy=ocid1.tenancy.oc1...
region=ap-hyderabad-1
key_file=/home/opc/.oci/ociuser.pem

3.AWSアクセス・キーの作成

AWSコンソールで、Amazon DynamoDBデータがエクスポートされているAmazon S3 Object Storageにアクセスするユーザーのアクセス・キー(存在しない場合)を作成します。

a. AWS Consoleにサインインします。

b. IAM、ユーザー、セキュリティ資格証明に移動します

c. アクセス・キーの作成

ユース・ケース: AWSの外部で実行されているアプリケーション。

イメージ

4.AWS資格証明の構成

コンピュート・インスタンスに次のファイルを作成します:

/home/opc/.aws/config
/home/opc/.aws/credentials

構成の例:

[default]
region=<aws_region>

資格証明の例:

[default]
aws_access_key_id=<access_key>
aws_secret_access_key=<secret_key>

タスク5: Oracle NoSQLマイグレータの構成と実行

マイグレータには、次のことを説明するJSON構成ファイルが必要です。

1. 移行構成ファイルの作成

ソースおよびターゲット(シンク)に関する情報を含む移行構成JSONファイルを作成します。DynamoDB表のsinkノートDDBPartitionKeyおよびDDBSortKeyの下。

作成:

/home/opc/.oci/migrator-config-dynamodb-bucket_to_OCI.json

構成例:

{
  "source": {
    "type": "aws_s3",
    "format": "dynamodb_json",
    "s3URL": "https://bucket-name.s3.region.amazonaws.com/AWSDynamoDB/ExportID/data",
    "credentials": "/home/opc/.aws/credentials",
    "credentialsProfile": "default"
  },
  "sink": {
    "type": "nosqldb_cloud",
    "endpoint": "<oci_region>",
    "table": "Emp_records",
    "schemaInfo": {
      "defaultSchema": true,
      "DDBPartitionKey": "PartitionKey:string",
      "DDBSortKey": "SortKey:Number",
      "readUnits": 10,
      "writeUnits": 10,
      "storageSize": 1
    },
    "compartment": "<compartment_ocid>",
    "credentials": "/home/opc/.oci/config",
    "credentialsProfile": "DEFAULT",
    "overwrite": true
  },
  "abortOnError": false,
  "migratorVersion": "1.8.0"
}

デフォルトのスキーマ・モードの理解

defaultSchema: trueの場合:

Oracle NoSQLでは、次の表が作成されます。

すべての非キーDynamoDB属性は、document内に格納されます。

2. 移行の実行

コンピュート・インスタンスで、ディレクトリをnosql-migrator-1.8.0サブディレクトリに変更します

\$cd /home/opc/nosql-migrator-1.8.0
\$./runMigrator --config /home/opc/.oci/migrator-config-dynamodb-bucket_to_OCI.json

正常に実行されると、処理されたレコードの数が出力に表示されます。

正常な移行ログ:

[opc@.nosql-migrator-1.8.0]\$ ./runMigrator --config /home/opc/.oci/migrator-config-dynamodb-bucket_custom-schema.json

2026-02-11 13:32:35.279 [INFO] Configuration for migration:
{
  "source" : {
    "type" : "aws_s3",
    "format" : "dynamodb_json",
    "s3URL" : "https://dbmigbucket2oci.s3.ap-southeast-2.amazonaws.com/AWSDynamoDB/01770816089608-60282a9b/data",
    "credentials" : "/home/opc/.aws/credentials",
    "credentialsProfile" : "default"
  },
  "sink" : {
    "type" : "nosqldb_cloud",
    "endpoint" : "ap-hyderabad-1",
    "table" : "Emp_records",
    "schemaInfo" : {
      "defaultSchema" : true,
      "DDBPartitionKey" : "On_roll:string",
      "DDBSortKey" : "EmpID:Number",
      "readUnits" : 5,
      "writeUnits" : 50,
      "storageSize" : 5
    },
    "compartment" : "ocid1.compartment.oc1..aaaaaaaazliaxu2oqqcp3x6574nxkegv6lxbvh5lildyztb4fizbk2tqv2ia",
    "includeTTL" : false,
    "credentials" : "/home/opc/.oci/hyd_config",
    "credentialsProfile" : "DEFAULT",
    "writeUnitsPercent" : 90,
    "overwrite" : true,
    "requestTimeoutMs" : 5000
  },
  "abortOnError" : false,
  "migratorVersion" : "1.8.0"
}
2026-02-11 13:32:35.283 [INFO] creating source from given configuration:
2026-02-11 13:32:37.061 [INFO] source creation completed
2026-02-11 13:32:37.061 [INFO] creating sink from given configuration:
2026-02-11 13:32:38.253 [INFO] sink creation completed
2026-02-11 13:32:38.255 [INFO] creating migrator pipeline
2026-02-11 13:32:38.255 [INFO] [cloud sink] : start loading DDLs
2026-02-11 13:32:38.256 [INFO] [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS Emp_records (On_roll string,EmpID Number,document JSON, PRIMARY KEY(SHARD(On_roll),EmpID)),limits: [5, 50, 5]
2026-02-11 13:32:38.763 [INFO] [cloud sink] : completed loading DDLs
2026-02-11 13:32:39.426 [INFO] migration started
2026-02-11 13:32:39.635 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/kaqjylfjsm4dzaf52u2e6qstia.json.gz
2026-02-11 13:32:40.373 [INFO] Migration success for source kaqjylfjsm4dzaf52u2e6qstia. read=2,written=2,failed=0
2026-02-11 13:32:40.373 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/phz6b5k7mmytpcrqe72pfnj3zu.json.gz
2026-02-11 13:32:40.606 [INFO] Migration success for source phz6b5k7mmytpcrqe72pfnj3zu. read=0,written=0,failed=0
2026-02-11 13:32:40.606 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/rtm6rzjciq6jhds3dcp4pcro5u.json.gz
2026-02-11 13:32:40.839 [INFO] Migration success for source rtm6rzjciq6jhds3dcp4pcro5u. read=0,written=0,failed=0
2026-02-11 13:32:40.839 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/vrukpcnd6e3kddjg4qite4upzi.json.gz
2026-02-11 13:32:41.304 [INFO] Migration success for source vrukpcnd6e3kddjg4qite4upzi. read=1,written=1,failed=0
2026-02-11 13:32:41.304 [INFO] Migration is successful for all the sources.
2026-02-11 13:32:41.306 [INFO] migration completed.
Records provided by source=3, Records written to sink=3, Records failed=0,Records skipped=0.
Elapsed time: 0min 1sec 878ms
Migration completed.

タスク6: 移行の検証

Data Migratorが正常に実行されると、DynamoDBに挿入されたすべての表レコードがOracle NoSQLに表示されるようになります。

a. OCIコンソールを開きます。

b. 「データベース、Oracle NoSQL Database、表」に移動します。

イメージ

c. 適切なコンパートメントを選択します。

d. 移行された表を開きます。

イメージ

e. レコードを確認します。

イメージ

移行に関する考慮事項とベスト・プラクティス

容量計画

セキュリティ

大きい表

複数テラバイトのエクスポートの場合:

TTL処理

DynamoDB TTLが必要な場合は、次を有効にします。

"includeTTL": true

複数表移行

複数の表を移行する場合は、AWS CLIスクリプトを使用してエクスポートを自動化します。

まとめ

このチュートリアルでは、ネイティブ・エクスポート機能とOracle NoSQL Database Migratorを使用した、Amazon DynamoDBからOracle NoSQL Database Cloud Serviceへのエンドツーエンドの移行ワークフローを示します。

このアプローチにより、次のことが可能になります。

適切な計画、セキュアな構成および容量チューニングにより、組織はクラウド・プラットフォーム間でシームレスなNoSQLデータ移行を実現できます。

トラブル・シューティング

リソースのクリーン・アップ

このチュートリアルを完了した後、不要な料金を回避するために次のリソースを削除することを検討してください。

確認

著者 - Dharmesh Patel (Customer Success Services、プリンシパル・クラウド・アーキテクト)


その他の学習リソース

docs.oracle.com/learnの他のラボを調べるか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、Oracle Learning Explorerになるには、education.oracle.com/learning-explorerにアクセスしてください。

製品ドキュメントについては、Oracle Help Centerを参照してください。