將資料從 Amazon DynamoDB 移轉至 Oracle NoSQL Database Cloud Service

使用 Oracle NoSQL Database Migrator 將資料從 Amazon DynamoDB 移轉至 Oracle NoSQL Database Cloud Service 的選項有兩種:

  • 使用 Oracle NoSQL 預設綱要
  • 使用自訂架構

這兩個選項都需要一個配置 JSON 檔案,其中包含來源檔案和目標資料庫 (接收器) 的相關資訊。在這兩種情況下,來源都是 Amazon DynamoDB 格式的 JSON 檔案,儲存在 Amazon S3 Object Storage 中,而目標是 Oracle NoSQL Database Cloud Service 資料庫。由於 Amazon DynamoDB 是無綱要資料庫,因此建議您使用 Oracle NoSQL 預設綱要進行移轉。

使用 Oracle NoSQL 預設綱要移轉資料

使用預設綱要進行移轉時,會建立一個新的 Oracle NoSQL Database Cloud Service 表格,其中包含兩個或三個資料欄:分割區索引鍵、排序索引鍵 (選擇性) 以及文件。分割區索引鍵和排序索引鍵會從 Amazon DynamoDB 表格移轉至 Oracle NoSQL Database Cloud Service 表格。在文件資料欄中,所有剩餘的 Amazon DynamoDB 屬性都會以 JSON 格式聚總。

下列步驟描述如何使用 Oracle NoSQL 預設綱要移轉資料。

  1. 在 AWS 主控台中,為將存取匯出 Amazon S3 物件儲存體之 Amazon DynamoDB 資料的使用者建立存取金鑰 (如果還沒有存取金鑰)。
    建議您建立新使用者,並為使用者建立新的存取金鑰。請勿為 root Amazon 帳號使用者建立存取金鑰。建立存取金鑰時,必須提供使用案例。請務必使用「 AWS 外部執行的應用程式:您計畫使用此存取金鑰認證資料中心內執行的工作負載,或 AWS 以外的其他基礎架構 (需要存取您的 AWS 資源) 」使用案例。如需建立使用者或存取金鑰的詳細資訊,請參閱檢閱文件一節。
    請注意存取金鑰和機密存取金鑰。這些不會再顯示。
  2. 建立 Amazon S3 儲存桶 (如果還沒有儲存桶)。請注意儲存桶名稱、區域以及儲存桶 URL。
    如需詳細資訊,請參閱檢閱文件一節中的建立儲存桶
  3. 選取 Amazon DynamoDB 服務,然後選取要移轉至 Oracle NoSQL Database Cloud ServiceAmazon DynamoDB 表格。
    在「一般資訊」下,記下分割區索引鍵的名稱和類型以及排序索引鍵屬性。
  4. 按一下 Amazon DynamoDB 服務功能表中的匯出至 S3 ,然後按一下匯出至 S3
  5. 選取要匯出之表格的名稱,然後選取將匯出資料的儲存桶名稱 (步驟 2 中建立的儲存桶名稱)。
  6. 設定匯出設定值:
    • 選取完整匯出
    • 選取 DynamoDB JSON 以取得匯出的檔案格式。
    • 選取用於加密的預設 Amazon S3 金鑰。
    • 啟用 PITR (時間點復原)。匯出表格所需。
  7. 按一下匯出
    在匯出進行時記下匯出 ID。如需有關匯出的詳細資訊,請參閱 DynamoDB 資料匯出至 Amazon S3:其運作方式
  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 檔案中。Oracle NoSQL Database Migrator 會使用此 API 金鑰將 Amazon DynamoDB 格式的 JSON 檔案上傳至表格。
  11. 建立 Oracle NoSQL Database Cloud Service 表格的區間 (如果還沒有的話) .
    記下區間名稱。
  12. 建立運算執行處理。
    此運算執行處理將執行 Oracle NoSQL Database 移轉器軟體。永遠免費運算執行處理 (VM.Standard.E4)。具有 1 個 OCPU 和 16GB 記憶體的 Flex 充足且符合成本效益。
  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 二進位檔 (如果您尚未安裝)。請參閱「複查軟體需求 (Review Software Requirements)」小節以取得詳細資訊。
  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 將私密金鑰 PEM 檔案從步驟 10 上傳至運算執行處理 opc user 的本位目錄 (前一步驟解壓縮 Oracle NoSQL Database Migrator)。
  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 移轉器表格,然後從 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 S3 物件儲存體之 Amazon DynamoDB 資料的使用者建立存取金鑰 (如果還沒有存取金鑰)。
    建議您建立新使用者,並為使用者建立新的存取金鑰。請勿為 root Amazon 帳號使用者建立存取金鑰。建立存取金鑰時,必須提供使用案例。請務必使用「 AWS 外部執行的應用程式:您計畫使用此存取金鑰認證資料中心內執行的工作負載,或 AWS 以外的其他基礎架構 (需要存取您的 AWS 資源) 」使用案例。如需建立使用者或存取金鑰的詳細資訊,請參閱檢閱文件一節。
    請注意,產生的存取金鑰和秘密存取金鑰將不會再顯示。
  2. 建立 Amazon S3 儲存桶 (如果還沒有儲存桶)。請注意儲存桶名稱、區域以及儲存桶 URL。
    如需詳細資訊,請參閱檢閱文件一節中的建立儲存桶
  3. 選取 Amazon DynamoDB 服務,然後選取要移轉至 Oracle NoSQL Database Cloud ServiceAmazon DynamoDB 表格。
    在「一般資訊」下,記下分割區索引鍵的名稱和類型以及排序索引鍵屬性。請注意表格中的其他屬性及其類型。
  4. 按一下 Amazon DynamoDB 服務功能表中的匯出至 S3 ,然後按一下匯出至 S3
  5. 選取要匯出之表格的名稱,然後選取將匯出資料的儲存桶名稱 (步驟 2 中建立的儲存桶名稱)。
  6. 設定匯出設定值:
    • 選取完整匯出
    • 選取 DynamoDB JSON 以取得匯出的檔案格式。
    • 選取用於加密的預設 Amazon S3 金鑰。
    • 啟用 PITR (時間點復原)。匯出表格所需。
  7. 按一下匯出
    在匯出進行時記下匯出 ID。如需有關匯出的詳細資訊,請參閱 DynamoDB 資料匯出至 Amazon S3:其運作方式
  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 檔案中。Oracle NoSQL Database Migrator 會使用此 API 金鑰將 Amazon DynamoDB 格式的 JSON 檔案上傳至表格。
  11. 建立 Oracle NoSQL Database Cloud Service 表格的區間 (如果還沒有的話) .
    記下區間名稱。
  12. 建立運算執行處理。
    此運算執行處理將執行 Oracle NoSQL Database 移轉器軟體。永遠免費運算執行處理 (VM.Standard.E4)。具有 1 個 OCPU 和 16GB 記憶體的 Flex 充足且符合成本效益。
  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 二進位檔 (如果您尚未安裝)。請參閱「複查軟體需求 (Review Software Requirements)」小節以取得詳細資訊。
  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 將私密金鑰 PEM 檔案從步驟 10 上傳至運算執行處理 opc user 的本位目錄 (前一步驟解壓縮 Oracle NoSQL Database Migrator)。
  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) 敘述句來建立新的 Oracle NoSQL Database Cloud Service 表格,其屬性與從步驟 3 的 Amazon DynamoDB 表格收集的屬性類似。以下是建立新 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 移轉器表格,然後從 Amazon S3 物件儲存的儲存桶讀取 Amazon DynamoDB 格式的 JSON 檔案,然後將這些檔案的資料匯入至新建立的表格。