Oracle NoSQL Database 移轉器參照

瞭解適用於 Oracle NoSQL Database Migrator 的來源、接收器及轉換組態範本參數。

本文包含下列主題:

參數

NoSQL 資料庫移轉器需要一個組態檔,供您定義所有參數以執行移轉活動。數個來源與接收器之間共用一些參數。本主題提供這些通用參數的清單。如需個別來源或槽位專屬的其他參數清單,請參閱對應的組態範本區段。

一般組態參數

下列為通用組態參數。如需範例,請參閱個別組態範本區段。

儲存桶

  • 用途:指定 OCI 物件儲存的儲存桶名稱,其中包含來源 / 接收器物件。

    確定必要的儲存桶已經存在於 OCI Object Storage 執行處理中,而且具備讀取 / 寫入權限。

  • 資料類型: string
  • 必要 (Y/N): Y

chunkSize

  • 用途:指定要儲存在接收器之 chunk 表格資料的大小上限。此值以 MB 為單位。在移轉期間,會將表格分割成 chunkSize 區塊,並將每個區塊以個別檔案寫入槽位。當要移轉的來源資料超過 chunkSize 值時,就會建立新的檔案。

    若未指定,預設為 32MB。有效值為 1 到 1024 之間的整數。

  • 資料類型:整數
  • 必要 (Y/N): N

credentials - 證明資料

  • 用途:指定包含 OCI 證明資料之檔案的絕對路徑。NoSQL 資料庫移轉程式會使用此檔案連線至 OCI 服務,例如 Oracle NoSQL Database Cloud Service 、OCI 物件儲存等等。

    預設值為 $HOME/.oci/config

    如需證明資料檔案的範例,請參閱範例組態

    附註:

    認證參數 credentialsuseInstancePrincipaluseDelegationToken 不能並存。只在組態樣板中指定其中一個參數。
  • 資料類型: string
  • 必要 (Y/N): N

credentialsProfile

  • 用途:指定用於連線至 OCI 服務的組態設定檔名稱,例如 Oracle NoSQL Database Cloud Service 、OCI 物件儲存等等。使用者帳戶證明資料稱為設定檔

    如果您未指定此值,NoSQL 資料庫移轉程式會使用 DEFAULT 設定檔。

    附註:

    只有在指定 credentials 參數時,此參數才有效。
  • 資料類型: string
  • 必要 (Y/N): N

endpoint

  • 目的:指定下列其中一項:
    • OCI 物件儲存服務的服務端點 URL 或區域 ID。

      如需 OCI 物件儲存服務端點清單,請參閱物件儲存端點

    • Oracle NoSQL Database Cloud Service 的服務端點 URL 或區域 ID。

      您可以單獨指定完整的 URL 或「區域 ID」。如需 Oracle NoSQL Database Cloud Service 支援的資料區域清單,請參閱 Oracle NoSQL Database Cloud Service 文件中的資料區域和關聯的服務 URL

  • 資料類型: string
  • 必要 (Y/N): Y

格式

  • 目的:指定來源 / 接收器格式。
  • 資料類型: string
  • 必要 (Y/N): Y

namespace - 命名空間

  • 用途:指定 OCI 物件儲存服務的命名空間。這是選擇性參數。如果您未指定此參數,則會使用租用戶的預設命名空間。

  • 資料類型: string
  • 必要 (Y/N): N

首碼

  • 用途:前置碼可作為邏輯容器或目錄,用於將資料儲存在 OCI 物件儲存的儲存桶中。

    • 來源組態樣板:如果指定 prefix 參數,則會移轉 prefix 參數中指定之目錄的所有物件。否則,會移轉儲存桶中存在的所有物件。
    • 接收器組態樣板:如果指定 prefix 參數,則會在儲存桶中建立具有指定前置碼的目錄,並將物件移轉至此目錄中。否則,會使用來源的表格名稱作為前置碼。如果儲存桶中已有相同名稱的任何物件,系統就會覆寫該物件。

    如需詳細資訊,請參閱使用前置碼和階層命名物件

  • 資料類型: string
  • 必要 (Y/N): N

requestTimeoutMs

  • 目的:指定從存放區完成每個讀取 / 寫入作業的時間。以毫秒為單位提供。預設值為 5000。值可以是任何正整數。

  • 資料類型:整數
  • 必要 (Y/N): N

security

  • 用途:指定安全登入檔案的絕對路徑,其中包含您的存放區證明資料 (如果您的存放區是安全存放區)。For more information about the security login file, see Configuring Security with Remote Access in the Administrator's Guide.

    您可以使用以密碼檔為基礎的認證或公事包為基礎的認證。不過,只有 Oracle NoSQL Database 的 Enterprise Edition (EE) 支援公事包式認證。如需有關公事包式認證的詳細資訊,請參閱來源和接收器安全

    Community Edition (CE) 版本僅支援以密碼檔為基礎的認證。

  • 資料類型: 字串
  • 必要 (Y/N): Y,用於安全商店

類型

  • 目的:識別來源 / 接收器型態。
  • 資料類型: string
  • 必要 (Y/N): Y

useDelegationToken

  • 用途:指定 NoSQL 資料庫移轉器工具是否使用委派記號認證來連線至 OCI 服務。您必須使用委派權杖認證,才能從 Cloud Shell 執行 Migrator 公用程式。呼叫 Cloud Shell 時,系統會自動為使用者建立委派權杖。

    預設值為 false

  • 資料類型:布林
  • 必要 (Y/N): N

    附註:

    • 只有從 Cloud Shell 執行 NoSQL Database Migrator 工具時,才支援使用委派記號進行認證。
    • 認證參數 credentialsuseInstancePrincipaluseDelegationToken 不能並存。只在組態樣板中指定其中一個參數。
    • Cloud Shell 只支援下列來源與接收器之間的移轉:
      Type 有效來源 有效槽

      Oracle NoSQL Database Cloud Service

      (nosqldb_cloud)

      Y Y
      檔案 (本位目錄中的 JSON 檔案) Y Y

      OCI 物件儲存 (JSON 檔案)

      (object_storage_oci)

      Y Y

      OCI 物件儲存 (Parquet 檔案)

      (object_storage_oci)

      N Y

useInstancePrincipal

  • 用途:指定 NoSQL 資料庫移轉器工具是否使用執行處理主體認證來連線至 OCI 服務,例如 Oracle NoSQL Database Cloud Service 、OCI 物件儲存等等。如需有關「執行處理主體」認證方法的詳細資訊,請參閱來源和接收器安全性

    預設值為 false

    附註:

    • 只有在 OCI 運算執行處理內執行 NoSQL Database Migrator 工具時 (例如,在 OCI 代管的 VM 中執行的 NoSQL Database Migrator 工具),才支援使用執行處理主體進行認證。
    • 認證參數 credentialsuseInstancePrincipaluseDelegationToken 不能並存。只在組態樣板中指定其中一個參數。
  • 資料類型:布林
  • 必要 (Y/N): N

來源組態範本

瞭解每個有效來源的來源組態檔格式,以及每個組態參數的用途。

如需組態檔範本的相關資訊,請參閱與 NoSQL Data Migrator 搭配使用的術語中的組態檔

如需每個來源的有效接收器格式詳細資訊,請參閱接收器組態樣板

主題

下列主題描述 Oracle NoSQL Database Migrator 所參照的來源組態範本,將資料從指定的來源複製到有效的 sink。

JSON 檔案來源

以下是 NoSQL 資料庫移轉程式來源的 JSON 檔案組態檔格式。

您可以在來源組態樣板中指定檔案路徑或目錄,以移轉 JSON 來源檔案。

