附註:

將資料從 Amazon DynamoDB 移轉至 Oracle NoSQL Database 表格

簡介

Amazon DynamoDB 是由 Amazon Web Services 提供的完全託管 NoSQL 資料庫服務,可提供快速且可擴展的索引鍵值和文件資料儲存。

Oracle NoSQL Database Cloud Service 是由 Oracle Corporation 在 Oracle Cloud Infrastructure 上提供的完全受管理的 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. 在運算上安裝並設定 Oracle NoSQL Database Migrator 工具。
  5. 在 OCI 運算上設定 AWS 和 OCI 認證。
  6. 執行從 Amazon S3 儲存桶移轉至 OCI NoSQL
  7. 驗證 Oracle NoSQL Database 中移轉的資料。

必備條件

在您開始前,請確認:

工作 1:佈建 Amazon DynamoDB 資源

在本教學課程中,我們將僅佈建 AWS 中的基本必要資源,這些資源對於本練習是必要的。

1. 在 AWS 中建立 IAM 使用者

建立專用 IAM 使用者以管理 DynamoDB 作業。

a. 登入 AWS 主控台

b. 瀏覽至 IAM、使用者

c. 按一下建立使用者

d. 指定程式設計存取權

圖像

e. 複查並按一下建立使用者。

⚠️在實際執行環境中,使用最低權限的 IAM 原則。

2. 在 AWS 中建立 DynamoDB 表格

a. 登入 AWS 主控台。

b. 瀏覽至 DynamoDB

圖像

c. 按一下建立表格

圖像

d. 指定:

e. 接受預設設定值並建立表格。

f. 複查建立的表格。

圖像

3. 在 DynamoDB 表格中新增資料欄或插入範例記錄。

a. 登入 AWS 主控台。

b. 選取表格

c. 按一下動作,建立項目

圖像

d. 插入樣本記錄

圖像

e. 驗證記錄

圖像

作業 2:將 DynamoDB 表格匯出至 Amazon S3 儲存桶

使用 DynamoDB 的原生匯出至 S3 功能,將 DynamoDB JSON 格式的表格資料擷取至 S3 儲存桶。

1. 建立 Amazon S3 儲存桶

a. 登入 AWS 主控台

b. 瀏覽至 S3

c. 建立新儲存桶

圖像

d. 保留預設設定

e. 驗證分組

圖像

2. 啟用時間點復原 (PITR)

DynamoDB 匯出需要時間點復原。必須先在表格層次啟用 PITR,再匯出。

a. 選取一個表格

b. 啟用時間點復原

圖像

c. 啟用 PITR 之後。

圖像

3. 將表格資料匯出至 S3 儲存桶。

a. 登入 AWS 主控台。

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. 瀏覽至運算、實例

b. 按一下建立執行處理

c. 您可以選取:

此運算執行處理會執行 Oracle NoSQL Database Migrator。

3. 安裝 Oracle NoSQL Database Migrator

Oracle NoSQL Migrator 會讀取 Amazon S3 的 DynamoDB 匯出檔案,然後將資料匯入 OCI Oracle NoSQL 資料庫。我們將會在上述其中一個 OCI 運算上安裝 Oracle NoSQL Migrator 工具。

a. 安裝 Java 11

Oracle NoSQL Database Migrator 需要在運算上執行 Java。

sudo yum install java-11

b. 擷取移轉程式套件

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 主控台中,開啟 Profile,API Keys

b. 新增 API 金鑰。

圖像

c. 下載私密金鑰。

d. 記錄:

圖像

2. 建立 OCI 組態檔

a. 使用 SSH 以 opc 使用者身分登入先前建立的運算執行處理。

b. 在 /home/opc/.oci directory 下建立所有 OCI 識別檔案。

私密金鑰:

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 主控台。

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 Migrator

移轉程式需要一個描述下列項目的 JSON 組態檔:

1. 建立移轉組態檔

建立移轉組態 JSON 檔案,其中包含來源和目標的相關資訊 (接收器)。在 DynamoDB 表格的接收端附註 DDBPartitionKeyDDBSortKey 下。

建立:

/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:驗證移轉

成功執行資料移轉程式後,所有插入 DynamoDB 中的表格記錄都應該顯示在 Oracle NoSQL 中。

a. 開啟 OCI 主控台。

b. 瀏覽至資料庫、Oracle NoSQL Database、表格

圖像

c. 選取適當的區間。

d. 開啟移轉的表格。

圖像

e. 驗證記錄。

圖像

移轉的考量和最佳做法

容量規劃

安全

大型表格

若為多 TB 匯出:

TTL 處理

如果需要 DynamoDB TTL,請啟用:

"includeTTL": true

多重表格移轉

如果移轉多個表格,請使用 AWS CLI 指令碼自動匯出。

結論

本教學課程示範使用原生匯出功能和 Oracle NoSQL Database Migrator,從 Amazon DynamoDB 移轉至 Oracle NoSQL Database Cloud Service 的端對端移轉工作流程。

此方法可讓您:

組織可以透過適當的規劃、安全組態和容量調整,實現跨雲端平台的無縫 NoSQL 資料移轉。

疑難排解

清除資源

完成本教學課程之後,請考慮移除下列資源以避免不必要的費用:

確認

作者 - Dharmesh Patel (客戶成功案例服務首席雲端架構師)


其他學習資源

docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center