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

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

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

這兩個選項都需要一個配置 JSON 檔案,其中包含來源檔案和目標資料庫 (接收器) 的相關資訊。在這兩種情況下,來源都是 MongoDB 格式的 JSON 檔案,儲存在 OCI Object Storage 中,而目標是 Oracle NoSQL Database Cloud Service 資料庫。使用自訂綱要時,組態 JSON 檔案必須包含 transforms 區段。

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

使用預設綱要進行移轉時,會建立一個新的 Oracle NoSQL Database Cloud Service 表格,其中包含兩個資料欄:iddocument。對於 MongoDB JSON 匯出檔案中的每個項目,_id 資料欄會移轉至 Oracle NoSQL Database Cloud Service 表格中的 id,而 MongoDB JSON 匯出檔案的其他資料欄則會聚總在新的 document 資料欄中。

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

  1. 登入 MongoDB 並執行 mongoexport,將資料收集匯出至 MongoDB 格式的 JSON 檔案。例如:
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. 使用 Oracle Linux 分割公用程式將 MongoDB JSON 檔案分成多個 JSON 檔案,每個記錄超過 13,500 筆,將 MongoDB JSON 檔案分割成 13,500 筆。例如:
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. 登入 OCI 主控台以建立 OCI 物件儲存儲存桶 (如果還沒有儲存桶) .
    請注意儲存桶名稱和命名空間
  4. 使用 OCI 主控台或 REST API 將步驟 2 中的檔案從步驟 3 上傳至儲存桶。
  5. 在 OCI 主控台中,為將擁有目標 Oracle NoSQL Database Cloud Service 表格的 OCI 使用者建立 API 金鑰。此使用者必須具備建立及管理表格的權限。
    請注意使用者 OCID、租用戶 OCID、指紋以及 OCI 區域 ID。將私密金鑰和公開金鑰儲存在 PEM 檔案中。Oracle NoSQL Database Migrator 會使用此 API 金鑰擷取 MongoDB 格式的 JSON 檔案、建立新表格,然後將資料從 MongoDB JSON 檔案上傳至表格。
  6. 建立 Oracle NoSQL Database Cloud Service 表格的區間 (如果還沒有的話) .
    記下區間名稱。
  7. 建立運算執行處理。
    此運算執行處理將執行 Oracle NoSQL Database 移轉器軟體。永遠免費運算執行處理 (VM.Standard.E4)。具有 1 個 OCPU 和 16GB 記憶體的 Flex 充足且符合成本效益。
  8. 使用 SSH 以 opc user 的身分登入新的運算執行處理,以如下方式安裝 Java 11:
    [opc@oci-compute ~]$ sudo yum install java-11
  9. 下載 Oracle NoSQL Database Migrator 1.5.0 二進位檔 (如果您尚未安裝)。請參閱「複查軟體需求 (Review Software Requirements)」小節以取得詳細資訊。
  10. 使用 SCP 將 Oracle NoSQL Database Migrator ZIP 檔案上傳至新運算執行處理中的 opc user's 本位目錄。
  11. 使用 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]$
  12. 使用 SCP 將私密金鑰 PEM 檔案從步驟 5 上傳至上一個步驟解壓縮 Oracle NoSQL Database Migrator 之運算執行處理 opc user 的本位目錄。
  13. 使用 SSH 以 opc user 的身分登入運算執行處理,以建立 OCI 識別檔案。在 /home/opc/.oci 目錄中以下列內容建立 OCI 識別檔案:
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_5
    fingerprint=fingerprint_from_step_5
    tenancy=tenancy_OCID_from_step_5
    region=region_ID_from_step_5
    key_file=full_path_to_private_key_PEM_file_uploaded_step_12
  14. 在運算執行處理中,將目錄變更為 nosql-migrator-1.5.0 子目錄。建立一個移轉組態 JSON 檔案,其中包含來源和目標 (接收器) 的相關資訊,如下所示:
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-mongodbjson-bucket_def-schema.json 
    {
       "source":{
          "type":"object_storage_oci",
          "format":"mongodb_json",
          "endpoint":"https://objectstorage.region_ID_from_step_5.oraclecloud.com",
          "namespace":"namespace_from_step_3",
          "bucket":"bucket_name_from_step_3",
          "prefix":"source_json_filename_or_prefix_from_step_2",
          "credentials":"/home/opc/.oci/config",
          "credentialsProfile":"default"
       },
       "sink":{
          "type":"nosqldb_cloud",
          "endpoint":"https://nosql.oci_region_ID_from_step_5.oci.oraclecloud.com",
          "table":"new_Oracle_NoSQL_Database_Cloud_Service_table_name",
          "schemaInfo":{
             "defaultSchema":true,
             "readUnits":50,
             "writeUnits":50,
             "storageSize":25
          },
          "compartment":"compartment_name_from_step_6",
          "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]$
  15. 使用 Oracle NoSQL Database Migrator 及上一個步驟中建立的移轉組態 JSON 檔案來執行資料移轉,如下所示:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket_def_schema.json
    移轉工作會使用預設綱要建立新的 Oracle NoSQL Database 移轉器表格,然後從 OCI Object Storage 讀取 MongoDB 格式的 JSON 檔案,然後將這些檔案的資料匯入新建立的表格。

使用自訂綱要移轉資料

使用自訂綱要進行移轉時,新 Oracle NoSQL Database Cloud Service 表格的定義必須與 MongoDB 表格的綱要類似。NoSQL 資料庫移轉程式組態檔必須包含轉換項目,指示 NoSQL 資料庫移轉程式如何在新表格中將資料欄 _id 轉換成 id

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

  1. 登入 MongoDB 並執行 mongoexport,將資料收集匯出至 MongoDB 格式的 JSON 檔案。例如:
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. 使用 Oracle Linux 分割公用程式將 MongoDB JSON 檔案分成多個 JSON 檔案,每個記錄超過 13,500 筆,將 MongoDB JSON 檔案分割成 13,500 筆。例如:
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. 使用 Oracle Linux catvi 命令檢查產生的 MongoDB 格式化 JSON 檔案。請注意下列事項:
    • 記下每個資料欄的名稱和資料類型。您可以使用此資訊來建立 Oracle NoSQL Database Cloud Service 表格綱要資料定義語言 (DDL)。
    • 第一欄的名稱必須是 id。其餘資料欄的名稱和類型應與 MongoDB JSON 檔案中的名稱和類型相同。
  4. 將綱要 DDL 儲存至檔案。綱要 DDL 應該類似下列項目:
    $ cat collection_name.ddl
    CREATE TABLE table_name ( id string, column_2_name column_2_type, column_n_name column_n_type, PRIMARY KEY ( id ) )
  5. 登入 OCI 主控台以建立 OCI 物件儲存儲存桶 (如果還沒有儲存桶) .
    請注意儲存桶名稱和命名空間。
  6. 使用 OCI 主控台或 REST API 將檔案從步驟 2 和步驟 3 上傳至步驟 5 中建立的新儲存桶。
  7. 在 OCI 主控台中,為將擁有目標 Oracle NoSQL Database Cloud Service 表格的 OCI 使用者建立 API 金鑰。此使用者必須具備建立及管理表格的權限。
    請注意使用者 OCID、租用戶 OCID、指紋以及 OCI 區域 ID。將私密金鑰和公開金鑰儲存在 PEM 檔案中。Oracle NoSQL Database Migrator 會使用此 API 金鑰擷取 MongoDB 格式的 JSON 檔案、建立新表格,然後將資料從 MongoDB JSON 檔案上傳至表格。
  8. 建立 Oracle NoSQL Database Cloud Service 表格的區間 (如果還沒有的話) .
    記下區間名稱。
  9. 建立運算執行處理。
    此運算執行處理將執行 Oracle NoSQL Database 移轉器軟體。永遠免費運算執行處理 (VM.Standard.E4)。具有 1 個 OCPU 和 16GB 記憶體的 Flex 充足且符合成本效益。
  10. 使用 SSH 以 opc user 的身分登入新的運算執行處理,以如下方式安裝 Java 11:
    [opc@oci-compute ~]$ sudo yum install java-11
  11. 下載 Oracle NoSQL Database Migrator 1.5.0 二進位檔 (如果您尚未安裝)。請參閱「複查軟體需求 (Review Software Requirements)」小節以取得詳細資訊。
  12. 使用 SCP 將 Oracle NoSQL Database Migrator ZIP 檔案上傳至新運算執行處理中的 opc user's 本位目錄。
  13. 使用 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]$
  14. 使用 SCP 將私密金鑰 PEM 檔案從步驟 7 上傳至上一個步驟解壓縮 Oracle NoSQL Database Migrator 之運算執行處理 opc user 的本位目錄。
  15. 使用 SSH 以 opc user 的身分登入運算執行處理,以建立 OCI 識別檔案。在 /home/opc/.oci 目錄中以下列內容建立 OCI 識別檔案:
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_7
    fingerprint=fingerprint_from_step_7
    tenancy=tenancy_OCID_from_step_7
    region=region_ID_from_step_7
    key_file=full_path_to_private_key_PEM_file_uploaded_step_14
  16. 在運算執行處理中,將目錄變更為 nosql-migrator-1.5.0 子目錄。建立一個移轉組態 JSON 檔案,其中包含來源和目標 (接收器) 的相關資訊,如下所示:
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-mongodbjson-bucket-src_schema.json 
    {
      "source": {
        "type": "object_storage_oci",
        "format": "mongodb_json",
        "endpoint": "https://objectstorage.region_ID_from_step_7.oraclecloud.com",
        "namespace": "namespace_from_step_5",
        "bucket": "bucket_name_from_step_5",
        "prefix": "source_json_filename_or_prefix_from_step_2",
        "schemaInfo": {
          "schemaObject": "collection_name_ddl_from_step_3"
        },
        "credentials": "/home/opc/.oci/config",
        "credentialsProfile": "DEFAULT"
      },
      "sink": {
        "type": "nosqldb_cloud",
        "endpoint": "https://nosql.oci_region_ID_from_step_7.oci.oraclecloud.com",
        "table": "new_Oracle_NoSQL_Database_Cloud_Service_table_name_from_step_3",
        "schemaInfo": {
          "useSourceSchema": true,
          "readUnits": 50,
          "writeUnits": 50,
          "storageSize": 25
        },
        "compartment": "compartment_name_from_step_8",
        "includeTTL": false,
        "credentials": "/home/opc/.oci/config",
        "credentialsProfile": "DEFAULT",
        "writeUnitsPercent": 90,
        "overwrite": true,
        "requestTimeoutMs": 5000
      },
      "transforms": {
        "renameFields": {
          "_id": "id"
        }
      },
      "abortOnError": true,
      "migratorVersion": "1.5.0"
    }
    [opc@oci-compute nosql-migrator-1.5.0]$
  17. 使用 Oracle NoSQL Database Migrator 及上一個步驟中建立的移轉組態 JSON 檔案來執行資料移轉,如下所示:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket-src_schema.json
    移轉工作會使用自訂綱要建立新的 Oracle NoSQL Database 移轉器表格,然後從 OCI Object Storage 讀取 MongoDB 格式的 JSON 檔案,然後將這些檔案的資料匯入新建立的表格。