範例 JSON 來源檔案如下:
{"id":6,"val_json":{"array":["q","r","s"],"date":"2023-02-04T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-03-04T02:38:57.520Z","numfield":30,"strfield":"foo54"},{"datefield":"2023-02-04T02:38:57.520Z","numfield":56,"strfield":"bar23"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
{"id":3,"val_json":{"array":["g","h","i"],"date":"2023-02-02T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-02T02:38:57.520Z","numfield":28,"strfield":"foo3"},{"datefield":"2023-02-02T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}

來源組態範本

"source": {
  "type": "file",
  "format": "json",
  "dataPath": "<path/to/JSON/[file|dir]>",
  "schemaInfo": {
    "schemaPath": "<path/to/schema/file>"
  }
},

來源參數

一般組態參數

  • 類型

    使用 "type" : "file"

  • 格式

    使用 "format" : "json"

唯一組態參數

dataPath

  • 用途:指定包含移轉 JSON 資料之檔案或目錄的絕對路徑。

    您必須確定此資料與 sink 中定義的 NoSQL 表格綱要相符。如果您指定目錄,NoSQL 資料庫移轉程式會識別該目錄中副檔名為 .json 的所有檔案以進行移轉。不支援子目錄。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:
    • 指定 JSON 檔案

      "dataPath" : "/home/user/sample.json"

    • 指定目錄

      "dataPath" : "/home/user"

schemaInfo

  • 用途:指定要移轉之來源資料的綱要。此綱要會傳送至 NoSQL sink。

  • 資料類型:物件
  • 必要 (Y/N): N

schemaInfo.schemaPath

  • 用途:指定綱要定義檔案的絕對路徑,其中包含要移轉之 NoSQL 表格的 DDL 敘述句。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:
    "schemaInfo": {
      "schemaPath": "<path to the schema file>"
    }

OCI 物件儲存桶中的 JSON 檔案

以下是 OCI Object Storage 貯體中作為 NoSQL Database Migrator 來源的 JSON 檔案組態檔格式。

您可以在來源組態樣板中指定儲存桶的名稱,以移轉 OCI Object Storage 儲存桶中的 JSON 檔案。

OCI Object Storage 貯體中的 JSON 來源檔案範例如下:
{"id":6,"val_json":{"array":["q","r","s"],"date":"2023-02-04T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-03-04T02:38:57.520Z","numfield":30,"strfield":"foo54"},{"datefield":"2023-02-04T02:38:57.520Z","numfield":56,"strfield":"bar23"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
{"id":3,"val_json":{"array":["g","h","i"],"date":"2023-02-02T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-02T02:38:57.520Z","numfield":28,"strfield":"foo3"},{"datefield":"2023-02-02T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}

附註:

OCI 物件儲存來源類型的有效接收器類型為 nosqldbnosqldb_cloud

來源組態範本

"source" : {
  "type" : "object_storage_oci",
  "format" : "json",
  "endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
  "namespace" : "<OCI Object Storage namespace>",
  "bucket" : "<bucket name>",
  "prefix" : "<object prefix>",
  "schemaInfo" : {
     "schemaObject" : "<object name>"
  },
  "credentials" : "</path/to/oci/config/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>,
  "useDelegationToken" : <true|false>
}

來源參數

一般組態參數

  • 類型

    使用 "type" : "object_storage_oci"

  • 格式

    使用 "format" : "json"

  • endpoint
    範例:
    • 區域 ID:"endpoint" : "us-ashburn-1"

    • 網址格式:"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • namespace - 命名空間

    範例:"namespace" : "my-namespace"

  • 範例:"bucket" : "my-bucket"

  • 首碼
    範例:
    1. "prefix" : "my_table/Data/000000.json" (僅移轉 000000.json)
    2. "prefix" : "my_table/Data" (移轉前置碼為 my_table/Data 的所有物件)
  • 證明資料
    範例:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    範例:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    範例:"useInstancePrincipal" : true

  • useDelegationToken

    範例:"useDelegationToken" : true

    附註:

    NoSQL 資料庫移轉程式從 Cloud Shell 執行時,才支援使用委派記號進行認證。

唯一組態參數

schemaInfo

  • 用途:指定要移轉之來源資料的綱要。此綱要會傳送至 NoSQL sink。

  • 資料類型:物件
  • 必要 (Y/N): N

schemaInfo.schemaObject

  • 用途:指定儲存桶中儲存所移轉資料的 NoSQL 表格綱要定義之物件的名稱。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:
    "schemaInfo": {
      "schemaObject": "mytable/Schema/schema.ddl"
    },

MongoDB 格式的 JSON 檔案

以下顯示 MongoDB 格式之 JSON 檔案的組態檔格式,作為 NoSQL 資料庫移轉程式的來源。

您可以在來源組態樣板中指定檔案或目錄,以移轉 MongoDB 匯出的 JSON 資料。

MongoDB 支援兩種 JSON 檔案格式的擴充功能:正規模式放鬆模式。您可以在「正規」或「放鬆」模式中,提供使用 mongoexport 工具產生的 MongoDB 格式 JSON 檔案。NoSQL 資料庫移轉程式支援兩種模式進行移轉。

如需 MongoDB Extended JSON (v2) 檔案的詳細資訊,請參閱 mongoexport_formats

如需有關產生 MongoDB 格式之 JSON 檔案的詳細資訊,請參閱 mongoexport 以瞭解詳細資訊。

範例 MongoDB 格式的放鬆模式 JSON 檔案如下:
{"_id":0,"name":"Aimee Zank","scores":[{"score":1.463179736705023,"type":"exam"},{"score":11.78273309957772,"type":"quiz"},{"score":35.8740349954354,"type":"homework"}]}
{"_id":1,"name":"Aurelia Menendez","scores":[{"score":60.06045071030959,"type":"exam"},{"score":52.79790691903873,"type":"quiz"},{"score":71.76133439165544,"type":"homework"}]}
{"_id":2,"name":"Corliss Zuk","scores":[{"score":67.03077096065002,"type":"exam"},{"score":6.301851677835235,"type":"quiz"},{"score":66.28344683278382,"type":"homework"}]}
{"_id":3,"name":"Bao Ziglar","scores":[{"score":71.64343899778332,"type":"exam"},{"score":24.80221293650313,"type":"quiz"},{"score":42.26147058804812,"type":"homework"}]}
{"_id":4,"name":"Zachary Langlais","scores":[{"score":78.68385091304332,"type":"exam"},{"score":90.2963101368042,"type":"quiz"},{"score":34.41620148042529,"type":"homework"}]}

來源組態範本

"source": {
  "type": "file",
  "format": "mongodb_json",
  "dataPath": "</path/to/json/[file|dir]>",
  "schemaInfo": {
    "schemaPath": "</path/to/schema/file>"
  }
}

來源參數

一般組態參數

  • 類型

    使用 "type" : "file"

  • 格式

    使用 "format" : "mongodb_json"

唯一組態參數

dataPath

  • 用途:指定包含要移轉之 MongoDB 匯出 JSON 資料的檔案或目錄的絕對路徑。

    您可以提供使用 mongoexport 工具產生的 MongoDB 格式 JSON 檔案。

    如果您指定目錄,NoSQL 資料庫移轉程式會識別該目錄中副檔名為 .json 的所有檔案以進行移轉。不支援子目錄。您必須確定此資料與 sink 中定義的 NoSQL 表格綱要相符。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:
    • 指定 MongoDB 格式的 JSON 檔案

      "dataPath" : "/home/user/sample.json"

    • 指定目錄

      "dataPath" : "/home/user"

schemaInfo

  • 用途:指定要移轉之來源資料的綱要。此綱要會傳送至 NoSQL sink。

  • 資料類型:物件
  • 必要 (Y/N): N

schemaInfo.schemaPath

  • 用途:指定綱要定義檔案的絕對路徑,其中包含要移轉之 NoSQL 表格的 DDL 敘述句。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:
    "schemaInfo" : {
      "schemaPath" : "/home/user/mytable/Schema/schema.ddl"
    }

OCI 物件儲存之儲存桶中的 MongoDB 格式 JSON 檔案

以下是 OCI 物件儲存之儲存桶中 MongoDB 格式 JSON 檔案的組態檔格式,作為 NoSQL 資料庫移轉程式的來源。

您可以在來源組態樣板中指定儲存桶的名稱,即可移轉 OCI Object Storage 儲存桶中 MongoDB 匯出的 JSON 資料。

使用 mongoexport 公用程式從 MongoDB 擷取資料,並將其上傳至 OCI 物件儲存的儲存桶。如需詳細資訊,請參閱 mongoexport 。MongoDB 支援兩種 JSON 檔案格式的擴充功能:正規模式放鬆模式。OCI Object Storage 貯體中支援這兩種格式。

範例 MongoDB 格式的放鬆模式 JSON 檔案如下:
{"_id":0,"name":"Aimee Zank","scores":[{"score":1.463179736705023,"type":"exam"},{"score":11.78273309957772,"type":"quiz"},{"score":35.8740349954354,"type":"homework"}]}
{"_id":1,"name":"Aurelia Menendez","scores":[{"score":60.06045071030959,"type":"exam"},{"score":52.79790691903873,"type":"quiz"},{"score":71.76133439165544,"type":"homework"}]}
{"_id":2,"name":"Corliss Zuk","scores":[{"score":67.03077096065002,"type":"exam"},{"score":6.301851677835235,"type":"quiz"},{"score":66.28344683278382,"type":"homework"}]}
{"_id":3,"name":"Bao Ziglar","scores":[{"score":71.64343899778332,"type":"exam"},{"score":24.80221293650313,"type":"quiz"},{"score":42.26147058804812,"type":"homework"}]}
{"_id":4,"name":"Zachary Langlais","scores":[{"score":78.68385091304332,"type":"exam"},{"score":90.2963101368042,"type":"quiz"},{"score":34.41620148042529,"type":"homework"}]}

附註:

OCI 物件儲存來源類型的有效接收器類型為 nosqldbnosqldb_cloud

來源組態範本

"source" : {
  "type" : "object_storage_oci",
  "format" : "mongodb_json",
  "endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
  "namespace" : "<OCI Object Storage namespace>",
  "bucket" : "<bucket name>",
  "prefix" : "<object prefix>",
  "schemaInfo" : {
     "schemaObject" : "<object name>"
  },
  "credentials" : "</path/to/oci/config/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>
}

來源參數

一般組態參數

  • 類型

    使用 "type" : "object_storage_oci"

  • 格式

    使用 "format" : "mongodb_json"

  • endpoint
    範例:
    • 區域 ID:"endpoint" : "us-ashburn-1"

    • 網址格式:"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • namespace - 命名空間

    範例:"namespace" : "my-namespace"

  • 範例:"bucket" : "my-bucket"

  • 前綴
    範例:
    1. "prefix" : "mongo_export/Data/table.json" (僅移轉 table.json)
    2. "prefix" : "mongo_export/Data" (移轉前置碼為 mongo_export/Data 的所有物件)

    附註:

    如果您未提供任何值,則會移轉儲存桶中存在的所有物件。
  • 證明資料
    範例:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    範例:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    範例:"useInstancePrincipal" : true

唯一組態參數

schemaInfo

  • 用途:指定要移轉之來源資料的綱要。此綱要會傳送至 NoSQL sink。

  • 資料類型:物件
  • 必要 (Y/N): N

schemaInfo.schemaObject

  • 用途:指定儲存桶中儲存所移轉資料的 NoSQL 表格綱要定義之物件的名稱。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:
    "schemaInfo": {
      "schemaObject": "mytable/Schema/schema.ddl"
    }

DynamoDB 格式的 JSON 檔案儲存在 AWS S3 中

AWS S3 中作為 NoSQL 資料庫移轉程式來源之 DynamoDB 格式 JSON 檔案的組態檔格式如下所示。

您可以在來源組態樣板中指定路徑,以從 AWS S3 儲存移轉包含 DynamoDB 匯出 JSON 資料的檔案。

範例 DynamoDB 格式的 JSON 檔案如下:
{"Item":{"Id":{"N":"101"},"Phones":{"L":[{"L":[{"S":"555-222"},{"S":"123-567"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"570004"},"Street":{"S":"21 main"},"DoorNum":{"N":"201"},"City":{"S":"London"}}},"FirstName":{"S":"Fred"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"Smith"},"FavColors":{"SS":["Red","Green"]},"Age":{"N":"22"}}}
{"Item":{"Id":{"N":"102"},"Phones":{"L":[{"L":[{"S":"222-222"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"560014"},"Street":{"S":"32 main"},"DoorNum":{"N":"1024"},"City":{"S":"Wales"}}},"FirstName":{"S":"John"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"White"},"FavColors":{"SS":["Blue"]},"Age":{"N":"48"}}}

您必須將 DynamoDB 表格匯出至 Exporting DynamoDB 表格資料至 Amazon S3 中指定的 AWS S3 儲存體。

儲存在 AWS S3 中之 DynamoDB 格式 JSON 的有效接收器類型為 nosqldbnosqldb_cloud

來源組態範本
"source" : {
  "type" : "aws_s3",
  "format" : "dynamodb_json",
  "s3URL" : "<S3 object url>",
  "credentials" : "</path/to/aws/credentials/file>",
  "credentialsProfile" : <"profile name in aws credentials file">
}

來源參數

一般組態參數

  • 類型

    使用 "type" : "aws_s3"

  • 格式

    使用 "format" : "dynamodb_json"

    附註:

    如果 type 參數的值為 aws_s3,則格式必須是 dynamodb_json

唯一組態參數

s3URL

  • 用途:指定儲存在 AWS S3 中之匯出 DynamoDB 表格的 URL。您可以從 AWS S3 主控台取得此 URL。有效的 URL 格式為 https://<bucket-name>.<s3_endpoint>/<prefix>NoSQL 資料庫移轉程式會在匯入期間尋找前置碼中的 json.gz 檔案。

    附註:

    您必須匯出匯出 DynamoDB 表格資料至 Amazon S3 中指定的 DynamoDB 表格。
  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:https://my-bucket.s3.ap-south-1.amazonaws.com/AWSDynamoDB/01649660790057-14f642be

credentials - 證明資料

  • 用途:指定包含 AWS 證明資料之檔案的絕對路徑。如果未指定,則預設為 $HOME/.aws/credentials。如需證明資料檔案的詳細資訊,請參閱組態和證明資料檔案設定值
  • 資料類型: string
  • 必要 (Y/N): N
  • 範例:
    "credentials" : "/home/user/.aws/credentials"
    "credentials" : "/home/user/security/credentials

    附註:

    NoSQL 資料庫移轉程式不會記錄任何證明資料資訊。您必須正確保護憑證檔案免於未經授權的存取。

credentialsProfile

  • 用途:要用於連線至 AWS S3 之 AWS 證明資料檔案中的設定檔名稱。使用者帳戶證明資料稱為設定檔。如果您未指定此值,NoSQL 資料庫移轉程式會使用 default 設定檔。如需證明資料檔案的詳細資訊,請參閱組態和證明資料檔案設定值
  • 資料類型: string
  • 必要 (Y/N): N
  • 範例:
    "credentialsProfile" : "default"
    "credentialsProfile" : "test"

DynamoDB 格式的 JSON 檔案

以下顯示 DynamoDB 格式之 JSON 檔案的組態檔格式,作為 NoSQL 資料庫移轉程式的來源。

您可以在來源組態樣板中指定路徑,以移轉包含 DynamoDB 匯出之 JSON 資料的檔案或目錄。

範例 DynamoDB 格式的 JSON 檔案如下:
{"Item":{"Id":{"N":"101"},"Phones":{"L":[{"L":[{"S":"555-222"},{"S":"123-567"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"570004"},"Street":{"S":"21 main"},"DoorNum":{"N":"201"},"City":{"S":"London"}}},"FirstName":{"S":"Fred"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"Smith"},"FavColors":{"SS":["Red","Green"]},"Age":{"N":"22"}}}
{"Item":{"Id":{"N":"102"},"Phones":{"L":[{"L":[{"S":"222-222"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"560014"},"Street":{"S":"32 main"},"DoorNum":{"N":"1024"},"City":{"S":"Wales"}}},"FirstName":{"S":"John"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"White"},"FavColors":{"SS":["Blue"]},"Age":{"N":"48"}}}

您必須將匯出的 DynamoDB 表格資料從 AWS S3 儲存體複製到本機掛載的檔案系統。

DynamoDB JSON 檔案的有效槽位類型為 nosqldbnosqldb_cloud

來源組態範本
"source" : {
  "type" : "file",
  "format" : "dynamodb_json",
  "dataPath" : "<path/to/[file|dir]/containing/exported/DDB/tabledata>"   
}

來源參數

一般組態參數

  • 類型

    使用 "type" : "file"

  • 格式

    使用 "format" : "dynamodb_json"

唯一組態參數

dataPath

  • 用途:指定包含匯出之 DynamoDB 表格資料的檔案或目錄的絕對路徑。您必須將匯出的 DynamoDB 表格資料從 AWS S3 複製到本機掛載的檔案系統。您必須確定此資料與 sink 中定義的 NoSQL 表格綱要相符。如果您指定目錄,NoSQL 資料庫移轉程式會識別該目錄中副檔名為 .json.gz 的所有檔案以及 data 子目錄。
  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:
    • 指定檔案
      "dataPath" : "/home/user/AWSDynamoDB/01639372501551-bb4dd8c3/data/zclclwucjy6v5mkefvckxzhfvq.json.gz"
    • 指定目錄
      "dataPath" : "/home/user/AWSDynamoDB/01639372501551-bb4dd8c3"

Oracle NoSQL Database

Oracle NoSQL Database 作為 NoSQL 資料庫移轉程式來源的組態檔格式如下所示。

您可以在來源組態樣板中指定表格名稱,從 Oracle NoSQL Database 移轉表格。

範例 Oracle NoSQL Database 表格如下:
{"id":20,"firstName":"Jane","lastName":"Smith","otherNames":[{"first":"Jane","last":"teacher"}],"age":25,"income":55000,"address":{"city":"San Jose","number":201,"phones":[{"area":608,"kind":"work","number":6538955},{"area":931,"kind":"home","number":9533341},{"area":931,"kind":"mobile","number":9533382}],"state":"CA","street":"Atlantic Ave","zip":95005},"connections":[40,75,63],"expenses":null}
{"id":10,"firstName":"John","lastName":"Smith","otherNames":[{"first":"Johny","last":"chef"}],"age":22,"income":45000,"address":{"city":"Santa Cruz","number":101,"phones":[{"area":408,"kind":"work","number":4538955},{"area":831,"kind":"home","number":7533341},{"area":831,"kind":"mobile","number":7533382}],"state":"CA","street":"Pacific Ave","zip":95008},"connections":[30,55,43],"expenses":null}
{"id":30,"firstName":"Adam","lastName":"Smith","otherNames":[{"first":"Adam","last":"handyman"}],"age":45,"income":75000,"address":{"city":"Houston","number":301,"phones":[{"area":618,"kind":"work","number":6618955},{"area":951,"kind":"home","number":9613341},{"area":981,"kind":"mobile","number":9613382}],"state":"TX","street":"Indian Ave","zip":95075},"connections":[60,45,73],"expenses":null}

來源組態範本

"source" : {
  "type": "nosqldb",
  "storeName" : "<store name>",
  "helperHosts" : ["hostname1:port1","hostname2:port2,..."],
  "table" : "<fully qualified table name>", 
  "includeTTL": <true|false>,    
  "security" : "</path/to/store/security/file>",
  "requestTimeoutMs" : 5000
}

來源參數

一般組態參數

  • 類型

    使用 "type" : "nosqldb"

  • 安全性

    範例:

    "security" : "/home/user/client.credentials"

    密碼檔式認證的安全檔案內容範例:

    oracle.kv.password.noPrompt=true
    oracle.kv.auth.username=admin
    oracle.kv.auth.pwdfile.file=/home/nosql/login.passwd
    oracle.kv.transport=ssl
    oracle.kv.ssl.trustStore=/home/nosql/client.trust
    oracle.kv.ssl.protocols=TLSv1.2
    oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)

    公事包式認證的安全檔案內容範例:

    oracle.kv.password.noPrompt=true
    oracle.kv.auth.username=admin
    oracle.kv.auth.wallet.dir=/home/nosql/login.wallet
    oracle.kv.transport=ssl
    oracle.kv.ssl.trustStore=/home/nosql/client.trust
    oracle.kv.ssl.protocols=TLSv1.2
    oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)
  • requestTimeoutMs

    範例:"requestTimeoutMs" : 5000

唯一組態參數

storeName

  • 用途:Oracle NoSQL Database 存放區的名稱。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:"storeName" : "kvstore"

helperHosts

  • 用途:hostname:port 格式的主機和登錄連接埠組清單。使用逗號分隔清單中的每個項目。您必須至少指定一個協助程式主機。

  • 資料類型:字串陣列
  • 必要 (Y/N): Y
  • 範例:"helperHosts" : ["localhost:5000","localhost:6000"]

表格

  • 目的:移轉資料的完整表格名稱。

    格式:[namespace_name:]<table_name>

    如果表格位於 DEFAULT 命名空間中,您可以省略 namespace_name。表格必須存在於存放區中。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:
    • 使用 DEFAULT 命名空間 "table" :"mytable"

    • 使用非預設命名空間 "table" : "mynamespace:mytable"

    • 指定子項表格 "table" : "mytable.child"

includeTTL

  • 用途:指定匯出 Oracle NoSQL Database 表格時,是否包含表格資料列的 TTL 描述資料。如果設為 true,資料列的 TTL 資料也會包含在來源提供的資料中。TTL 存在於與每個資料列關聯的 _metadata JSON 物件中。自 UNIX 紀元 (1970 年 1 月 1 日) 以來,每個資料列的到期時間都會匯出為毫秒數。

    若未指定此參數,則預設為 false

    只有具有 TTL 正到期值的資料列會包含在匯出的資料列中。如果資料列未過期 (表示 TTL=0),則不會明確包含其 TTL 描述資料。例如,如果 ROW1 在 2021-10-19 00:00:00 到期,而 ROW2 未過期,則匯出的資料如下所示:
    //ROW1
    {
      "id" : 1,
      "name" : "abc",
      "_metadata" : {
        "expiration" : 1634601600000
      }
    }
    
    //ROW2
    {
      "id" : 2,
      "name" : "xyz"
    }
  • 資料類型:布林
  • 必要 (Y/N): N
  • <SYNTH_MONO_DATA> 範例:"includeTTL" : true

Oracle NoSQL Database Cloud Service

Oracle NoSQL Database Cloud Service 作為 NoSQL Database Migrator 來源的組態檔格式如下所示。

您可以指定表格位於來源組態樣板中區間的名稱或 OCID,從 Oracle NoSQL Database Cloud Service 移轉表格。

範例 Oracle NoSQL Database Cloud Service 表格如下:
{"id":20,"firstName":"Jane","lastName":"Smith","otherNames":[{"first":"Jane","last":"teacher"}],"age":25,"income":55000,"address":{"city":"San Jose","number":201,"phones":[{"area":608,"kind":"work","number":6538955},{"area":931,"kind":"home","number":9533341},{"area":931,"kind":"mobile","number":9533382}],"state":"CA","street":"Atlantic Ave","zip":95005},"connections":[40,75,63],"expenses":null}
{"id":10,"firstName":"John","lastName":"Smith","otherNames":[{"first":"Johny","last":"chef"}],"age":22,"income":45000,"address":{"city":"Santa Cruz","number":101,"phones":[{"area":408,"kind":"work","number":4538955},{"area":831,"kind":"home","number":7533341},{"area":831,"kind":"mobile","number":7533382}],"state":"CA","street":"Pacific Ave","zip":95008},"connections":[30,55,43],"expenses":null}
{"id":30,"firstName":"Adam","lastName":"Smith","otherNames":[{"first":"Adam","last":"handyman"}],"age":45,"income":75000,"address":{"city":"Houston","number":301,"phones":[{"area":618,"kind":"work","number":6618955},{"area":951,"kind":"home","number":9613341},{"area":981,"kind":"mobile","number":9613382}],"state":"TX","street":"Indian Ave","zip":95075},"connections":[60,45,73],"expenses":null}

來源組態範本

"source" : {
  "type" : "nosqldb_cloud",
  "endpoint" : "<Oracle NoSQL Cloud Service endpoint URL or region ID>",
  "table" : "<table name>",
  "compartment" : "<OCI compartment name or id>",
  "credentials" : "<path/to/oci/credential/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>,
  "useDelegationToken" : <true|false>,
  "readUnitsPercent" : <table readunits percent>,
  "includeTTL": <true|false>,
  "requestTimeoutMs" : <timeout in milli seconds>
}

來源參數

一般組態參數

  • 類型

    使用 "type" : "nosqldb_cloud"

  • endpoint
    範例:
    • 區域 ID:"endpoint" : "us-ashburn-1"

    • 網址格式:"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • 證明資料
    範例:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    範例:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    範例:"useInstancePrincipal" : true

  • useDelegationToken

    範例:"useDelegationToken" : true

    附註:

    NoSQL 資料庫移轉程式從 Cloud Shell 執行時,才支援使用委派記號進行認證。
  • requestTimeoutMs

    範例:"requestTimeoutMs" : 5000

唯一組態參數

表格

  • 目的:移轉資料的來源表格名稱。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:
    • 指定表格 "table" : "myTable"
    • 指定子項表格 "table" : "mytable.child"

區間

  • 用途:指定表格所在之區間的名稱或 OCID。

    如果您未提供任何值,預設為區間。

    您可以在 OCI Cloud 主控台的「治理」底下的「區間總管」視窗中找到區間的 OCID。

  • 資料類型: string
  • 必要 (Y/N): Y,如果表格不在租用戶的根區間中,或當 useInstancePrincipal 參數設為 true 時。

    附註:

    useInstancePrincipal 參數若設為 true,區間就必須指定區間 OCID,而非名稱。
  • 範例:
    • 區間名稱

      "compartment" : "mycompartment"

    • 以其父項區間限定區塊名稱

      "compartment" : "parent.childcompartment"

    • 未提供值。預設為根區間。

      "compartment": ""

    • Compartment OCID

      "compartment" : "ocid1.tenancy.oc1...4ksd"

readUnitsPercent

  • 用途:移轉 NoSQL 表格時要使用的表格讀取單位百分比。

    預設值為 90。有效範圍是 1 到 100 之間的任何整數。移轉資料所需的時間與此屬性直接成比例。增加移轉活動表格的讀取傳輸量比較好。您可以在移轉處理作業完成後降低讀取傳輸量。

    若要瞭解傳輸量變更的每日限制,請參閱 Oracle NoSQL Database Cloud Service 文件中的雲端限制

    請參閱疑難排解 Oracle NoSQL Database Migrator ,瞭解如何使用此屬性來提升資料移轉速度。

  • 資料類型:整數
  • 必要 (Y/N): N
  • 範例:"readUnitsPercent" : 90

includeTTL

  • 用途:指定匯出 Oracle NoSQL Database Cloud Service 表格時,是否包含表格資料列的 TTL 描述資料。如果設為 true,資料列的 TTL 資料也會包含在來源提供的資料中。TTL 存在於與每個資料列關聯的 _metadata JSON 物件中。自 UNIX 紀元 (1970 年 1 月 1 日) 以來,每個資料列的到期時間都會匯出為毫秒數。

    若未指定此參數,則預設為 false

    只有具有 TTL 正到期值的資料列會包含在匯出的資料列中。如果資料列未過期 (表示 TTL=0),則不會明確包含其 TTL 描述資料。例如,如果 ROW1 在 2021-10-19 00:00:00 到期,而 ROW2 未過期,則匯出的資料如下所示:
    //ROW1
    {
      "id" : 1,
      "name" : "abc",
      "_metadata" : {
        "expiration" : 1634601600000
      }
    }
    
    //ROW2
    {
      "id" : 2,
      "name" : "xyz"
    }
  • 資料類型:布林
  • 必要 (Y/N): N
  • <SYNTH_MONO_DATA> 範例:"includeTTL" : true

CSV 檔案來源

以下是 CSV 檔案的組態檔格式,作為 NoSQL 資料庫移轉程式的來源。CSV 檔案必須符合 RFC4180 格式。

您可以在來源組態樣板中指定檔案名稱或目錄,以移轉 CSV 檔案或包含 CSV 資料的目錄。

CSV 檔案範例如下:
1,"Computer Science","San Francisco","2500"
2,"Bio-Technology","Los Angeles","1200"
3,"Journalism","Las Vegas","1500"
4,"Telecommunication","San Francisco","2500"

來源組態範本

"source" : {
  "type" : "file",
  "format" : "csv",
  "dataPath": "</path/to/a/csv/[file|dir]>",
  "hasHeader" : <true | false>,
  "columns" : ["column1", "column2", ....],
  "csvOptions": {
    "encoding": "<character set encoding>",
    "trim": "<true | false>"
 }
}

來源參數

一般組態參數

  • 類型

    使用 "type" : "file"

  • 格式

    使用 "format" : "csv"

唯一組態參數

資料路徑

  • 用途:指定包含要移轉之 CSV 資料的檔案或目錄的絕對路徑。如果您指定目錄,NoSQL Database Migrator 會匯入該目錄中副檔名為 .csv.CSV 的所有檔案。所有 CSV 檔案都會複製到單一表格,但不會以任何特定順序複製。

    CSV 檔案必須符合 RFC4180 標準。您必須確定每個 CSV 檔案中的資料與 sink 表格中定義的 NoSQL Database 表格綱要相符。不支援子目錄。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:
    • 指定 CSV 檔案

      "dataPath" : "/home/user/sample.csv"

    • 指定目錄

      "dataPath" : "/home/user"

附註:

CSV 檔案只能包含純量值。不支援匯入包含複雜類型的 CSV 檔案,例如 MAP、RECORD、ARRAY 以及 JSON。NoSQL 資料庫移轉器工具不會檢查輸入 CSV 檔案中資料的正確性。NoSQL 資料庫移轉器工具支援匯入符合 RFC4180 格式的 CSV 資料。包含不符合 RFC4180 標準資料的 CSV 檔案可能無法正確複製或可能導致錯誤。如果輸入資料損毀,NoSQL 資料庫移轉器工具將不會剖析 CSV 記錄。如果移轉期間發生任何錯誤,NoSQL 資料庫移轉程式工具會記錄關於失敗輸入記錄的資訊,以進行除錯與提供資訊。如需詳細資訊,請參閱使用 Oracle NoSQL 資料移轉器中的記錄移轉器進度

hasHeader

  • 用途:指定 CSV 檔案是否有標頭。如果設為 true,則會忽略第一行。如果設為 false,第一行會被視為 CSV 記錄。預設值為 false

  • 資料類型:布林
  • 必要 (Y/N): N
  • 範例:"hasHeader" : "false"

columns - 資料欄

  • 用途:指定 NoSQL 資料庫表格資料欄名稱的清單。資料欄名稱的順序代表 CSV 檔案欄位與對應 NoSQL 資料庫表格資料欄的對應。如果輸入 CSV 檔案資料欄的順序與現有或新建立的 NoSQL 資料庫表格資料欄不相符,您可以使用此參數對應順序。此外,匯入具有識別資料欄的表格時,您可以略過 columns 參數中的「識別」資料欄名稱。

    附註:

    • 如果 NoSQL 資料庫表格有 CSV 檔案中沒有的其他資料欄,則會使用 NoSQL 資料庫表格中定義的預設值來更新遺漏資料欄的值。如果未提供預設值,則會在移轉期間插入空值。如需預設值的詳細資訊,請參閱 SQL Reference Guide 中的 Data Type Definitions 小節。
    • 如果 CSV 檔案有其他未在 NoSQL 資料庫表格中定義的資料欄,則會忽略其他資料欄資訊。
    • 如果 CSV 記錄中的任何值空白,則會設為 NoSQL 資料庫表格中對應資料欄的預設值。如果未提供預設值,則會在移轉期間插入空值。
  • 資料類型:字串的陣列
  • 必要 (Y/N): N
  • 範例:"columns" : ["table_column_1", "table_column_2"]

csvOptions

  • 用途:指定 CSV 檔案的格式選項。提供 CSV 檔案的字元集編碼格式,然後選擇是否要去除空白。

  • 資料類型:物件
  • 必要 (Y/N): N

csvOptions.encoding

  • 用途:指定要解碼 CSV 檔案的字元集。預設值是 UTF-8。支援的字元集為 US-ASCII, ISO-8859-1, UTF-8,UTF-16

  • 資料類型: 字串
  • 必要 (Y/N): N
  • 範例:"encoding" : "UTF-8"

csvOptions.trim

  • 目的:指定是否必須修剪 CSV 欄位值的前端與尾端空白。預設值為 false

  • 資料類型:布林
  • 必要 (Y/N): N
  • 範例:"trim" : "true"

OCI 物件儲存桶中的 CSV 檔案

以下是 OCI 物件儲存的儲存桶中 CSV 檔案的組態檔格式,作為 NoSQL 資料庫移轉器的來源。CSV 檔案必須符合 RFC4180 格式。

您可以在來源組態樣板中指定儲存桶的名稱,即可在 OCI 物件儲存的儲存桶中移轉 CSV 檔案。

OCI 物件儲存的儲存桶中的 CSV 檔案範例如下:
1,"Computer Science","San Francisco","2500"
2,"Bio-Technology","Los Angeles","1200"
3,"Journalism","Las Vegas","1500"
4,"Telecommunication","San Francisco","2500"

附註:

OCI 物件儲存來源類型的有效接收器類型為 nosqldbnosqldb_cloud

來源組態範本

"source" : {
  "type" : "object_storage_oci",
  "format" : "csv",
  "endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
  "namespace" : "<OCI Object Storage namespace>",
  "bucket" : "<bucket name>",
  "prefix" : "<object prefix>",
  "credentials" : "</path/to/oci/config/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>,
   "hasHeader" : <true | false>,
   "columns" : ["column1", "column2", ....],
   "csvOptions" : {         
     "encoding" : "<character set encoding>",
     "trim" : <true | false>
   }
 }

來源參數

一般組態參數

  • 類型

    使用 "type" : "object_storage_oci"

  • 格式

    使用 "format" : "csv"

  • endpoint
    範例:
    • 區域 ID:"endpoint" : "us-ashburn-1"

    • 網址格式:"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • namespace - 命名空間

    範例:"namespace" : "my-namespace"

  • 範例:"bucket" : "my-bucket"

    附註:

    • NoSQL 資料庫移轉程式會匯入副檔名為 .csv.CSV 的所有檔案,並以相同順序將它們複製到單一表格中。
    • CSV 檔案只能包含純量值。不支援匯入包含複雜類型的 CSV 檔案,例如 MAP、RECORD、ARRAY 以及 JSON。NoSQL 資料庫移轉器工具不會檢查輸入 CSV 檔案中資料的正確性。NoSQL 資料庫移轉器工具支援匯入符合 RFC4180 格式的 CSV 資料。包含不符合 RFC4180 標準資料的 CSV 檔案可能無法正確複製或可能導致錯誤。如果輸入資料損毀,NoSQL 資料庫移轉器工具將不會剖析 CSV 記錄。如果移轉期間發生任何錯誤,NoSQL 資料庫移轉程式工具會記錄關於失敗輸入記錄的資訊,以進行除錯與提供資訊。如需詳細資訊,請參閱使用 Oracle NoSQL 資料移轉器中的記錄移轉器進度

  • 前綴
    範例:
    1. "prefix" : "my_table/Data/000000.csv" (僅移轉 000000.csv)
    2. "prefix" : "my_table/Data" (移轉前置碼為 my_table/Data 的所有物件)
  • 證明資料
    範例:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    範例:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    範例:"useInstancePrincipal" : true

唯一組態參數

hasHeader

  • 用途:指定 CSV 檔案是否有標頭。如果設為 true,則會忽略第一行。如果設為 false,第一行會被視為 CSV 記錄。預設值為 false

  • 資料類型:布林
  • 必要 (Y/N): N
  • 範例:"hasHeader" : "false"

columns - 資料欄

  • 用途:指定 NoSQL 資料庫表格資料欄名稱的清單。資料欄名稱的順序代表 CSV 檔案欄位與對應 NoSQL 資料庫表格資料欄的對應。如果輸入 CSV 檔案資料欄的順序與現有或新建立的 NoSQL 資料庫表格資料欄不相符,您可以使用此參數對應順序。此外,匯入具有識別資料欄的表格時,您可以略過 columns 參數中的「識別」資料欄名稱。

    附註:

    • 如果 NoSQL 資料庫表格有 CSV 檔案中沒有的其他資料欄,則會使用 NoSQL 資料庫表格中定義的預設值來更新遺漏資料欄的值。如果未提供預設值,則會在移轉期間插入空值。如需預設值的詳細資訊,請參閱 SQL Reference Guide 中的 Data Type Definitions 小節。
    • 如果 CSV 檔案有其他未在 NoSQL 資料庫表格中定義的資料欄,則會忽略其他資料欄資訊。
    • 如果 CSV 記錄中的任何值空白,則會設為 NoSQL 資料庫表格中對應資料欄的預設值。如果未提供預設值,則會在移轉期間插入空值。
  • 資料類型:字串的陣列
  • 必要 (Y/N): N
  • 範例:"columns" : ["table_column_1", "table_column_2"]

csvOptions

  • 用途:指定 CSV 檔案的格式選項。提供 CSV 檔案的字元集編碼格式,然後選擇是否要去除空白。

  • 資料類型:物件
  • 必要 (Y/N): N

csvOptions.encoding

  • 用途:指定要解碼 CSV 檔案的字元集。預設值是 UTF-8。支援的字元集為 US-ASCII, ISO-8859-1, UTF-8,UTF-16

  • 資料類型: 字串
  • 必要 (Y/N): N
  • 範例:"encoding" : "UTF-8"

csvOptions.trim

  • 目的:指定是否必須修剪 CSV 欄位值的前端與尾端空白。預設值為 false

  • 資料類型:布林
  • 必要 (Y/N): N
  • 範例:"trim" : "true"

接收器組態範本

瞭解每個有效 sink 的接收器配置檔格式,以及每個配置參數的用途。

如需組態檔範本的相關資訊,請參閱與 NoSQL Data Migrator 搭配使用的術語中的組態檔
如需每個槽位之有效來源格式的詳細資訊,請參閱來源組態樣板

主題

下列主題描述 Oracle NoSQL Database Migrator 所參照的接收器組態範本,將資料從有效來源複製到指定的接收器。

JSON 檔案接收器

下面顯示作為 NoSQL 資料庫移轉器接收器之 JSON 檔案的組態檔格式。

接收器組態樣板

"sink" : {
  "type" : "file",
  "format" : "json",
  "dataPath": "</path/to/a/file>",
  "schemaPath" : "<path/to/a/file>",
  "pretty" : <true|false>,
  "useMultiFiles" : <true|false>,
  "chunkSize" : <size in MB>
}

接收器參數

一般組態參數

  • 類型

    使用 "type" : "file"

  • 格式

    使用 "format" : "json"

  • chunkSize

    範例:"chunkSize" : 40

    附註:

    只有當 useMultiFiles 參數設為 true 時,才適用此參數。

唯一組態參數

dataPath

  • 用途:指定要以 JSON 格式複製來源資料之檔案的絕對路徑。

    如果指定的資料路徑中沒有該檔案,NoSQL 資料庫移轉程式就會建立該檔案。如果存在,NoSQL 資料庫移轉程式會將其內容覆寫為來源資料。

    您必須確定資料路徑中的父目錄對指定的檔案有效。

    附註:

    如果 useMultiFiles 參數設為 true,請指定目錄的路徑,否則請指定檔案的路徑。
  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:
    • useMultiFiles 參數設為 true

      "dataPath" :"/home/user/data"

    • 未指定 useMultiFiles 參數,或設為 false

      "dataPath" :"/home/user/sample.json"

schemaPath

  • 用途:指定要寫入來源所提供之表格綱要資訊的檔案絕對路徑。

    如果未定義此值,來源綱要資訊將不會移轉至槽位。如果指定此值,移轉程式公用程式會將來源表格的綱要寫入此處指定的檔案。

    綱要資訊會寫入為此檔案中每一行一個 DDL 命令。如果指定的資料路徑中沒有該檔案,NoSQL 資料庫移轉程式就會建立該檔案。如果已存在,NoSQL 資料庫移轉程式會將其內容覆寫為來源資料。您必須確定資料路徑中的父目錄對指定的檔案有效。

  • 資料類型: string
  • 必要 (Y/N): N
  • 範例:"schemaPath" : "/home/user/schema_file"

漂亮

  • 用途:指定是否將 JSON 輸出美化以提高可讀性。

    如果未指定,則預設為 false。

  • 資料類型:布林
  • 必要 (Y/N): N
  • 範例:"pretty" : true

useMultiFiles

  • 用途:指定將來源資料移轉至檔案時,是否要將 NoSQL 表格資料分割成多個檔案。

    如果未指定,則預設為 false。

    如果設為 true,將來源資料移轉至檔案時,NoSQL 表格資料會分割成多個較小的檔案。例如,<chunk>.json,其中 chunk=000000、000001、000002 等等。

    dataPath
             |--000000.json
             |--000001.json
  • 資料類型:布林
  • 必要 (Y/N): N
  • <SYNTH_MONO_DATA> 範例:"useMultiFiles" : true

Parquet 檔案

下面顯示作為 NoSQL 資料庫移轉器接收槽的 Parquet 檔案組態檔格式。

接收器組態樣板

"sink" : {
  "type" : "file",
  "format" : "parquet",
  "dataPath": "</path/to/a/dir>",
  "chunkSize" : <size in MB>,
  "compression": "<SNAPPY|GZIP|NONE>",
  "parquetOptions": {
    "useLogicalJson": <true|false>,
    "useLogicalEnum": <true|false>,
    "useLogicalUUID": <true|false>,     
    "truncateDoubleSpecials": <true|false>
  }
}

接收器參數

一般組態參數

唯一組態參數

dataPath

  • 用途:指定儲存移轉之 NoSQL 表格資料的目錄路徑。確定目錄已經存在,而且具備讀取和寫入權限。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:"dataPath" : "/home/user/migrator/my_table"

壓縮

  • 用途:指定用來壓縮 Parquet 資料的壓縮類型。有效值為 SNAPPYGZIPNONE

    若未指定,預設為 SNAPPY

  • 資料類型: string
  • 必要 (Y/N): N
  • 範例:"compression" : "GZIP"

parquetOptions

  • 用途:指定為 NoSQL ENUM、JSON 和 UUID 資料欄選取 Parquet 邏輯類型的選項。

    如果您未指定此參數,NoSQL 資料庫移轉程式會將 ENUM、JSON 和 UUID 資料欄的資料寫入為字串。

  • 資料類型:物件
  • 必要 (Y/N): N

parquetOptions.useLogicalJson

  • 用途:指定是否將 NoSQL JSON 資料欄資料寫入為 Parquet 邏輯 JSON 類型。如需詳細資訊,請參閱宴會邏輯類型定義

    如果未指定或設為 false,NoSQL 資料庫移轉程式會將 NoSQL JSON 資料欄資料寫入字串。

  • 資料類型:布林
  • 必要 (Y/N): N
  • <SYNTH_MONO_DATA> 範例:"useLogicalJson" : true

parquetOptions.useLogicalEnum

  • 用途:指定是否將 NoSQL ENUM 資料欄資料寫入為 Parquet 邏輯 ENUM 類型。如需詳細資訊,請參閱宴會邏輯類型定義

    如果未指定或設為 false,NoSQL 資料庫移轉程式會將 NoSQL ENUM 資料欄資料寫入為「字串」。

  • 資料類型:布林
  • 必要 (Y/N): N
  • <SYNTH_MONO_DATA> 範例:"useLogicalEnum" : true

parquetOptions.useLogicalUUID

  • 用途:指定是否將 NoSQL UUID 資料欄資料寫入為 Parquet 邏輯 UUID 類型。如需詳細資訊,請參閱宴會邏輯類型定義

    如果未指定或設為 false,NoSQL 資料庫移轉程式會將 NoSQL UUID 資料欄資料寫入為「字串」。

  • 資料類型:布林
  • 必要 (Y/N): N
  • <SYNTH_MONO_DATA> 範例:"useLogicalUUID" : true

parquetOptions.truncateDoubleSpecials

  • 用途:指定是否要截斷雙重 +Infinity、-Infinity 及 NaN 值。

    根據預設,設定為 false。如果設定為 true
    • Positive_Infinity 會截斷成 Double.MAX_VALUE。
    • NEGATIVE_INFINITY 會截斷成 -Double.MAX_VALUE。
    • NaN 會截斷成 9.9999999999999990E307。
  • 資料類型:布林
  • 必要 (Y/N): N
  • <SYNTH_MONO_DATA> 範例:"truncateDoubleSpecials" : true

OCI 物件儲存桶中的 JSON 檔案

下面將 OCI Object Storage 貯體中 JSON 檔案的組態檔格式顯示為 NoSQL Database Migrator 的槽位。

附註:

接收器為 nosqldbnosqldb_cloud 時,OCI 物件儲存的有效來源類型。

接收器組態樣板

"sink" : {
  "type" : "object_storage_oci",
  "format" : "json",
  "endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
  "namespace" : "<OCI Object Storage namespace>",
  "bucket" : "<bucket name>",
  "prefix" : "<object prefix>",
  "chunkSize" : <size in MB>,
  "pretty" : <true|false>,
  "credentials" : "</path/to/oci/config/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>,  
  "useDelegationToken" : <true|false>
}

接收器參數

一般組態參數

  • 類型

    使用 "type" : "object_storage_oci"

  • 格式

    使用 "format" : "json"

  • endpoint
    範例:
    • 區域 ID:"endpoint" : "us-ashburn-1"

    • 網址格式:"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • namespace - 命名空間

    範例:"namespace" : "my-namespace"

  • 儲存桶

    範例:"bucket" : "my-bucket"

  • 前綴

    綱要會移轉至 <prefix>/Schema/schema.ddl 檔案,且來源資料會移轉至 <prefix>/Data/<chunk>.json 檔案,其中 chunk=000000.json、000001.json 等等。

    範例:
    1. "prefix" : "my_export"
    2. "prefix" : "my_export/2021-04-05/"
  • chunkSize

    範例:"chunkSize" : 40

  • 證明資料
    範例:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    範例:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    範例:"useInstancePrincipal" : true

  • useDelegationToken

    範例:"useDelegationToken" : true

    附註:

    NoSQL 資料庫移轉程式從 Cloud Shell 執行時,才支援使用委派記號進行認證。

唯一組態參數

pretty

  • 用途:指定是否將 JSON 輸出美化以提高可讀性。

    如果未指定,則預設為 false。

  • 資料類型:布林
  • 必要 (Y/N): N
  • 範例:"pretty" : true

OCI 物件儲存桶中的 Parquet 檔案

NoSQL Database Migrator 的槽位形式,OCI Object Storage 貯體中 Parquet 檔案的組態檔格式如下所示。

附註:

OCI 物件儲存來源類型的有效來源類型為 nosqldbnosqldb_cloud

接收器組態樣板

"sink" : {
  "type" : "object_storage_oci",
  "format" : "parquet",
  "endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
  "namespace" : "<OCI Object Storage namespace>",
  "bucket" : "<bucket name>",
  "prefix" : "<object prefix>",
  "chunkSize" : <size in MB>,
  "compression": "<SNAPPY|GZIP|NONE>",
  "parquetOptions": {
    "useLogicalJson": <true|false>,
    "useLogicalEnum": <true|false>,
    "useLogicalUUID": <true|false>,
    "truncateDoubleSpecials": <true|false>
  },
  "credentials" : "</path/to/oci/config/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>,
  "useDelegationToken" : <true|false>
}

接收器參數

一般組態參數

  • 類型

    使用 "type" : "object_storage_oci"

  • 格式

    使用 "format" : "parquet"

  • endpoint
    範例:
    • 區域 ID:"endpoint" : "us-ashburn-1"

    • 網址格式:"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • namespace - 命名空間

    範例:"namespace" : "my-namespace"

  • 儲存桶

    範例:"bucket" : "my-bucket"

  • 前綴

    來源資料會移轉至 <prefix>/Data/<chunk>.parquet 檔案,其中區塊 =000000.parquet、000001.parquet 等等。

    範例:
    1. "prefix" : "my_export"
    2. "prefix" : "my_export/2021-04-05/"
  • chunkSize

    範例:"chunkSize" : 40

  • 證明資料
    範例:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    範例:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    範例:"useInstancePrincipal" : true

  • useDelegationToken

    範例:"useDelegationToken" : true

    附註:

    NoSQL 資料庫移轉程式從 Cloud Shell 執行時,才支援使用委派記號進行認證。

唯一組態參數

壓縮

  • 用途:指定用來壓縮 Parquet 資料的壓縮類型。有效值為 SNAPPYGZIPNONE

    若未指定,預設為 SNAPPY

  • 資料類型: string
  • 必要 (Y/N): N
  • 範例:"compression" : "GZIP"

parquetOptions

  • 用途:指定為 NoSQL ENUM、JSON 和 UUID 資料欄選取 Parquet 邏輯類型的選項。

    如果您未指定此參數,NoSQL 資料庫移轉程式會將 ENUM、JSON 和 UUID 資料欄的資料寫入為字串。

  • 資料類型:物件
  • 必要 (Y/N): N

parquetOptions.useLogicalJson

  • 用途:指定是否將 NoSQL JSON 資料欄資料寫入為 Parquet 邏輯 JSON 類型。如需詳細資訊,請參閱宴會邏輯類型定義

    如果未指定或設為 false,NoSQL 資料庫移轉程式會將 NoSQL JSON 資料欄資料寫入字串。

  • 資料類型:布林
  • 必要 (Y/N): N
  • <SYNTH_MONO_DATA> 範例:"useLogicalJson" : true

parquetOptions.useLogicalEnum

  • 用途:指定是否將 NoSQL ENUM 資料欄資料寫入為 Parquet 邏輯 ENUM 類型。如需詳細資訊,請參閱宴會邏輯類型定義

    如果未指定或設為 false,NoSQL 資料庫移轉程式會將 NoSQL ENUM 資料欄資料寫入為「字串」。

  • 資料類型:布林
  • 必要 (Y/N): N
  • <SYNTH_MONO_DATA> 範例:"useLogicalEnum" : true

parquetOptions.useLogicalUUID

  • 用途:指定是否將 NoSQL UUID 資料欄資料寫入為 Parquet 邏輯 UUID 類型。如需詳細資訊,請參閱宴會邏輯類型定義

    如果未指定或設為 false,NoSQL 資料庫移轉程式會將 NoSQL UUID 資料欄資料寫入為「字串」。

  • 資料類型:布林
  • 必要 (Y/N): N
  • <SYNTH_MONO_DATA> 範例:"useLogicalUUID" : true

parquetOptions.truncateDoubleSpecials

  • 用途:指定是否要截斷雙重 +Infinity、-Infinity 及 NaN 值。

    根據預設,設定為 false。如果設定為 true
    • Positive_Infinity 會截斷成 Double.MAX_VALUE。
    • NEGATIVE_INFINITY 會截斷成 -Double.MAX_VALUE。
    • NaN 會截斷成 9.9999999999999990E307。
  • 資料類型:布林
  • 必要 (Y/N): N
  • <SYNTH_MONO_DATA> 範例:"truncateDoubleSpecials" : true

Oracle NoSQL Database

下面將 Oracle NoSQL Database 的組態檔格式顯示為 NoSQL Database Migrator 的槽位。

接收器組態樣板

"sink" : {
  "type": "nosqldb",
  "storeName" : "<store name>",
  "helperHosts" : ["hostname1:port1","hostname2:port2,..."],
  "security" : "</path/to/store/credentials/file>",
  "table" : "<fully qualified table name>",
  "includeTTL": <true|false>,
  "ttlRelativeDate": "<date-to-use in UTC>",
  "schemaInfo" : {
    "schemaPath" : "</path/to/a/schema/file>",
    "defaultSchema" : <true|false>,
    "useSourceSchema" : <true|false>,
    "DDBPartitionKey" : <"name:type">,
    "DDBSortKey" : "<name:type>"
  },
  "overwrite" : <true|false>,
  "requestTimeoutMs" : <timeout in milli seconds>
}

接收器參數

一般組態參數

  • 類型

    使用 "type" : "nosqldb"

  • 安全性

    範例:

    "security" : "/home/user/client.credentials"

    密碼檔式認證的安全檔案內容範例:

    oracle.kv.password.noPrompt=true
    oracle.kv.auth.username=admin
    oracle.kv.auth.pwdfile.file=/home/nosql/login.passwd
    oracle.kv.transport=ssl
    oracle.kv.ssl.trustStore=/home/nosql/client.trust
    oracle.kv.ssl.protocols=TLSv1.2
    oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)

    公事包式認證的安全檔案內容範例:

    oracle.kv.password.noPrompt=true
    oracle.kv.auth.username=admin
    oracle.kv.auth.wallet.dir=/home/nosql/login.wallet
    oracle.kv.transport=ssl
    oracle.kv.ssl.trustStore=/home/nosql/client.trust
    oracle.kv.ssl.protocols=TLSv1.2
    oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)
  • requestTimeoutMs

    範例:"requestTimeoutMs" : 5000

唯一組態參數

storeName

  • 用途:Oracle NoSQL Database 存放區的名稱。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:"storeName" : "kvstore"

helperHosts

  • 用途:hostname:port 格式的主機和登錄連接埠組清單。使用逗號分隔清單中的每個項目。您必須至少指定一個協助程式主機。

  • 資料類型:字串陣列
  • 必要 (Y/N): Y
  • 範例:"helperHosts" : ["localhost:5000","localhost:6000"]

表格

  • 用途:指定儲存移轉資料的表格名稱。

    格式:[namespace_name:]<table_name>

    如果表格位於 DEFAULT 命名空間中,您可以省略 namespace_name。表格在移轉期間必須存在於存放區中,而且其綱要必須與來源資料相符。

    如果 sink 中沒有表格,您可以使用 schemaInfo 參數來指示 NoSQL 資料庫移轉器,在 sink 中建立表格。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:
    • 使用 DEFAULT 命名空間 "table" :"mytable"

    • 使用非預設命名空間 "table" : "mynamespace:mytable"

    • 指定子項表格 "table" : "mytable.child"

      附註:

      您可以將子項表格從有效的資料來源移轉至 Oracle NoSQL DatabaseNoSQL 資料庫移轉程式只會在每次執行時複製單一表格。請確定在子項表格之前移轉父項表格。

includeTTL

  • 用途:指定匯入 Oracle NoSQL Database 表格時,是否包括來源所提供之表格資料列的 TTL 描述資料。

    若未指定此參數,則預設為 false。在此情況下,NoSQL 資料庫移轉程式在匯入 Oracle NoSQL Database 表格時,不會包含來源所提供表格資料列的 TTL 中繼資料。

    如果設為 true,NoSQL 資料庫移轉器工具會在匯入表格資料列時,對 TTL 描述資料執行下列檢查:
    • 如果您匯入沒有 _metadata 定義的資料列,NoSQL 資料庫移轉器工具會將 TTL 設為 0,這表示資料列永不過期。
    • 如果您匯入具有 _metadata 定義的資料列,NoSQL 資料庫移轉程式工具會在匯入資料列時,將 TTL 值與「參照時間」做比較。如果相對於「參照時間」的資料列已經過期,則會略過該資料列。如果資料列尚未過期,則會一併匯入 TTL 值。依照預設,匯入作業的「參照時間」是從執行 NoSQL Database Migrator 工具之機器的 System.currentTimeMillis() 取得的目前時間 (毫秒)。不過,如果您要延長到期時間並匯入資料列 (否則會立即到期),也可以使用 ttlRelativeDate 組態參數設定自訂「參照時間」。
      計算資料列到期時間的公式如下:
      expiration = (TTL value of source row in milliseconds - Reference Time in milliseconds)
      if (expiration <= 0) then it indicates that row has expired.

      附註:

      由於 Oracle NoSQL TTL 界限是以小時和天為單位,因此在某些情況下,匯入列的 TTL 可能會調整為最接近的小時或天。例如,假設到期值為 1629709200000 (2021-08-23 09:00:00) 且「參照時間」值為 1629707962582 (2021-08-23 08:39:22) 的資料列。此處,即使資料列相對於匯入此資料時的「參照時間」未過期,資料列的新 TTL 仍為 1629712800000 (2021-08-23 10:00:00)
  • 資料類型:布林
  • 必要 (Y/N): N
  • <SYNTH_MONO_DATA> 範例:"includeTTL" : true

ttlRelativeDate

  • 用途:以 YYYY-MM-DD hh:mm:ss 格式指定 UTC 日期,用來在匯入 Oracle NoSQL Database 時設定表格資料列的 TTL 到期。

    如果您要匯出之資料中的表格資料列已經過期,您可以將 ttlRelativeDate 參數設為在匯出資料之表格資料列過期之前的日期。

    如果您未指定此參數,預設為從執行 NoSQL Database Migrator 工具之機器的 System.currentTimeMillis() 取得的目前時間 (毫秒)。

  • 資料類型:日期
  • 必要 (Y/N): N
  • 範例:"ttlRelativeDate" : "2021-01-03 04:31:17"

    讓我們考慮表格資料列在 2021 年 1 月 1 日之後 7 天到期的情況。匯出此表格之後,您會在 2021 年 1 月 7 日執行表格問題,並決定匯入資料。表格資料列將在一天內到期 (資料到期日減去 ttlRelativedate 組態參數的預設值,即目前日期)。但如果您要將表格資料列的到期日延長至 5 天而不是 1 天,請使用 ttlRelativeDate 參數並選擇較早的日期。因此,在此案例中,如果您要將表格資料列的到期時間延長 5 天,請將 ttlRelativeDate 組態參數的值設為 2021 年 1 月 3 日,當表格資料列匯入時,此參數會作為「參照時間」。

方案維護資訊

  • 用途:指定要移轉之資料的綱要。如果未指定,NoSQL 資料庫移轉器會假設表格已經存在於接收器的存放區中。

  • 資料類型:物件
  • 必要 (Y/N): N

schemaInfo.schemaPath

  • 用途:指定包含 NoSQL 表格之 DDL 敘述句之檔案的絕對路徑。

    NoSQL 資料庫移轉程式會先執行此檔案中所列的 DDL 命令,再移轉資料。

    NoSQL 資料庫移轉程式schemaPath 檔案的每一行不支援多個 DDL 敘述句。

  • 資料類型: 字串

  • 必要 (Y/N): N

    附註:

    defaultSchemaschemaPath 不能並存。
  • 範例:"schemaPath" : "/home/user/schema_file"

schemaInfo.defaultSchema

  • 用途:將此參數設為 true 會指示 NoSQL Database Migrator 建立具有預設綱要的表格。預設綱要是由移轉器本身所定義。如需有關預設綱要定義的詳細資訊,請參閱使用 Oracle NoSQL 資料移轉器中的預設綱要

  • 資料類型:布林

  • 必要 (Y/N): N

    附註:

    defaultSchemaschemaPath 不能並存。

schemaInfo.useSourceSchema

  • 用途:指定移轉 NoSQL 表格時,Sink 是否使用來源所提供的表格綱要定義。

  • 資料類型:布林

  • 必要 (Y/N): N

    附註:

    defaultSchemaschemaPathuseSourceSchema 參數互斥。請僅指定下列其中一個參數。
  • 範例:
    • 使用預設綱要:
      "schemaInfo" : {
        "defaultSchema" : true
      }
    • 使用預先定義的綱要:
      "schemaInfo" : {
       "schemaPath" : "<complete/path/to/the/schema/definition/file>"
      }
    • 使用來源綱要:
      "schemaInfo" : {
        "useSourceSchema" : true
      }

schemaInfo.DDBPartitionKey

  • 用途:指定要在接收器 Oracle NoSQL Database 表格中使用的 DynamoDB 分割區索引鍵和對應的 Oracle NoSQL Database 類型。此索引鍵將作為 NoSQL 資料庫表格分區索引鍵。只有當 defaultSchema 設為 true 且來源格式為 dynamodb_json 時才適用。如需詳細資訊,請參閱將 DynamoDB 類型對應至 Oracle NoSQL 類型
  • 必要 (Y/N): Y,如果 defaultSchema 為 true 且來源為 dynamodb_json
  • 範例:"DDBPartitionKey" : "PersonID:INTEGER"

    附註:

    如果分割區索引鍵包含虛線 (-) 或點 (.) ,則移轉程式會將它取代為底線 (_),因為 NoSQL 資料欄名稱不支援虛線和虛線。

schemaInfo.DDBSortKey

  • 用途:指定要在目標 Oracle NoSQL Database 表格中使用的 DynamoDB 排序索引鍵及其對應的 Oracle NoSQL Database 類型。如果匯入 DynamoDB 表格沒有排序索引鍵,就不能設定此屬性。此金鑰將作為 NoSQL 資料庫表格中主索引鍵的非分區部分。只有當 defaultSchema 設為 true 且來源為 dynamodb_json 時才適用。如需詳細資訊,請參閱將 DynamoDB 類型對應至 Oracle NoSQL 類型
  • 必要 (Y/N): N
  • 範例:"DDBSortKey" : "Skey:STRING"

    附註:

    如果排序索引鍵包含虛線 (-) 或點 (.) ,Migrator 會以底線 (_) 取代,因為 NoSQL 資料欄名稱不支援虛線和虛線。

overwrite

  • 目的:表示從來源移轉的記錄已存在於接收器中時,NoSQL 資料庫移轉器的行為。

    如果值設為 false,則在移轉表格時,NoSQL 資料庫移轉器會略過接收器中已有相同主索引鍵的記錄。

    如果值設為 true,則在移轉表格時,NoSQL 資料庫移轉器會覆寫槽位中已有相同主索引鍵的記錄。

    如果未指定,則預設為 true。

  • 資料類型:布林
  • 必要 (Y/N): N
  • 範例:"overwrite" : false

Oracle NoSQL Database Cloud Service

Oracle NoSQL Database Cloud Service 的組態檔格式會顯示為 NoSQL Database Migrator 的槽位。

接收器組態樣板

"sink" : {
  "type" : "nosqldb_cloud",
  "endpoint" : "<Oracle NoSQL Cloud Service Endpoint>",
  "table" : "<table name>",
  "compartment" : "<OCI compartment name or id>",
  "includeTTL": <true|false>,
  "ttlRelativeDate" : "<date-to-use in UTC>",  
  "schemaInfo" : {
    "schemaPath" : "</path/to/a/schema/file>",
    "defaultSchema" : <true|false>,
    "useSourceSchema" : <true|false>,
    "DDBPartitionKey" : <"name:type">,
    "DDBSortKey" : "<name:type>",
    "onDemandThroughput" : <true|false>,
    "readUnits" : <table read units>,
    "writeUnits" : <table write units>,
    "storageSize" : <storage size in GB>
   },
  "credentials" : "</path/to/oci/credential/file>",
  "credentialsProfile" : "<profile name in oci config file>",
  "useInstancePrincipal" : <true|false>,
  "useDelegationToken" : <true|false>,
  "writeUnitsPercent" : <table writeunits percent>,
  "requestTimeoutMs" : <timeout in milli seconds>,
  "overwrite" : <true|false>
}

接收器參數

一般組態參數

  • 類型

    使用 "type" : "nosqldb_cloud"

  • endpoint
    範例:
    • 區域 ID:"endpoint" : "us-ashburn-1"

    • 網址格式:"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • 證明資料
    範例:
    1. "credentials" : "/home/user/.oci/config"
    2. "credentials" : "/home/user/security/config"
  • credentialsProfile
    範例:
    1. "credentialsProfile" : "DEFAULT"
    2. "credentialsProfile" : "ADMIN_USER"
  • useInstancePrincipal

    範例:"useInstancePrincipal" : true

  • useDelegationToken

    範例:"useDelegationToken" : true

    附註:

    NoSQL 資料庫移轉程式從 Cloud Shell 執行時,才支援使用委派記號進行認證。
  • requestTimeoutMs

    範例:"requestTimeoutMs" : 5000

唯一組態參數

表格

  • 用途:指定儲存移轉資料的表格名稱。

    您必須確定此表格存在於您的 Oracle NoSQL Database Cloud Service 中。否則,您必須使用 sink 組態中的 schemaInfo 物件來指示 NoSQL 資料庫移轉程式來建立表格。

    此表格的綱要必須與來源資料相符。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:
    • 指定表格 "table" : "mytable"
    • 指定子項表格 "table" : "mytable.child"

      附註:

      您可以將子項表格從有效的資料來源移轉至 Oracle NoSQL Database Cloud ServiceNoSQL 資料庫移轉程式只會在每次執行時複製單一表格。請確定在子項表格之前移轉父項表格。

區間

  • 用途:指定表格所在之區間的名稱或 OCID。

    如果您未提供任何值,預設為區間。

    您可以在 OCI Cloud 主控台的「治理」底下的「區間總管」視窗中找到區間的 OCID。

  • 資料類型: string
  • 必要 (Y/N): Y,如果表格不在租用戶的根區間中,或當 useInstancePrincipal 參數設為 true 時。

    附註:

    useInstancePrincipal 參數若設為 true,區間就必須指定區間 OCID,而非名稱。
  • 範例:
    • 區間名稱

      "compartment" : "mycompartment"

    • 以其父項區間限定區塊名稱

      "compartment" : "parent.childcompartment"

    • 未提供值。預設為根區間。

      "compartment": ""

    • Compartment OCID

      "compartment" : "ocid1.tenancy.oc1...4ksd"

includeTTL

  • 用途:指定匯入 Oracle NoSQL Database 表格時,是否包括來源所提供之表格資料列的 TTL 描述資料。

    若未指定此參數,則預設為 false。在此情況下,NoSQL 資料庫移轉程式在匯入 Oracle NoSQL Database 表格時,不會包含來源所提供表格資料列的 TTL 中繼資料。

    如果設為 true,NoSQL 資料庫移轉器工具會在匯入表格資料列時,對 TTL 描述資料執行下列檢查:
    • 如果您匯入沒有 _metadata 定義的資料列,NoSQL 資料庫移轉器工具會將 TTL 設為 0,這表示資料列永不過期。
    • 如果您匯入具有 _metadata 定義的資料列,NoSQL 資料庫移轉程式工具會在匯入資料列時,將 TTL 值與「參照時間」做比較。如果相對於「參照時間」的資料列已經過期,則會略過該資料列。如果資料列尚未過期,則會一併匯入 TTL 值。依照預設,匯入作業的「參照時間」是從執行 NoSQL Database Migrator 工具之機器的 System.currentTimeMillis() 取得的目前時間 (毫秒)。不過,如果您要延長到期時間並匯入資料列 (否則會立即到期),也可以使用 ttlRelativeDate 組態參數設定自訂「參照時間」。
      計算資料列到期時間的公式如下:
      expiration = (TTL value of source row in milliseconds - Reference Time in milliseconds)
      if (expiration <= 0) then it indicates that row has expired.

      附註:

      由於 Oracle NoSQL TTL 界限是以小時和天為單位,因此在某些情況下,匯入列的 TTL 可能會調整為最接近的小時或天。例如,假設到期值為 1629709200000 (2021-08-23 09:00:00) 且「參照時間」值為 1629707962582 (2021-08-23 08:39:22) 的資料列。此處,即使資料列相對於匯入此資料時的「參照時間」未過期,資料列的新 TTL 仍為 1629712800000 (2021-08-23 10:00:00)
  • 資料類型:布林
  • 必要 (Y/N): N
  • <SYNTH_MONO_DATA> 範例:"includeTTL" : true

ttlRelativeDate

  • 用途:以 YYYY-MM-DD hh:mm:ss 格式指定 UTC 日期,用來在匯入 Oracle NoSQL Database 時設定表格資料列的 TTL 到期。

    如果您要匯出之資料中的表格資料列已經過期,您可以將 ttlRelativeDate 參數設為在匯出資料之表格資料列過期之前的日期。

    如果您未指定此參數,預設為從執行 NoSQL Database Migrator 工具之機器的 System.currentTimeMillis() 取得的目前時間 (毫秒)。

  • 資料類型:日期
  • 必要 (Y/N): N
  • 範例:"ttlRelativeDate" : "2021-01-03 04:31:17"

    讓我們考慮表格資料列在 2021 年 1 月 1 日之後 7 天到期的情況。匯出此表格之後,您會在 2021 年 1 月 7 日執行表格問題,並決定匯入資料。表格資料列將在一天內到期 (資料到期日減去 ttlRelativedate 組態參數的預設值,即目前日期)。但如果您要將表格資料列的到期日延長至 5 天而不是 1 天,請使用 ttlRelativeDate 參數並選擇較早的日期。因此,在此案例中,如果您要將表格資料列的到期時間延長 5 天,請將 ttlRelativeDate 組態參數的值設為 2021 年 1 月 3 日,當表格資料列匯入時,此參數會作為「參照時間」。

schemaInfo

  • 用途:指定要移轉之資料的綱要。

    如果您未指定此參數,NoSQL Database Migrator 會假設您的 Oracle NoSQL Database Cloud Service 已經有此表格。

    如果未指定此參數且 sink 中沒有表格,移轉就會失敗。

  • 資料類型:物件
  • 必要 (Y/N): N

schemaInfo.schemaPath

  • 用途:指定包含 NoSQL 表格之 DDL 敘述句之檔案的絕對路徑。

    NoSQL 資料庫移轉程式會先執行此檔案中所列的 DDL 命令,再移轉資料。

    NoSQL 資料庫移轉程式schemaPath 檔案的每一行不支援多個 DDL 敘述句。

  • 資料類型: 字串

  • 必要 (Y/N): N

    附註:

    defaultSchemaschemaPath 不能並存。
  • 範例:"schemaPath" : "/home/user/schema_file"

schemaInfo.defaultSchema

  • 用途:將此參數設為會指示 NoSQL 資料庫移轉程式建立含有預設綱要的表格。預設綱要是由移轉器本身所定義。如需有關預設綱要定義的詳細資訊,請參閱使用 Oracle NoSQL 資料移轉器中的預設綱要

  • 資料類型:布林

  • 必要 (Y/N): N

    附註:

    defaultSchemaschemaPath 不能並存。

schemaInfo.useSourceSchema

  • 用途:指定移轉 NoSQL 表格時,Sink 是否使用來源所提供的表格綱要定義。

  • 資料類型:布林

  • 必要 (Y/N): N

    附註:

    defaultSchemaschemaPathuseSourceSchema 參數互斥。請僅指定下列其中一個參數。
  • 範例:
    • 使用預設綱要:
      "schemaInfo": {
        "defaultSchema": true,
        "readUnits": 100,
        "writeUnits": 60,
        "storageSize": 1
      }
    • 使用預先定義的綱要:
      "schemaInfo": {
        "schemaPath": "<complete/path/to/the/schema/definition/file>",
        "readUnits": 100,
        "writeUnits": 100,
        "storageSize": 1
      }
    • 使用來源綱要:
      "schemaInfo": {
        "useSourceSchema": true,
        "readUnits": 100,
        "writeUnits": 60,
        "storageSize": 1
      }

schemaInfo.DDBPartitionKey

  • 用途:指定要在接收器 Oracle NoSQL Database 表格中使用的 DynamoDB 分割區索引鍵和對應的 Oracle NoSQL Database 類型。此索引鍵將作為 NoSQL 資料庫表格分區索引鍵。只有當 defaultSchema 設為 true 且來源格式為 dynamodb_json 時才適用。如需詳細資訊,請參閱將 DynamoDB 類型對應至 Oracle NoSQL 類型
  • 必要 (Y/N): Y,如果 defaultSchema 為 true 且來源為 dynamodb_json
  • 範例:"DDBPartitionKey" : "PersonID:INTEGER"

    附註:

    如果分割區索引鍵包含虛線 (-) 或點 (.) ,則移轉程式會將它取代為底線 (_),因為 NoSQL 資料欄名稱不支援虛線和虛線。

schemaInfo.DDBSortKey

  • 用途:指定要在目標 Oracle NoSQL Database 表格中使用的 DynamoDB 排序索引鍵及其對應的 Oracle NoSQL Database 類型。如果匯入 DynamoDB 表格沒有排序索引鍵,就不能設定此屬性。此金鑰將作為 NoSQL 資料庫表格中主索引鍵的非分區部分。只有當 defaultSchema 設為 true 且來源為 dynamodb_json 時才適用。如需詳細資訊,請參閱將 DynamoDB 類型對應至 Oracle NoSQL 類型
  • 必要 (Y/N): N
  • 範例:"DDBSortKey" : "Skey:STRING"

    附註:

    如果排序索引鍵包含虛線 (-) 或點 (.) ,Migrator 會以底線 (_) 取代,因為 NoSQL 資料欄名稱不支援虛線和虛線。

schemaInfo.onDemandThroughput

  • 用途:指定建立具有隨選讀取和寫入傳輸量的表格。如果未設定此參數,就會以佈建的容量建立表格。

    預設值為 false

    附註:

    此參數不適用於子項表格,因為它們共用最上層父項表格的處理量。
  • 資料類型:布林

  • 必要 (Y/N): N

  • <SYNTH_MONO_DATA> 範例:"onDemandThroughput" : "true"

schemaInfo.readUnits

  • 用途:指定新表格的讀取傳輸量。

    附註:

    • 此參數不適用於隨選容量佈建的表格。
    • 此參數不適用於子項表格,因為它們共用最上層父項表格的讀取傳輸量。
  • 資料類型:整數

  • 必要 (Y/N): Y,如果表格不是子項表格,或 schemaInfo.onDemandThroughput 參數設為 false,否則為 N。

  • 範例: "readUnits" : 100

schemaInfo.writeUnits

  • 用途:指定新表格的寫入傳輸量。

    附註:

    • 此參數不適用於隨選容量佈建的表格。
    • 此參數不適用於子項表格,因為它們共用最上層父項表格的寫入傳輸量。
  • 資料類型:整數

  • 必要 (Y/N): Y,如果表格不是子項表格,或 schemaInfo.onDemandThroughput 參數設為 false,否則為 N。

  • 範例: "writeUnits" : 100

schemaInfo.storageSize

  • 用途:指定新表格的儲存大小 (GB)。

    附註:

    此參數不適用於子項表格,因為它們共用最上層父項表格的儲存體大小。
  • 資料類型:整數

  • 必要 (Y/N): Y,如果表格不是子項表格,否則為 N。

  • 範例:
    • 使用 schemaPath

      "schemaInfo" : { 
        "schemaPath" : "</path/to/a/schema/file>",
        "readUnits" : 500,
        "writeUnits" : 1000,
        "storageSize" : 5 }
    • 使用 defaultSchema

      "schemaInfo" : {
        "defaultSchema" :Yes,
        "readUnits" : 500,   
        "writeUnits" : 1000,   
        "storageSize" : 5  
      }

writeUnitsPercent

  • 用途:指定移轉活動期間要使用的表格寫入單位百分比。移轉資料所需的時間與此屬性直接成比例。

    預設值為 90。有效範圍是 1 到 100 之間的任何整數。

    請參閱疑難排解 Oracle NoSQL Database Migrator ,瞭解如何使用此屬性來提升資料移轉速度。

  • 資料類型:整數
  • 必要 (Y/N): N
  • 範例:"writeUnitsPercent" : 90

overwrite

  • 目的:表示從來源移轉的記錄已存在於接收器中時,NoSQL 資料庫移轉器的行為。

    如果值設為 false,則在移轉表格時,NoSQL 資料庫移轉器會略過接收器中已有相同主索引鍵的記錄。

    如果值設為 true,則在移轉表格時,NoSQL 資料庫移轉器會覆寫槽位中已有相同主索引鍵的記錄。

    如果未指定,則預設為 true。

  • 資料類型:布林
  • 必要 (Y/N): N
  • 範例:"overwrite" : false

轉換組態範本

本主題說明 Oracle NoSQL Database Migrator 支援之不同轉換的組態參數。如需完整的組態檔範本,請參閱與 NoSQL Data Migrator 搭配使用的術語中的組態檔

Oracle NoSQL Database Migrator 可讓您修改資料,亦即在移轉活動中加入資料轉換。您可以在單一移轉中定義多個轉換。在這種情況下,轉換順序至關重要,因為來源資料會以指定的順序進行每個轉換。一個轉換的輸出會成為移轉器管線中下一個轉換的輸入。

NoSQL Data Migrator 支援的不同轉換包括:

表格 - 轉換

轉換組態屬性 您可以使用此轉換來 ...
ignoreFields 寫入接收器之前,請先忽略來源資料列中已識別的資料欄。
includeFields 請先從來源資料列包含已識別的資料欄,再寫入接收器。
renameFields 請先從來源資料列重新命名識別的資料欄,再寫入槽。
aggregateFields 將來源的多個資料欄聚總至接收器中的單一資料欄。在此轉換過程中,您也可以識別要在聚總中排除的資料欄。將從聚總資料欄略過這些欄位。

您可以在下方找到每個支援轉換的組態樣板。

ignoreFields

下面顯示 ignoreFields 轉換的組態檔格式。

轉換組態樣板

"transforms" : {
  "ignoreFields" : ["<field1>","<field2>",...]
}

轉換參數

ignoreFields

  • 目的:要從來源記錄忽略的資料欄名稱陣列。

    附註:

    您只能提供最上層欄位。轉換無法套用至巢狀欄位中的資料。
  • 資料類型:字串陣列
  • 必要 (Y/N): Y
  • 範例:忽略來源記錄中名為 "name" 和 "address" 的資料欄:

    "ignoreFields" : ["name","address"]

includeFields

下面顯示 includeFields 轉換的組態檔格式。

轉換組態樣板

"transforms" : {
  "includeFields" : ["<field1>","<field2>",...]
}

轉換參數

includeFields

  • 目的:要從來源記錄中包含的資料欄名稱陣列。包含陣列中指定的欄位,會忽略其餘的欄位。

    附註:

    如果您指定空白陣列,NoSQL Database Migrator 工具會發出錯誤。此外,您只能指定最上層欄位。NoSQL 資料庫移轉器工具不會將轉換套用至巢狀欄位中的資料。
  • 資料類型:字串陣列
  • 必要 (Y/N): Y
  • 範例:從來源記錄忽略名為 "age" 和 "gender" 的資料欄:

    "includeFields" : ["age","gender"]

renameFields

下面顯示 renameFields 轉換的組態檔格式。

轉換組態樣板

"transforms" : {
  "renameFields" : {
    "<old_name>" : "<new_name>",
    "<old_name>" : "<new_name>,"
    .....
  }
}

轉換參數

renameFields

  • 目的:要重新命名之資料欄的舊名稱與新名稱的索引鍵 - 值組。

    附註:

    您只能提供最上層欄位。轉換無法套用至巢狀欄位中的資料。
  • 資料類型:JSON 物件
  • 必要 (Y/N): Y
  • 範例:將名稱為 "residence" 的資料欄重新命名為 "address",將名稱為 "_id" 的資料欄重新命名為 "id":

    "renameFields" : { "residence" : "address", "_id" : "id" }

aggregateFields

下面顯示 aggregateFields 轉換的組態檔格式。

轉換組態樣板

"transforms" : {
  "aggregateFields" : {
    "fieldName" : "name of the new aggregate field",
    "skipFields" : ["<field1>","<field2">,...]
  }
}

轉換參數

aggregateFields

  • 目的:槽中聚總欄位的名稱。

  • 資料類型: string
  • 必要 (Y/N): Y
  • 範例:如果指定的記錄為:

    {
      "id" : 100,
      "name" : "john",
      "address" : "USA",
      "age" : 20
    }

    如果聚總轉換是:

    "aggregateFields" : {
      "fieldName" : "document",
      "skipFields" : ["id"]
    }

    接收器中的聚總資料欄如下所示:

    {
      "id": 100,
      "document": {
        "name": "john",
        "address": "USA",
        "age": 20
      }
    }

DynamoDB 類型與 Oracle NoSQL 類型的對應

下表顯示 DynamoDB 類型與 Oracle NoSQL 類型的對應。

表格 - 將 DynamoDB 類型對應至 Oracle NoSQL 類型

# DynamoDB 類型 NoSQL JSON 資料欄的 JSON 類型 Oracle NoSQL 類型
1 字串 (S) JSON 字串 STRING
2 編號類型 (N) JSON 編號 整數 / 長 / 浮點數 / 雙精準數 / 數字
3 布林值 (BOOL) JSON 布林值 BOOLEAN
4 二進位類型 (B) - 位元組緩衝區 BASE-64 編碼的 JSON 字串 BINARY
5 NULL JSON 空值 NULL
6 字串集 (SS) 字串的 JSON 陣列 陣列 (字串)
7 數字集 (NS) JSON 數字陣列 陣列 (整數 / 長 / 浮點數 / 雙精度 / 數字)
8 二元組 (BS) Base-64 編碼字串的 JSON 陣列 陣列 (二進位)
9 清單 (L) JSON 的陣列 陣列 (JSON)
10 地圖 (M) JSON 物件 JSON
11 分割區索引鍵 主要按鍵和標準按鍵
12 排序關鍵字 主索引鍵
13 含破折號和點的屬性名稱 含底線的 JSON 欄位名稱 底線的資料欄名稱
將 DynamoDB 類型對應至 Oracle NoSQL 類型時需要考慮的幾個額外點:
  • DynamoDB 僅支援「數字」一個資料類型,且最多可有 38 位數的精確度,相較之下,Oracle NoSQL 支援多種類型,可根據 data.You 的範圍與精確度選擇適當的「數字」類型,以符合輸入資料的範圍。如果您不確定資料的本質,可以使用 NoSQL NUMBER 類型。
  • DynamoDB 僅支援「數字」一個資料類型,且最多可有 38 位數的精確度,相較之下,Oracle NoSQL 支援多種類型,可根據 data.You 的範圍與精確度選擇適當的「數字」類型,以符合輸入資料的範圍。如果您不確定資料的本質,可以使用 NoSQL NUMBER 類型。
  • DynamoDB 中的分割區索引鍵限制為 2048 個位元組,但 Oracle NoSQL Cloud Service 的主索引鍵 / 分區索引鍵限制為 64 個位元組。
  • DynamoDB 中的排序索引鍵限制為 1024 個位元組,但 Oracle NoSQL Cloud Service 的主索引鍵限制為 64 個位元組。
  • DynamoDB 中的屬性名稱長度可以為 64KB,但 Oracle NoSQL 雲端服務資料欄名稱的限制為 64 個字元。

Oracle NoSQL 至 Parquet 資料類型對應

描述 Oracle NoSQL 資料類型與 Parquet 資料類型的對應。

NoSQL 類型 宴會類型
BOOLEAN BOOLEAN
INTEGER INT32
LONG INT64
FLOAT DOUBLE
DOUBLE DOUBLE
BINARY BINARY
FIXED_BINARY BINARY
STRING 二進位 (字串)
數字 二進位 (字串)

BINARY (ENUM),如果已設定邏輯 ENUM

UUID 二進位 (字串)

FIXED_BINARY (16),如果已設定邏輯 UUID

中文 (繁體) INT64 (TIMESTAMP (p))
NUMBER DOUBLE
field_name 陣列 (T)
group field_name(LIST) {
  repeated group list {
      required T element
  }
}
field_name 地圖 (T)
group field_name (MAP) {
    repeated group key_value (MAP_KEY_VALUE) {
       required binary key (STRING);
        required T value;
    }
}
field_name RECORD(K₁ T₁ N₁, Kٖ₂ T₂ N₂, ....)

其中:

K = 金鑰名稱

T = 類型

N = 可為空值或不可為空值

group field_name {
    ni == true ? optional Ti ki : required Ti ki   
}
JSON 二進位 (字串)

BINARY (JSON),如果已設定邏輯 JSON

附註:

當 NoSQL 編號類型轉換為「宴會雙精度」類型時,如果值無法以「雙精度」表示,則可能會遺失精確度。如果數字太大而無法表示為「雙精度浮點數」,則會轉換為 Double.NEGATIVE_INFINITY 或 Double.POSITIVE_INFINITY。

DynamoDB 表格對應至 Oracle NoSQL 表格

在 DynamoDB 中,表格是項目的集合,每個項目都是屬性集合。表格中的每個項目都有唯一的 ID 或主索引鍵。除了主索引鍵之外,表格是無綱要。每個項目可以有自己的不同屬性。

DynamoDB 支援兩種不同類型的主索引鍵:
  • 分割區索引鍵 - 簡單的主索引鍵,由一個稱為分割區索引鍵的屬性所組成。DynamoDB 使用分割區索引鍵的值作為內部雜湊函數的輸入。雜湊函數的輸出會決定儲存項目的分割區。
  • 分割索引鍵與排序索引鍵 - 作為複合主索引鍵,此類型的索引鍵由兩個屬性組成。第一個屬性是分割區索引鍵,第二個屬性是排序索引鍵。DynamoDB 使用分割區索引鍵值作為內部雜湊函數的輸入。雜湊函數的輸出會決定儲存項目的分割區。所有具有相同分割區索引鍵值的項目都會一起儲存,依排序索引鍵值排序。

相反地,Oracle NoSQL 表格支援具有綱要和無綱要設計的彈性資料模型。

建立 DynamoDB 表格有兩種不同的方法:
  1. 將 DynamoDB 表格模型設計為 JSON 文件 (建議) :在此模型設計中,除了分割區索引鍵和排序索引鍵之外,您將 Dynamo DB 表格的所有屬性對應至 NoSQL 表格的 JSON 資料欄。您將建立分割區索引鍵和排序索引鍵的模型,作為 NoSQL 表格的「主索引鍵」資料欄。您將使用 AggregateFields 轉換,將非主要索引鍵資料聚總至 JSON 資料欄。

    附註:

    「移轉器」提供易於使用的組態 defaultSchema,可自動建立無綱要 DDL 表格,並將屬性聚總至 JSON 資料欄。
  2. 將 DynamoDB 表格模型化為 NoSQL 表格中的固定資料欄:在此模型設定中,對於 DynamoDB 表格的每個屬性,您將在 NoSQL 表格中建立一個資料欄,如將 DynamoDB 類型對應至 Oracle NoSQL 類型中所指定。您將建立分割區索引鍵的模型,並將索引鍵屬性排序為主索引鍵。只有當您確定匯入 DynamoDB 表格綱要是固定的,而且每個項目都有大部分屬性的值時,才應該使用此選項。如果 DynamoDB 項目沒有通用屬性,這可能會導致 NoSQL 資料欄有空白值。

    附註:

    我們強烈建議您在將資料從 DynamoDB 移轉至 Oracle NoSQL Database 時使用無綱要表格,因為 DynamoDB 表格的本質是無綱要的。這特別適用於在表格中,每個記錄內容可能無法統一的大型表格。

Oracle NoSQL Database Migrator 疑難排解

瞭解在使用 時可能面臨的一般挑戰,以及如何解決這些挑戰。

移轉失敗。如何解決此問題?

資料移轉失敗可能是因為多個基本原因所致。重要原因列示如下:

表格 - 移轉失敗原因

錯誤訊息 意義 解析度
Failed to connect to Oracle NoSQL Database 移轉程式無法建立與 NoSQL 資料庫的連線。
  • 檢查組態 JSON 檔案中的 storeNamehelperHosts 屬性值是否有效,以及主機是否可以連線。
  • 對於安全存放區,請以正確的使用者名稱和密碼值驗證安全檔案是否有效。
Failed to connect to Oracle NoSQL Database Cloud Service 移轉程式無法建立與 Oracle NoSQL Database Cloud Service 的連線。
  • 檢查組態 JSON 檔案中指定的端點 URL 或區域名稱是否正確。
  • 檢查組態 JSON 檔案中指定的路徑中是否有 OCI 證明資料檔案。
  • 請確定 OCI 證明資料中提供的 OCI 證明資料有效。
Table not found NoSQL 資料庫移轉程式找不到為移轉識別的表格。

來源:

  • 檢查表格是否在來源資料庫中。
  • 如果表格是在非預設命名空間中建立,請確定表格在組態 JSON 檔案中使用其命名空間。
  • 確認您是否具備存取表格所需的讀取 / 寫入授權。
  • 來源若為 Oracle NoSQL Database Cloud Service ,請檢查組態 JSON 檔案中是否指定有效的區間名稱,並確定您具備存取表格所需的授權。

對於 Sink:

  • 檢查表格是否在「接收器」中。如果不存在,您必須手動建立表格,或使用 schemaInfo 組態透過移轉建立表格。
DDL Execution failed 輸入綱要定義檔中提供的 DDL 命令無效。
  • 檢查 schemaPath 檔案中 DDL 命令的語法。
  • 確定 schemaPath 檔案中每行只有一個 DDL 敘述句。
failed to write record to the sink table with java.lang.IllegalArgumentException 輸入記錄與接收器的表格綱要不相符。
  • 檢查目標接收器表格中指定的資料類型和資料欄名稱是否與接收器表格綱要相符。
  • 如果您套用任何轉換,請檢查轉換後的記錄是否與接收器表格綱要相符。
Request timeout 來源或接收器的作業沒有在預期的時間內完成。
  • 驗證網路連線。
  • 檢查 NoSQL 資料庫是否已啟動並在執行中。
  • 嘗試增加組態 JSON 檔案中的 requestTimeout 值。

重新啟動失敗的移轉之前,應該考慮什麼事項?

資料移轉作業失敗時,接收器會處於包含匯入資料的中間狀態,直到失敗為止。您可以從日誌識別錯誤和失敗詳細資訊,並在診斷並更正錯誤後重新啟動移轉。重新啟動的移轉會從頭開始處理所有資料。沒有方法可以檢查點,然後從失敗點重新啟動移轉。因此,NoSQL Database Migrator 會覆寫已移轉至槽的任何記錄。

移轉速度太慢。我該如何加快速度?

資料移轉所花費的時間取決於多個因素,例如移轉的資料量、網路速度、資料庫目前的負載。如果是雲端服務,移轉速度也取決於讀取傳輸量和佈建的寫入傳輸量。因此,若要提高移轉速度,您可以:
  • 移轉資料時,嘗試減少 Oracle NoSQL Database 上目前的工作負載。
  • 確定執行移轉、來源及接收器的機器都位於相同的資料中心,而且網路延遲極少。
  • 如果是 Oracle NoSQL Database Cloud Service ,請佈建高讀取 / 寫入傳輸量,並確認配置給表格的儲存是否足夠。如果 NoSQL 資料庫移轉程式未建立表格,您可以增加寫入傳輸量。如果移轉器正在建立表格,請考慮在接收器組態中為 schemaInfo.writeUnits 參數指定較高的值。資料移轉完成後,您可以降低此值。請注意處理量變更的每日限制。請參閱雲端限制接收組態範本

我長期執行涉及大型資料集的移轉。如何追蹤移轉進度?

您可以啟用額外的記錄日誌,以追蹤長時間執行移轉的進度。若要控制 Oracle NoSQL Database Migrator 的記錄行為,您必須在 logging.properties 檔案中設定所需的記錄層級。此檔案隨附 NoSQL Database Migrator 套件,可在解壓縮 Oracle NoSQL Database Migrator 的目錄中使用。不同的記錄層次為 OFF, SEVERE, WARNING, INFO, FINE, ALL,順序為增加詳細資訊。將日誌層次設為 OFF 會關閉所有記錄日誌資訊,而將日誌層次設為 ALL 則會提供完整的日誌資訊。預設日誌層次為 WARNING。所有記錄日誌輸出預設都會設定為移至主控台。您可以在 logging.properties 檔案中看到關於每個日誌層次的註解。