Oracle NoSQL Database Migratorリファレンス

Oracle NoSQL Database Migratorで使用可能なソース、シンクおよび変換の構成テンプレート・パラメータについて学習します。

この記事には次のトピックが含まれます:

Parameters

NoSQL Database Migratorには、移行アクティビティを実行するためのすべてのパラメータを定義する構成ファイルが必要です。いくつかのパラメータは複数のソースとシンクに共通しています。このトピックでは、これらの共通パラメータのリストを示します。個々のソースまたはシンクに固有のその他のパラメータのリストについては、対応する構成テンプレートのセクションを参照してください。

共通の構成パラメータ

次の例は、共通の構成パラメータです。例については、個々の構成テンプレートのセクションを参照してください。

bucket

  • 目的: ソース/シンク・オブジェクトを含むOCIオブジェクト・ストレージ・バケットの名前を指定します。

    必要なバケットがOCIオブジェクト・ストレージ・インスタンスに存在し、読取り/書込み権限があることを確認してください。

  • データ型: 文字列
  • 必須(Y/N): Y

chunkSize

  • 用途: シンクに格納される表データのchunkの最大サイズを指定します。値はMB単位です。移行中、表はchunkSizeのチャンクに分割され、各チャンクは別のファイルとしてシンクに書き込まれます。移行するソース・データがchunkSize値を超過すると、新しいファイルが作成されます。

    指定しない場合、デフォルトは32MBです。有効な値は1から1024までの整数です。

  • データ型: 整数
  • 必須(Y/N): N

credentials

  • 用途: OCI資格証明を含むファイルへの絶対パスを指定します。NoSQL Database Migratorは、このファイルを使用して、Oracle NoSQL Database Cloud Service、OCIオブジェクト・ストレージなどのOCIサービスに接続します。

    デフォルト値は$HOME/.oci/configです

    資格証明ファイルの例は、構成例を参照してください。

    ノート:

    認証パラメータcredentialsuseInstancePrincipalおよびuseDelegationTokenは相互に排他的です。これらのパラメータのうち1つのみを構成テンプレートで指定してください。
  • データ型: 文字列
  • 必須(Y/N): N

credentialsProfile

  • Purpose: Specifies the name of the configuration profile to be used to connect to the OCI service such as Oracle NoSQL Database Cloud Service, OCI Object Storage, and so on.ユーザー・アカウント資格証明は、プロファイルと呼ばれます。

    この値を指定しない場合、NoSQL Database MigratorDEFAULTプロファイルを使用します。

    ノート:

    このパラメータは、credentialsパラメータが指定された場合にのみ有効です。
  • データ型: 文字列
  • 必須(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を参照してください。

  • データ型: 文字列
  • 必須(Y/N): Y

format

  • 用途: ソース/シンクの形式を指定します。
  • データ型: 文字列
  • 必須(Y/N): Y

namespace

  • 用途: OCIオブジェクト・ストレージ・サービスのネームスペースを指定します。これはオプション・パラメータです。このパラメータを指定しない場合は、テナンシのデフォルト・ネームスペースが使用されます。

  • データ型: 文字列
  • 必須(Y/N): N

prefix

  • 用途: 接頭辞は、OCIオブジェクト・ストレージ・バケットにデータを格納するための論理コンテナまたはディレクトリとして機能します。

    • ソース構成テンプレート: prefixパラメータが指定されている場合、prefixパラメータで指定されたディレクトリのすべてのオブジェクトが移行されます。それ以外の場合は、バケットに存在するすべてのオブジェクトが移行されます。
    • シンク構成テンプレート: prefixパラメータが指定されている場合、指定した接頭辞を持つディレクトリがバケットに作成され、オブジェクトがこのディレクトリに移行されます。それ以外の場合は、ソースの表名が接頭辞として使用されます。バケットに同じ名前のオブジェクトがある場合、そのオブジェクトは上書きされます。

    接頭辞の詳細は、接頭辞および階層を使用したオブジェクト・ネーミングに関する項を参照してください。

  • データ型: 文字列
  • 必須(Y/N): N

requestTimeoutMs

  • 用途: ストアからの各読取り操作およびストアへの各書込み操作が完了するまで待機する時間を指定します。これはミリ秒単位で指定します。デフォルト値は5000です。値には、任意の正の整数を指定できます。

  • データ型: 整数
  • 必須(Y/N): N

セキュリティ

  • 用途: ストアがセキュア・ストアの場合、ストア資格証明を含むセキュリティ・ログイン・ファイルへの絶対パスを指定します。セキュリティ・ログイン・ファイルの詳細は、管理者ガイドリモート・アクセスでのセキュリティの構成を参照してください。

    パスワード・ファイル・ベースの認証またはウォレット・ベースの認証のいずれかを使用できます。ただし、ウォレット・ベースの認証は、Oracle NoSQL DatabaseのEnterprise Edition (EE)でのみサポートされます。ウォレット・ベースの認証の詳細は、「ソースおよびシンク・セキュリティ」を参照してください。

    Community Edition (CE)エディションでは、パスワード・ファイル・ベースの認証のみがサポートされます。

  • データ型: 文字列
  • 必須(Y/N): Y、 for a secure store

タイプ

  • 用途: ソース/シンク・タイプを識別します。
  • データ型: 文字列
  • 必須(Y/N): Y

useDelegationToken

  • 目的: NoSQL Database Migratorツールが委任トークン認証を使用してOCIサービスに接続するかどうかを指定します。委任トークン認証を使用して、クラウド・シェルから移行ユーティリティを実行する必要があります。委任トークンは、クラウド・シェルの起動時にユーザーに対して自動的に作成されます。

    デフォルト値はfalseです。

  • データ型: boolean
  • 必須(Y/N): N

    ノート:

    • 委任トークンを使用した認証は、NoSQL Database Migratorツールがクラウド・シェルから実行されている場合にのみサポートされます。
    • 認証パラメータcredentialsuseInstancePrincipalおよびuseDelegationTokenは相互に排他的です。これらのパラメータのうち1つのみを構成テンプレートで指定してください。
    • クラウド・シェルでは、次のソースとシンク間の移行のみがサポートされます:
      タイプ 有効なソース 有効なシンク

      Oracle NoSQL Database Cloud Service

      (nosqldb_cloud)

      はい はい
      ファイル(ホーム・ディレクトリのJSONファイル) はい はい

      OCIオブジェクト・ストレージ(JSONファイル)

      (object_storage_oci)

      はい はい

      OCIオブジェクト・ストレージ(Parquetファイル)

      (object_storage_oci)

      N はい

useInstancePrincipal

  • 用途: NoSQLデータベース・マイグレータ・ツールでインスタンス・プリンシパル認証を使用して、Oracle NoSQL Database Cloud Service、OCIオブジェクト・ストレージなどのOCIサービスに接続します。Instance Principal認証方法の詳細は、ソースとシンクのセキュリティを参照してください。

    デフォルト値はfalseです。

    ノート:

    • Instance Principalsでの認証は、OCIコンピュート・インスタンス内でNoSQL Database Migratorツールが実行されている場合にのみサポートされます。たとえば、OCIでホストされているVMで実行されているNoSQL Database Migratorツールなどです。
    • 認証パラメータcredentialsuseInstancePrincipalおよびuseDelegationTokenは相互に排他的です。これらのパラメータのうち1つのみを構成テンプレートで指定してください。
  • データ型: boolean
  • 必須(Y/N): N

ソース構成テンプレート

有効な各ソースのソース構成ファイル書式および各構成パラメータの用途について学習します。

構成ファイル・テンプレートについては、「NoSQLデータ・マイグレータで使用される用語」「構成ファイル」を参照してください。

各ソースの有効なシンク形式の詳細は、シンク構成テンプレートを参照してください。

トピック

次のトピックでは、特定のソースのデータを有効なシンクにコピーするためにOracle NoSQL Database Migratorによって参照されるソース構成テンプレートについて説明します。

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>"
  }
},

ソース・パラメータ

共通の構成パラメータ

一意の構成パラメータ

dataPath

  • 用途: 移行するJSONデータを含むファイルまたはディレクトリへの絶対パスを指定します。

    このデータがシンクで定義されているNoSQL表スキーマと一致することを確認する必要があります。ディレクトリを指定すると、NoSQL Database Migratorによって、そのディレクトリ内の拡張子が.jsonのすべてのファイルが移行対象として識別されます。サブディレクトリはサポートされていません。

  • データ型: 文字列
  • 必須(Y/N): Y
  • 例:
    • JSONファイルの指定

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

    • ディレクトリの指定

      "dataPath" : "/home/user"

schemaInfo

  • 用途: 移行対象のソース・データのスキーマを指定します。このスキーマはNoSQLシンクに渡されます。

  • データ型: オブジェクト
  • 必須(Y/N): N

schemaInfo.schemaPath

  • 用途: 移行対象のNoSQL表のDDL文を含むスキーマ定義ファイルへの絶対パスを指定します。

  • データ型: 文字列
  • 必須(Y/N): Y
  • 例:
    "schemaInfo": {
      "schemaPath": "<path to the schema file>"
    }

OCIオブジェクト・ストレージ・バケットのJSONファイル

NoSQL Database MigratorのソースとしてのOCIオブジェクト・ストレージ・バケットのJSONファイルの構成ファイル形式を次に示します。

ソース構成テンプレートでバケットの名前を指定することで、OCIオブジェクト・ストレージ・バケット内のJSONファイルを移行できます。

OCIオブジェクト・ストレージ・バケットのサンプル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オブジェクト・ストレージのソース・タイプの有効なシンク・タイプは、nosqldbおよびnosqldb_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" を使用します

  • エンドポイント
    次に例を示します:
    • リージョンID: "endpoint" : "us-ashburn-1"

    • URL形式: "endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • ネームスペース

    例: "namespace" : "my-namespace"

  • bucket

    例: "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 Database Migratorがクラウド・シェルから実行されている場合にのみサポートされます。

一意の構成パラメータ

schemaInfo

  • 用途: 移行対象のソース・データのスキーマを指定します。このスキーマはNoSQLシンクに渡されます。

  • データ型: オブジェクト
  • 必須(Y/N): N

schemaInfo.schemaObject

  • 用途: 移行対象データのNoSQL表スキーマ定義が格納されるバケット内のオブジェクトの名前を指定します。

  • データ型: 文字列
  • 必須(Y/N): Y
  • 例:
    "schemaInfo": {
      "schemaObject": "mytable/Schema/schema.ddl"
    },

MongoDB- フォーマット済JSONファイル

NoSQLデータベース・マイグレータのソースとしてのMongoDB形式のJSONファイルの構成ファイル形式を次に示します。

MongoDBでエクスポートされたJSONデータを移行するには、ソース構成テンプレートでファイルまたはディレクトリを指定します。

MongoDBは、標準モードおよび緩和モードの2種類のファイルのJSON形式に対する拡張をサポートしています。モンゴエクスポート・ツールを使用して正規モードまたは緩和モードで生成されるMongoDB形式のJSONファイルを指定できます。どちらのモードも、移行のためにNoSQL Database Migratorでサポートされています。

MongoDB Extended JSON (v2)ファイルの詳細は、mongoexport_formatsを参照してください。

MongoDB形式のJSONファイルの生成の詳細は、mongoexportを参照してください。

A sample MongoDB-formatted Relaxed mode JSON file is as follows:
{"_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>"
  }
}

ソース・パラメータ

共通の構成パラメータ

一意の構成パラメータ

dataPath

  • 用途: 移行するMongoDBエクスポート済JSONデータを含むファイルまたはディレクトリへの絶対パスを指定します。

    mongoexportツールを使用して生成されるMongoDB形式のJSONファイルを指定できます。

    ディレクトリを指定すると、NoSQL Database Migratorによって、そのディレクトリ内の拡張子が.jsonのすべてのファイルが移行対象として識別されます。サブディレクトリはサポートされていません。このデータがシンクで定義されているNoSQL表スキーマと一致することを確認する必要があります。

  • データ型: 文字列
  • 必須(Y/N): Y
  • 例:
    • MongoDB形式のJSONファイルの指定

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

    • ディレクトリの指定

      "dataPath" : "/home/user"

schemaInfo

  • 用途: 移行対象のソース・データのスキーマを指定します。このスキーマはNoSQLシンクに渡されます。

  • データ型: オブジェクト
  • 必須(Y/N): N

schemaInfo.schemaPath

  • 用途: 移行対象のNoSQL表のDDL文を含むスキーマ定義ファイルへの絶対パスを指定します。

  • データ型: 文字列
  • 必須(Y/N): Y
  • 例:
    "schemaInfo" : {
      "schemaPath" : "/home/user/mytable/Schema/schema.ddl"
    }

MongoDB-OCIオブジェクト・ストレージ・バケット内のフォーマット済JSONファイル

NoSQL Database MigratorのソースとしてのOCIオブジェクト・ストレージ・バケットのMongoDB形式のJSONファイルの構成ファイル形式を次に示します。

MongoDBでエクスポートされたJSONデータをOCIオブジェクト・ストレージ・バケットに移行するには、ソース構成テンプレートでバケットの名前を指定します。

モンゴエクスポート・ユーティリティを使用してMongoDBからデータを抽出し、OCIオブジェクト・ストレージ・バケットにアップロードします。詳細は、mongoexportを参照してください。MongoDBは、標準モードおよび緩和モードの2種類のファイルのJSON形式に対する拡張をサポートしています。どちらの形式も、OCIオブジェクト・ストレージ・バケットでサポートされています。

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オブジェクト・ストレージのソース・タイプの有効なシンク・タイプは、nosqldbおよびnosqldb_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" を使用します

  • エンドポイント
    次に例を示します:
    • リージョンID: "endpoint" : "us-ashburn-1"

    • URL形式: "endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • ネームスペース

    例: "namespace" : "my-namespace"

  • bucket

    例: "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シンクに渡されます。

  • データ型: オブジェクト
  • 必須(Y/N): N

schemaInfo.schemaObject

  • 用途: 移行対象データのNoSQL表スキーマ定義が格納されるバケット内のオブジェクトの名前を指定します。

  • データ型: 文字列
  • 必須(Y/N): Y
  • 例:
    "schemaInfo": {
      "schemaObject": "mytable/Schema/schema.ddl"
    }

DynamoDB-AWS S3に格納されたフォーマット済JSONファイル

NoSQLデータベース・マイグレータのソースとしてAWS S3にあるDynamoDB形式のJSONファイルの構成ファイル形式を次に示します。

DynamoDBエクスポートされたJSONデータを含むファイルは、ソース構成テンプレートでパスを指定することで、AWS S3ストレージから移行できます。

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"}}}

Amazon S3へのDynamoDB表データのエクスポートの説明に従って、DynamoDB表をAWS S3ストレージにエクスポートする必要があります。

AWS S3に格納されているDynamoDB形式のJSONの有効なシンク・タイプは、nosqldbおよびnosqldb_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の場合、formatはdynamodb_jsonである必要があります。

一意の構成パラメータ

s3URL

  • 用途: AWS S3に格納されているエクスポートされたDynamoDB表のURLを指定します。このURLは、AWSのS3コンソールから取得できます。有効なURL形式はhttps://<bucket-name>.<s3_endpoint>/<prefix>です。NoSQL Database Migratorは、インポートする接頭辞内でjson.gzファイルを検索します。

    ノート:

    DynamoDB表のAmazon S3へのエクスポートに関する項の説明に従って、DynamoDB表をエクスポートする必要があります。
  • データ型: 文字列
  • 必須(Y/N): Y
  • 例: https://my-bucket.s3.ap-south-1.amazonaws.com/AWSDynamoDB/01649660790057-14f642be

credentials

  • 用途: AWS資格証明を含むファイルへの絶対パスを指定します。指定しない場合は、デフォルトで$HOME/.aws/credentialsに設定されます。資格証明ファイルの詳細は、構成および資格証明ファイルの設定を参照してください。
  • データ型: 文字列
  • 必須(Y/N): N
  • 例:
    "credentials" : "/home/user/.aws/credentials"
    "credentials" : "/home/user/security/credentials

    ノート:

    NoSQL Database Migratorは、資格証明情報をログに記録しません。資格証明ファイルを不正アクセスから適切に保護する必要があります。

credentialsProfile

  • 用途: AWS S3への接続に使用するAWS資格証明ファイルのプロファイルの名前。ユーザー・アカウント資格証明は、プロファイルと呼ばれます。この値を指定しない場合、NoSQL Database Migratordefaultプロファイルを使用します。資格証明ファイルの詳細は、構成および資格証明ファイルの設定を参照してください。
  • データ型: 文字列
  • 必須(Y/N): N
  • 例:
    "credentialsProfile" : "default"
    "credentialsProfile" : "test"

DynamoDB- フォーマット済JSONファイル

NoSQLデータベース・マイグレータのソースとしてDynamoDB形式のJSONファイルの構成ファイル形式を次に示します。

ソース構成テンプレートでパスを指定することで、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ファイルの有効なシンク・タイプは、nosqldbおよびnosqldb_cloudです。

ソース構成テンプレート
"source" : {
  "type" : "file",
  "format" : "dynamodb_json",
  "dataPath" : "<path/to/[file|dir]/containing/exported/DDB/tabledata>"   
}

ソース・パラメータ

共通の構成パラメータ

一意の構成パラメータ

dataPath

  • 用途:エクスポートされたDynamoDB表データを含むファイルまたはディレクトリへの絶対パスを指定します。エクスポートされたDynamoDB表データをAWS S3からローカルにマウントされたファイル・システムにコピーする必要があります。このデータがシンクで定義されているNoSQL表スキーマと一致することを確認する必要があります。ディレクトリを指定すると、NoSQL Database Migratorによって、そのディレクトリおよびdataサブディレクトリ内の.json.gz拡張子を持つすべてのファイルが識別されます。
  • データ型: 文字列
  • 必須(Y/N): Y
  • 例:
    • ファイルの指定
      "dataPath" : "/home/user/AWSDynamoDB/01639372501551-bb4dd8c3/data/zclclwucjy6v5mkefvckxzhfvq.json.gz"
    • ディレクトリの指定
      "dataPath" : "/home/user/AWSDynamoDB/01639372501551-bb4dd8c3"

Oracle NoSQL Database

NoSQL Database移行元のソースとしての Oracle NoSQL Databaseの構成ファイル形式を次に示します。

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ストアの名前。

  • データ型: 文字列
  • 必須(Y/N): Y
  • 例: "storeName" : "kvstore"

helperHosts

  • 用途: hostname:port形式のホストとレジストリ・ポートのペアのリスト。カンマを使用してリスト内の各アイテムを区切ります。少なくとも1つのヘルパー・ホストを指定する必要があります。

  • データ型: 文字列の配列
  • 必須(Y/N): Y
  • 例: "helperHosts" : ["localhost:5000","localhost:6000"]

  • 用途: データの移行元の完全修飾表名。

    形式: [namespace_name:]<table_name>

    表がDEFAULTネームスペースにある場合は、namespace_nameを省略できます。この表はストアに存在する必要があります。

  • データ型: 文字列
  • 必須(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"
    }
  • データ型: boolean
  • 必須(Y/N): N
  • 例: "includeTTL" : true

Oracle NoSQL Database Cloud Service

NoSQL Database移行元のソースとしての Oracle NoSQL Database Cloud Serviceの構成ファイル形式を次に示します。

Oracle NoSQL Database Cloud Serviceから表を移行するには、表がソース構成テンプレートにあるコンパートメントの名前またはOCIDを指定します。

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" の使用

  • エンドポイント
    次に例を示します:
    • リージョンID: "endpoint" : "us-ashburn-1"

    • URL形式: "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 Database Migratorがクラウド・シェルから実行されている場合にのみサポートされます。
  • requestTimeoutMs

    例: "requestTimeoutMs" : 5000

一意の構成パラメータ

  • 用途: データの移行元となる表の名前。

  • データ型: 文字列
  • 必須(Y/N): Y
  • 例:
    • "table" : "myTable" を指定する場合
    • 子表"table" : "mytable.child" を指定する場合

コンパートメント

  • 用途: 表が存在するコンパートメントの名前またはOCIDを指定します。

    値を指定しない場合は、デフォルトでルートコンパートメントに設定されます。

    コンパートメントのOCIDは、OCI Cloudコンソールの「ガバナンス」の「コンパートメント・エクスプローラ」ウィンドウから確認できます。

  • データ型: 文字列
  • 必須(Y/N): 表がテナントまたはuseInstancePrincipalパラメータがtrueに設定されている場合、Y。

    ノート:

    useInstancePrincipalパラメータがtrueに設定されている場合、コンパートメントは名前ではなくコンパートメントOCIDを指定する必要があります。
  • 例:
    • コンパートメント名

      "compartment" : "mycompartment"

    • 親コンパートメントで修飾されたコンパートメント名

      "compartment" : "parent.childcompartment"

    • 値が指定されていません。デフォルトはルート・コンパートメントです。

      "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"
    }
  • データ型: boolean
  • 必須(Y/N): N
  • 例: "includeTTL" : true

CSVファイル・ソース

NoSQL Database MigratorのソースとしてのCSVファイルの構成ファイル形式を次に示します。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>"
 }
}

ソース・パラメータ

共通の構成パラメータ

一意の構成パラメータ

datapath

  • 用途: 移行するCSVデータを含むファイルまたはディレクトリへの絶対パスを指定します。ディレクトリを指定した場合、NoSQL Database Migratorは、そのディレクトリ内の.csvまたは.CSV拡張子を持つすべてのファイルをインポートします。すべてのCSVファイルは単一の表にコピーされますが、特定の順序ではコピーされません。

    CSVファイルは、RFC4180標準に準拠している必要があります。各CSVファイルのデータとシンク表に定義されているNoSQL Database表スキーマを一致させる必要があります。サブディレクトリはサポートされていません。

  • データ型: 文字列
  • 必須(Y/N): Y
  • 例:
    • CSVファイルの指定

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

    • ディレクトリの指定

      "dataPath" : "/home/user"

ノート:

CSVファイルにはスカラー値のみが含まれている必要があります。MAP、RECORD、ARRAY、JSONなどの複合タイプを含むCSVファイルのインポートはサポートされていません。NoSQL Database移行ツールは、入力CSVファイル内のデータの正確性をチェックしません。NoSQL Database Migratorツールは、RFC4180形式に準拠したCSVデータのインポートをサポートしています。RFC4180標準に準拠していないデータを含むCSVファイルは、正しくコピーされないか、エラーが発生する可能性があります。入力データが破損している場合、NoSQL Database MigratorツールではCSVレコードは解析されません。移行中にエラーが発生した場合、NoSQL Database Migratorツールは、デバッグ目的および情報を得る目的で失敗した入力レコードに関する情報をログに記録します。詳細は、「Oracle NoSQLデータ・マイグレータの使用」「ミグレータの進捗度のロギング」を参照してください。

hasHeader

  • 用途: CSVファイルにヘッダーがあるかどうかを指定します。これがtrueに設定されている場合、最初の行は無視されます。falseに設定すると、最初の行はCSVレコードとみなされます。デフォルト値はfalseです。

  • データ型: ブール
  • 必須(Y/N): N
  • 例: "hasHeader" : "false"

  • 用途: NoSQL Database表の列名のリストを指定します。列名の順序は、CSVファイル・フィールドと対応するNoSQL Database表の列のマッピングを示します。入力CSVファイルの列の順序が、既存または新規に作成されたNoSQL Database表の列と一致しない場合は、このパラメータを使用して順序をマップできます。また、アイデンティティ列を含む表にインポートする場合は、columnsパラメータのアイデンティティ列名をスキップできます。

    ノート:

    • NoSQL Database表にCSVファイルで使用できない追加列がある場合、欠落している列の値は、NoSQL Database表に定義されているデフォルト値で更新されます。デフォルト値が指定されていない場合は、移行中にNull値が挿入されます。デフォルト値の詳細は、SQLリファレンス・ガイドデータ型定義に関する項を参照してください。
    • CSVファイルに、NoSQL Databaseテーブルで定義されていない追加のカラムがある場合、追加のカラム情報は無視されます。
    • CSVレコードのいずれかの値が空の場合、NoSQL Database表の対応する列のデフォルト値に設定されます。デフォルト値が指定されていない場合は、移行中にNull値が挿入されます。
  • データ型: 文字列の配列
  • 必須(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ファイル

NoSQL Database MigratorのソースとしてのOCIオブジェクト・ストレージ・バケットのCSVファイルの構成ファイル形式を次に示します。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オブジェクト・ストレージのソース・タイプの有効なシンク・タイプは、nosqldbおよびnosqldb_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" を使用します

  • エンドポイント
    次に例を示します:
    • リージョンID: "endpoint" : "us-ashburn-1"

    • URL形式: "endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • ネームスペース

    例: "namespace" : "my-namespace"

  • bucket

    例: "bucket" : "my-bucket"

    ノート:

    • NoSQL Database Migratorは、.csvまたは.CSV拡張子を持つすべてのファイルをオブジェクト単位でインポートし、同じ順序で単一の表にコピーします。
    • CSVファイルにはスカラー値のみが含まれている必要があります。MAP、RECORD、ARRAY、JSONなどの複合タイプを含むCSVファイルのインポートはサポートされていません。NoSQL Database移行ツールは、入力CSVファイル内のデータの正確性をチェックしません。NoSQL Database Migratorツールは、RFC4180形式に準拠したCSVデータのインポートをサポートしています。RFC4180標準に準拠していないデータを含むCSVファイルは、正しくコピーされないか、エラーが発生する可能性があります。入力データが破損している場合、NoSQL Database MigratorツールではCSVレコードは解析されません。移行中にエラーが発生した場合、NoSQL Database Migratorツールは、デバッグ目的および情報を得る目的で失敗した入力レコードに関する情報をログに記録します。詳細は、「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"

  • 用途: NoSQL Database表の列名のリストを指定します。列名の順序は、CSVファイル・フィールドと対応するNoSQL Database表の列のマッピングを示します。入力CSVファイルの列の順序が、既存または新規に作成されたNoSQL Database表の列と一致しない場合は、このパラメータを使用して順序をマップできます。また、アイデンティティ列を含む表にインポートする場合は、columnsパラメータのアイデンティティ列名をスキップできます。

    ノート:

    • NoSQL Database表にCSVファイルで使用できない追加列がある場合、欠落している列の値は、NoSQL Database表に定義されているデフォルト値で更新されます。デフォルト値が指定されていない場合は、移行中にNull値が挿入されます。デフォルト値の詳細は、SQLリファレンス・ガイドデータ型定義に関する項を参照してください。
    • CSVファイルに、NoSQL Databaseテーブルで定義されていない追加のカラムがある場合、追加のカラム情報は無視されます。
    • CSVレコードのいずれかの値が空の場合、NoSQL Database表の対応する列のデフォルト値に設定されます。デフォルト値が指定されていない場合は、移行中にNull値が挿入されます。
  • データ型: 文字列の配列
  • 必須(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"

シンク構成テンプレート

有効な各シンク用のシンク構成ファイル形式および各構成パラメータの用途について学習します。

構成ファイル・テンプレートについては、「NoSQLデータ・マイグレータで使用される用語」「構成ファイル」を参照してください。
各シンクの有効なソース形式の詳細は、ソース構成テンプレートを参照してください。

トピック

次のトピックでは、有効なソースのデータを特定のシンクにコピーするためにOracle NoSQL Database Migratorによって参照されるシンク構成テンプレートについて説明します。

JSONファイル・シンク

NoSQL Database Migratorのシンクとしての 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 Database Migratorによって作成されます。存在する場合は、NoSQL Database Migratorによってその内容がソース・データで上書きされます。

    データ・パス内の親ディレクトリが、指定したファイルに対して有効であることを確認する必要があります。

    ノート:

    useMultiFilesパラメータがtrueに設定されている場合、ディレクトリへのパスを指定し、それ以外の場合はファイルへのパスを指定します。
  • データ型: 文字列
  • 必須(Y/N): Y
  • 例:
    • useMultiFilesパラメータがtrueに設定されている場合

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

    • useMultiFilesパラメータが指定されていない場合、またはfalseに設定されている場合

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

schemaPath

  • 用途: ソースによって提供される表スキーマ情報を書き込むファイルへの絶対パスを指定します。

    この値を定義しないと、ソース・スキーマ情報はシンクに移行されません。この値を指定すると、マイグレータ・ユーティリティによって、ここで指定したファイルにソース表のスキーマが書き込まれます。

    スキーマ情報は、このファイルの行ごとに1つのDDLコマンドとして書き込まれます。指定されたデータ・パスにファイルが存在しない場合は、NoSQL Database Migratorによって作成されます。すでに存在する場合は、NoSQL Database Migratorによってその内容がソース・データで上書きされます。データ・パス内の親ディレクトリが、指定したファイルに対して有効であることを確認する必要があります。

  • データ型: 文字列
  • 必須(Y/N): N
  • 例: "schemaPath" : "/home/user/schema_file"

みりょくて

  • 用途: JSON出力を整形して読みやすくするかどうかを指定します。

    指定しなかった場合は、デフォルトでFalseに設定されます。

  • データ型: boolean
  • 必須(Y/N): N
  • 例: "pretty" : true

useMultiFiles

  • 用途: ファイルへのソース・データの移行時に、NoSQL表データを複数のファイルに分割するかどうかを指定します。

    指定しなかった場合は、デフォルトでFalseに設定されます。

    trueに設定すると、ソース・データをファイルに移行するときに、NoSQL表データが複数の小さいファイルに分割されます。たとえば、<chunk>.jsonです(chunk=00,0,0,0,0,0,0、、0、、0、、0、、0、、、など)。

    dataPath
             |--000000.json
             |--000001.json
  • データ型: boolean
  • 必須(Y/N): N
  • 例: "useMultiFiles" : true

Parquetファイル

NoSQL Database Migratorのシンクとしての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表データを格納するためのディレクトリへのパスを指定します。ディレクトリがすでに存在し、読取り権限および書込み権限があることを確認します。

  • データ型: 文字列
  • 必須(Y/N): Y
  • 例: "dataPath" : "/home/user/migrator/my_table"

圧縮

  • 用途: Parquetデータを圧縮するために使用する圧縮タイプを指定します。有効な値は、SNAPPYGZIPおよびNONEです。

    指定しない場合は、デフォルトでSNAPPYに設定されます。

  • データ型: 文字列
  • 必須(Y/N): N
  • 例: "compression" : "GZIP"

parquetOptions

  • 用途: NoSQL ENUM、JSONおよびUUID列のParquet論理型を選択するオプションを指定します。

    このパラメータを指定しない場合、NoSQL Database Migratorは、ENUM、JSONおよびUUID列のデータを文字列として書き込みます。

  • データ型: オブジェクト
  • 必須(Y/N): N

parquetOptions.useLogicalJson

  • 用途: NoSQL JSON列データをParquet論理JSON型として書き込むかどうかを指定します。詳細は、Parquet論理型の定義を参照してください。

    指定されていないかfalseに設定されている場合、NoSQL Database MigratorはNoSQL JSON列データを文字列として書き込みます。

  • データ型: boolean
  • 必須(Y/N): N
  • 例: "useLogicalJson" : true

parquetOptions.useLogicalEnum

  • 用途: NoSQL ENUM列データをParquet論理ENUM型として書き込むかどうかを指定します。詳細は、Parquet論理型の定義を参照してください。

    指定されていないかfalseに設定されている場合、NoSQL Database MigratorはNoSQL ENUM列データを文字列として書き込みます。

  • データ型: boolean
  • 必須(Y/N): N
  • 例: "useLogicalEnum" : true

parquetOptions.useLogicalUUID

  • 用途: NoSQL UUID列データをParquet論理UUID型として書き込むかどうかを指定します。詳細は、Parquet論理型の定義を参照してください。

    指定されていないかfalseに設定されている場合、NoSQL Database MigratorはNoSQL UUID列データを文字列として書き込みます。

  • データ型: boolean
  • 必須(Y/N): N
  • 例: "useLogicalUUID" : true

parquetOptions.truncateDoubleSpecials

  • 用途: doubleの+Infinity、-InfinityおよびNaN値を切り捨てるかどうかを指定します。

    デフォルトでは、falseに設定されています。trueに設定されている場合、
    • Positive_InfinityはDouble.MAX_VALUEに切り捨てられます。
    • NEGATIVE_INFINITYは-Double.MAX_VALUEに切り捨てられます。
    • NaNは9.9999999999999990E307に切り捨てられます。
  • データ型: boolean
  • 必須(Y/N): N
  • 例: "truncateDoubleSpecials" : true

OCIオブジェクト・ストレージ・バケットのJSONファイル

NoSQL Database MigratorのシンクとしてのOCIオブジェクト・ストレージ・バケットのJSONファイルの構成ファイル形式を次に示します。

ノート:

シンクとしてのOCIオブジェクト・ストレージの有効なソース・タイプは、nosqldbおよびnosqldb_cloudです。

シンク構成テンプレート

"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" を使用します

  • エンドポイント
    次に例を示します:
    • リージョンID: "endpoint" : "us-ashburn-1"

    • URL形式: "endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • ネームスペース

    例: "namespace" : "my-namespace"

  • bucket

    例: "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 Database Migratorがクラウド・シェルから実行されている場合にのみサポートされます。

一意の構成パラメータ

pretty

  • 用途: JSON出力を整形して読みやすくするかどうかを指定します。

    指定しなかった場合は、デフォルトでFalseに設定されます。

  • データ型: boolean
  • 必須(Y/N): N
  • 例: "pretty" : true

OCIオブジェクト・ストレージ・バケットのパーケット・ファイル

NoSQL Database MigratorのシンクとしてのOCIオブジェクト・ストレージ・バケットのParquetファイルの構成ファイル形式を次に示します。

ノート:

OCIオブジェクト・ストレージのソース・タイプの有効なソース・タイプは、nosqldbおよびnosqldb_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" を使用します

  • エンドポイント
    次に例を示します:
    • リージョンID: "endpoint" : "us-ashburn-1"

    • URL形式: "endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"

  • ネームスペース

    例: "namespace" : "my-namespace"

  • bucket

    例: "bucket" : "my-bucket"

  • 接頭辞

    ソース・データは、<prefix>/Data/<chunk>.parquetファイル(chunk=00000.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 Database Migratorがクラウド・シェルから実行されている場合にのみサポートされます。

一意の構成パラメータ

圧縮

  • 用途: Parquetデータを圧縮するために使用する圧縮タイプを指定します。有効な値は、SNAPPYGZIPおよびNONEです。

    指定しない場合は、デフォルトでSNAPPYに設定されます。

  • データ型: 文字列
  • 必須(Y/N): N
  • 例: "compression" : "GZIP"

parquetOptions

  • 用途: NoSQL ENUM、JSONおよびUUID列のParquet論理型を選択するオプションを指定します。

    このパラメータを指定しない場合、NoSQL Database Migratorは、ENUM、JSONおよびUUID列のデータを文字列として書き込みます。

  • データ型: オブジェクト
  • 必須(Y/N): N

parquetOptions.useLogicalJson

  • 用途: NoSQL JSON列データをParquet論理JSON型として書き込むかどうかを指定します。詳細は、Parquet論理型の定義を参照してください。

    指定されていないかfalseに設定されている場合、NoSQL Database MigratorはNoSQL JSON列データを文字列として書き込みます。

  • データ型: boolean
  • 必須(Y/N): N
  • 例: "useLogicalJson" : true

parquetOptions.useLogicalEnum

  • 用途: NoSQL ENUM列データをParquet論理ENUM型として書き込むかどうかを指定します。詳細は、Parquet論理型の定義を参照してください。

    指定されていないかfalseに設定されている場合、NoSQL Database MigratorはNoSQL ENUM列データを文字列として書き込みます。

  • データ型: boolean
  • 必須(Y/N): N
  • 例: "useLogicalEnum" : true

parquetOptions.useLogicalUUID

  • 用途: NoSQL UUID列データをParquet論理UUID型として書き込むかどうかを指定します。詳細は、Parquet論理型の定義を参照してください。

    指定されていないかfalseに設定されている場合、NoSQL Database MigratorはNoSQL UUID列データを文字列として書き込みます。

  • データ型: boolean
  • 必須(Y/N): N
  • 例: "useLogicalUUID" : true

parquetOptions.truncateDoubleSpecials

  • 用途: doubleの+Infinity、-InfinityおよびNaN値を切り捨てるかどうかを指定します。

    デフォルトでは、falseに設定されています。trueに設定されている場合、
    • Positive_InfinityはDouble.MAX_VALUEに切り捨てられます。
    • NEGATIVE_INFINITYは-Double.MAX_VALUEに切り捨てられます。
    • NaNは9.9999999999999990E307に切り捨てられます。
  • データ型: boolean
  • 必須(Y/N): N
  • 例: "truncateDoubleSpecials" : true

Oracle NoSQL Database

NoSQL Database移行者のシンクとしての Oracle NoSQL Databaseの構成ファイル形式を次に示します。

シンク構成テンプレート

"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ストアの名前。

  • データ型: 文字列
  • 必須(Y/N): Y
  • 例: "storeName" : "kvstore"

helperHosts

  • 用途: hostname:port形式のホストとレジストリ・ポートのペアのリスト。カンマを使用してリスト内の各アイテムを区切ります。少なくとも1つのヘルパー・ホストを指定する必要があります。

  • データ型: 文字列の配列
  • 必須(Y/N): Y
  • 例: "helperHosts" : ["localhost:5000","localhost:6000"]

  • 用途: 移行されたデータを格納する表名を指定します。

    形式: [namespace_name:]<table_name>

    表がDEFAULTネームスペースにある場合は、namespace_nameを省略できます。移行時に表が存在し、そのスキーマがソース・データと一致している必要があります。

    シンクで表を使用できない場合は、schemaInfoパラメータを使用して、シンクに表を作成するようにNoSQL Database Migratorに指示できます。

  • データ型: 文字列
  • 必須(Y/N): Y
  • 例:
    • DEFAULTネームスペース"table" :"mytable"

    • デフォルト以外のネームスペース"table" : "mynamespace:mytable" を使用

    • 子表"table" : "mytable.child" を指定する場合

      ノート:

      有効なデータ・ソースからOracle NoSQL Databaseに子表を移行できます。NoSQL Database Migratorでは、実行ごとに1つの表のみをコピーします。親表が子表の前に移行されていることを確認します。

includeTTL

  • 用途: Oracle NoSQL Database表のインポート時にソースによって提供される表の行のTTLメタデータを含めるかどうかを指定します。

    このパラメータを指定しない場合、デフォルトはfalseです。この場合、NoSQL Database Migratorには、Oracle NoSQL Database表のインポート時にソースによって提供される表の行のTTLメタデータは含まれません。

    trueに設定すると、NoSQL Database Migratorツールは、表の行のインポート時にTTLメタデータに対して次のチェックを実行します。
    • _metadata定義を持たない行をインポートすると、NoSQL Database MigratorツールはTTLを0に設定します。これは、行が期限切れにならないことを意味します。
    • _metadata定義を持つ行をインポートすると、NoSQL Database Migratorツールは、行がインポートされたときにTTL値を参照します。参照時間に対してすでに失効している行はスキップされます。行が失効していない場合は、TTL値とともにインポートされます。デフォルトでは、インポート操作の参照時間は、NoSQLデータベース・マイグレータ・ツールが実行されているマシンの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)です。
  • データ型: boolean
  • 必須(Y/N): N
  • 例: "includeTTL" : true

ttlRelativeDate

  • 用途: Oracle NoSQL Databaseへのインポート中の表の行のTTL失効の設定に使用されるYYYY-MM-DD hh:mm:ss形式でUTC日付を指定します。

    エクスポートするデータの表の行が期限切れになった場合は、ttlRelativeDateパラメータに、エクスポートしたデータの表の行の有効期限より前の日付を設定できます。

    このパラメータを指定しない場合は、NoSQL Database Migratorツールが実行されているマシンのSystem.currentTimeMillis()から取得された現在の時間がミリ秒単位でデフォルト設定されます。

  • データ型: date
  • 必須(Y/N): N
  • 例: "ttlRelativeDate" : "2021-01-03 04:31:17"

    表の行が2021年1月1日から7日後に失効するシナリオについて検討します。この表をエクスポートした後、2021年1月7日に、表の問題が発生し、データをインポートすることにしました。表の行は1日で失効します(データ有効期限から現在の日付であるttlRelativedate構成パラメータのデフォルト値を引いた値)。ただし、表の行の有効期限を1日ではなく5日に延長する場合は、ttlRelativeDateパラメータを使用して前の日付を選択します。したがって、このシナリオでは、表の行の有効期限を5日延長する場合、ttlRelativeDate構成パラメータの値を2021年1月3日に設定します。これは、表の行がインポートされるときに参照時間として使用されます。

Schemainfo

  • 用途: 移行対象データのスキーマを指定します。これが指定されていない場合、NoSQL Database Migratorは、表がシンクのストアにすでに存在します。

  • データ型: オブジェクト
  • 必須(Y/N): N

schemaInfo.schemaPath

  • 用途: NoSQL表のDDL文を含むファイルへの絶対パスを指定します。

    NoSQL Database Migratorは、データを移行する前に、このファイルにリストされているDDLコマンドを実行します。

    NoSQL Database Migratorでは、schemaPathファイルの行ごとに複数のDDL文をサポートしていません。

  • データ型: 文字列

  • 必須(Y/N): N

    ノート:

    defaultSchemaschemaPathは相互に排他的です。
  • 例: "schemaPath" : "/home/user/schema_file"

schemaInfo.defaultSchema

  • 用途: このパラメータをtrueに設定すると、NoSQL Database Migratorではデフォルト・スキーマを使用して表が作成されます。デフォルト・スキーマは、マイグレータ自体によって定義されます。デフォルト・スキーマ定義の詳細は、Oracle NoSQLデータ・マイグレータの使用デフォルト・スキーマを参照してください。

  • データ型: boolean

  • 必須(Y/N): N

    ノート:

    defaultSchemaschemaPathは相互に排他的です。

schemaInfo.useSourceSchema

  • 用途: NoSQL表の移行時にソースによって提供される表スキーマ定義のシンクを使用するかどうかを指定します。

  • データ型: boolean

  • 必須(Y/N): N

    ノート:

    defaultSchemaschemaPathおよびuseSourceSchemaパラメータは相互に排他的です。これらのパラメータのうち1つのみを指定してください。
  • 例:
    • デフォルト・スキーマを使用:
      "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 DB表のシャード・キーとして使用されます。これは、defaultSchemaがtrueに設定され、ソースの形式がdynamodb_jsonの場合にのみ適用されます。詳細は、「DynamoDB型からOracle NoSQL型へのマッピング」 を参照してください。
  • 必須(Y/N): defaultSchemaがtrueで、ソースがdynamodb_jsonの場合、Y。
  • 例: "DDBPartitionKey" : "PersonID:INTEGER"

    ノート:

    パーティション・キーにダッシュ(-)またはドット(.)が含まれている場合、NoSQL列名ではドットとダッシュがサポートされていないため、マイグレータはそれをアンダースコア(_)に置き換えます。

schemaInfo.DDBSortKey

  • 用途: ターゲットのOracle NoSQL Database表で使用するDynamoDBソート・キーおよび対応するOracle NoSQL Database型を指定します。インポートするDynamoDB表にソート・キーがない場合は、この属性は設定しないでください。このキーは、NoSQL DB表の主キーの非シャード部分として使用されます。これは、defaultSchemaがtrueに設定され、ソースがdynamodb_jsonの場合にのみ適用されます。詳細は、「DynamoDB型からOracle NoSQL型へのマッピング」 を参照してください。
  • 必須(Y/N): N
  • 例: "DDBSortKey" : "Skey:STRING"

    ノート:

    ソート・キーにダッシュ(-)またはドット(.)が含まれている場合、NoSQL列名ではドットとダッシュがサポートされていないため、マイグレータはそれをアンダースコア(_)に置き換えます。

overwrite

  • 用途: ソースから移行されるレコードがすでにシンクに存在している場合のNoSQL Database Migratorの動作を示します。

    値をfalseに設定すると、表を移行するときに、NoSQL Database Migratorは、同じ主キーがシンクにすでに存在します。

    値をtrueに設定すると、表を移行するときに、NoSQL Database Migratorは、同じ主キーがシンクにすでに存在するレコードを上書きします。

    指定しない場合は、デフォルトでtrueに設定されます。

  • データ型: boolean
  • 必須(Y/N): N
  • 例: "overwrite" : false

Oracle NoSQL Database Cloud Service

NoSQL Database移行者のシンクとしての Oracle NoSQL Database Cloud Serviceの構成ファイル形式を次に示します。

シンク構成テンプレート

"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" の使用

  • エンドポイント
    次に例を示します:
    • リージョンID: "endpoint" : "us-ashburn-1"

    • URL形式: "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 Database Migratorがクラウド・シェルから実行されている場合にのみサポートされます。
  • requestTimeoutMs

    例: "requestTimeoutMs" : 5000

一意の構成パラメータ

  • 用途: 移行されたデータを格納する表名を指定します。

    この表がOracle NoSQL Database Cloud Serviceにあることを確認する必要があります。そうでない場合は、シンク構成でschemaInfoオブジェクトを使用して、表を作成するようにNoSQL Database Migratorに指示する必要があります。

    この表のスキーマはソース・データと一致している必要があります。

  • データ型: 文字列
  • 必須(Y/N): Y
  • 例:
    • "table" : "mytable"を指定する場合
    • 子表"table" : "mytable.child"を指定する場合

      ノート:

      有効なデータ・ソースからOracle NoSQL Database Cloud Serviceに子表を移行できます。NoSQL Database Migratorでは、実行ごとに1つの表のみをコピーします。親表が子表の前に移行されていることを確認します。

コンパートメント

  • 用途: 表が存在するコンパートメントの名前またはOCIDを指定します。

    値を指定しない場合は、デフォルトでルートコンパートメントに設定されます。

    コンパートメントのOCIDは、OCI Cloudコンソールの「ガバナンス」の「コンパートメント・エクスプローラ」ウィンドウから確認できます。

  • データ型: 文字列
  • 必須(Y/N): 表がテナントまたはuseInstancePrincipalパラメータがtrueに設定されている場合、Y。

    ノート:

    useInstancePrincipalパラメータがtrueに設定されている場合、コンパートメントは名前ではなくコンパートメントOCIDを指定する必要があります。
  • 例:
    • コンパートメント名

      "compartment" : "mycompartment"

    • 親コンパートメントで修飾されたコンパートメント名

      "compartment" : "parent.childcompartment"

    • 値が指定されていません。デフォルトはルート・コンパートメントです。

      "compartment": ""

    • コンパートメントのOCID

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

includeTTL

  • 用途: Oracle NoSQL Database表のインポート時にソースによって提供される表の行のTTLメタデータを含めるかどうかを指定します。

    このパラメータを指定しない場合、デフォルトはfalseです。この場合、NoSQL Database Migratorには、Oracle NoSQL Database表のインポート時にソースによって提供される表の行のTTLメタデータは含まれません。

    trueに設定すると、NoSQL Database Migratorツールは、表の行のインポート時にTTLメタデータに対して次のチェックを実行します。
    • _metadata定義を持たない行をインポートすると、NoSQL Database MigratorツールはTTLを0に設定します。これは、行が期限切れにならないことを意味します。
    • _metadata定義を持つ行をインポートすると、NoSQL Database Migratorツールは、行がインポートされたときにTTL値を参照します。参照時間に対してすでに失効している行はスキップされます。行が失効していない場合は、TTL値とともにインポートされます。デフォルトでは、インポート操作の参照時間は、NoSQLデータベース・マイグレータ・ツールが実行されているマシンの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)です。
  • データ型: boolean
  • 必須(Y/N): N
  • 例: "includeTTL" : true

ttlRelativeDate

  • 用途: Oracle NoSQL Databaseへのインポート中の表の行のTTL失効の設定に使用されるYYYY-MM-DD hh:mm:ss形式でUTC日付を指定します。

    エクスポートするデータの表の行が期限切れになった場合は、ttlRelativeDateパラメータに、エクスポートしたデータの表の行の有効期限より前の日付を設定できます。

    このパラメータを指定しない場合は、NoSQL Database Migratorツールが実行されているマシンのSystem.currentTimeMillis()から取得された現在の時間がミリ秒単位でデフォルト設定されます。

  • データ型: date
  • 必須(Y/N): N
  • 例: "ttlRelativeDate" : "2021-01-03 04:31:17"

    表の行が2021年1月1日から7日後に失効するシナリオについて検討します。この表をエクスポートした後、2021年1月7日に、表の問題が発生し、データをインポートすることにしました。表の行は1日で失効します(データ有効期限から現在の日付であるttlRelativedate構成パラメータのデフォルト値を引いた値)。ただし、表の行の有効期限を1日ではなく5日に延長する場合は、ttlRelativeDateパラメータを使用して前の日付を選択します。したがって、このシナリオでは、表の行の有効期限を5日延長する場合、ttlRelativeDate構成パラメータの値を2021年1月3日に設定します。これは、表の行がインポートされるときに参照時間として使用されます。

schemaInfo

  • 用途: 移行対象データのスキーマを指定します。

    このパラメータを指定しない場合、NoSQL Database Migratorでは、表がOracle NoSQL Database Cloud Serviceにすでに存在します。

    このパラメータが指定されておらず、シンクに表が存在しない場合、移行は失敗します。

  • データ型: オブジェクト
  • 必須(Y/N): N

schemaInfo.schemaPath

  • 用途: NoSQL表のDDL文を含むファイルへの絶対パスを指定します。

    NoSQL Database Migratorは、データを移行する前に、このファイルにリストされているDDLコマンドを実行します。

    NoSQL Database Migratorでは、schemaPathファイルの行ごとに複数のDDL文をサポートしていません。

  • データ型: 文字列

  • 必須(Y/N): N

    ノート:

    defaultSchemaschemaPathは相互に排他的です。
  • 例: "schemaPath" : "/home/user/schema_file"

schemaInfo.defaultSchema

  • 用途: このパラメータをYesに設定すると、NoSQL Database Migratorではデフォルト・スキーマを使用して表が作成されます。デフォルト・スキーマは、マイグレータ自体によって定義されます。デフォルト・スキーマ定義の詳細は、Oracle NoSQLデータ・マイグレータの使用デフォルト・スキーマを参照してください。

  • データ型: boolean

  • 必須(Y/N): N

    ノート:

    defaultSchemaschemaPathは相互に排他的です。

schemaInfo.useSourceSchema

  • 用途: NoSQL表の移行時にソースによって提供される表スキーマ定義のシンクを使用するかどうかを指定します。

  • データ型: boolean

  • 必須(Y/N): N

    ノート:

    defaultSchemaschemaPathおよびuseSourceSchemaパラメータは相互に排他的です。これらのパラメータのうち1つのみを指定してください。
  • 例:
    • デフォルト・スキーマを使用:
      "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 DB表のシャード・キーとして使用されます。これは、defaultSchemaがtrueに設定され、ソースの形式がdynamodb_jsonの場合にのみ適用されます。詳細は、「DynamoDB型からOracle NoSQL型へのマッピング」 を参照してください。
  • 必須(Y/N): defaultSchemaがtrueで、ソースがdynamodb_jsonの場合、Y。
  • 例: "DDBPartitionKey" : "PersonID:INTEGER"

    ノート:

    パーティション・キーにダッシュ(-)またはドット(.)が含まれている場合、NoSQL列名ではドットとダッシュがサポートされていないため、マイグレータはそれをアンダースコア(_)に置き換えます。

schemaInfo.DDBSortKey

  • 用途: ターゲットのOracle NoSQL Database表で使用するDynamoDBソート・キーおよび対応するOracle NoSQL Database型を指定します。インポートするDynamoDB表にソート・キーがない場合は、この属性は設定しないでください。このキーは、NoSQL DB表の主キーの非シャード部分として使用されます。これは、defaultSchemaがtrueに設定され、ソースがdynamodb_jsonの場合にのみ適用されます。詳細は、「DynamoDB型からOracle NoSQL型へのマッピング」 を参照してください。
  • 必須(Y/N): N
  • 例: "DDBSortKey" : "Skey:STRING"

    ノート:

    ソート・キーにダッシュ(-)またはドット(.)が含まれている場合、NoSQL列名ではドットとダッシュがサポートされていないため、マイグレータはそれをアンダースコア(_)に置き換えます。

schemaInfo.onDemandThroughput

  • 用途: オンデマンドの読取りおよび書込みスループットを使用して表を作成することを指定します。このパラメータが設定されていない場合、表はプロビジョニングされた容量で作成されます。

    デフォルト値はfalseです。

    ノート:

    このパラメータは、トップレベルの親表のスループットを共有するため、子表に適用できません。
  • データ型: ブール

  • 必須(Y/N): N

  • 例: "onDemandThroughput" : "true"

schemaInfo.readUnits

  • 用途: 新しい表の読取りスループットを指定します。

    ノート:

    • このパラメータは、オンプレミス容量がプロビジョニングされた表に適用できません。
    • このパラメータは、子テーブルがトップレベルの親テーブルの読み取りスループットを共有するため、子テーブルに適用できません。
  • データ型: 整数

  • 必須(Y/N): 表が子表でない場合、またはschemaInfo.onDemandThroughputパラメータがfalseに設定されている場合、それ以外の場合はN。

  • 例:"readUnits" : 100

schemaInfo.writeUnits

  • 用途: 新しい表の書込みスループットを指定します。

    ノート:

    • このパラメータは、オンプレミス容量がプロビジョニングされた表に適用できません。
    • このパラメータは、子テーブルがトップレベルの親テーブルの書き込みスループットを共有するため、子テーブルに適用できません。
  • データ型: 整数

  • 必須(Y/N): 表が子表でない場合、または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 Database Migratorの動作を示します。

    値をfalseに設定すると、表を移行するときに、NoSQL Database Migratorは、同じ主キーがシンクにすでに存在します。

    値をtrueに設定すると、表を移行するときに、NoSQL Database Migratorは、同じ主キーがシンクにすでに存在するレコードを上書きします。

    指定しない場合は、デフォルトでtrueに設定されます。

  • データ型: boolean
  • 必須(Y/N): N
  • 例: "overwrite" : false

変換構成テンプレート

このトピックでは、Oracle NoSQL Databaseミグレータでサポートされている様々な変換の構成パラメータについて説明します。完全な構成ファイル・テンプレートについては、NoSQLデータ・マイグレータで使用される用語構成ファイルを参照してください。

Oracle NoSQL Database Migratorを使用すると、移行アクティビティの過程でデータを変更できます。1回の移行で複数の変換を定義できます。このような場合、ソース・データには指定の順序で各変換が実行されるため、変換の順序は重要です。ある変換の出力がマイグレータ・パイプライン内の次の変換への入力になります。

NoSQLデータ・マイグレータでサポートされている様々な変換は次のとおりです。

表- 変換

変換構成属性 この変換を使用して、次のことができます。
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データベース・マイグレータ・ツールはエラーをスローしますさらに、最上位フィールドのみを指定できます。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
  • 例: レジデンスというカラムをアドレスに、_idというカラムをIDに名前変更する場合。

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

aggregateFields

aggregateFields変換の構成ファイル形式を次に示します。

変換構成テンプレート

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

変換パラメータ

aggregateFields

  • 用途: シンク内の集計フィールドの名前。

  • データ型: 文字列
  • 必須(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 NULL
6 文字列セット(SS) 文字列のJSON配列 配列(文字列)
7 数値セット(NS) 数字のJSON配列 配列(整数/ロング/フロート/ダブル/数値)
8 バイナリ・セット(BS) Base-64でエンコードされた文字列の JSON配列 配列(バイナリ)
9 リスト(L) JSONの配列 配列(JSON)
10 マップ(M) JSONオブジェクト JSON
11 パーティション・キー NA プライマリー・キーとシャード・キー
12 ソート・キー NA 主キー
13 ダッシュとドットを含む属性名 下線を含むJSONフィールド名 下線付きの列名
DynamoDB型をOracle NoSQL型にマップする際に考慮する追加ポイントはほとんどありません。
  • DynamoDBは、数値に対して1つのデータ型のみをサポートし、最大38桁の精度を持つことができます。対照的に、Oracle NoSQLは、data.Youの範囲および精度に基づいて選択する多くの型をサポートし、入力データの範囲に適合する適切な数値型を選択できます。データの性質が不明な場合は、NoSQL NUMBER型を使用します。
  • DynamoDBは、数値に対して1つのデータ型のみをサポートし、最大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 Cloudサービスの列名は64文字に制限されます。

Oracle NoSQLからParquetデータ型へのマッピング

Oracle NoSQLデータ型とParquetデータ型のマッピングについて説明します。

NoSQL型 Parquet型
BOOLEAN BOOLEAN
INTEGER INT32
LONG INT64
FLOAT DOUBLE
DOUBLE DOUBLE
BINARY BINARY
FIXED_BINARY BINARY
STRING バイナリ(文字列)
ENUM バイナリ(文字列)

または

BINARY(ENUM)、論理ENUMが構成されている場合

UUID バイナリ(文字列)

または

FIXED_BINARY(16)、論理UUIDが構成されている場合

TIMESTAMP(p) 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レコード(K1 T1 N1、K⁇2 T2 N2、....)

説明:

K = キー名

T = タイプ

N = NULL可能かどうか

group field_name {
    ni == true ? optional Ti ki : required Ti ki   
}
JSON バイナリ(文字列)

または

BINARY(JSON)、論理JSONが構成されている場合

ノート:

NoSQL数値型をParquet Double型に変換する場合、値がDoubleで表現できない場合、精度が若干失われる可能性があります。値が大きすぎてDoubleとして表現できない場合、Double.NEGATIVE_INFINITYまたはDouble.POSITIVE_INFINITYに変換されます。

DynamoDB表からOracle NoSQL表へのマッピング

DynamoDBでは、表はアイテムのコレクションで、各アイテムは属性の集合です。表の各アイテムには、一意の識別子または主キーがあります。表は、主キー以外はスキーマレスです。各アイテムには固有の属性を設定できます。

DynamoDBは、次の2種類の主キーをサポートしています。
  • Partition key - partition keyと呼ばれる1つの属性で構成される単純な主キー。DynamoDBは、パーティション・キーの値を内部ハッシュ関数への入力として使用します。ハッシュ関数の出力によって、アイテムが格納されるパーティションが決まります。
  • Partition key and sort key - composite primary keyとして、このタイプの鍵は2つの属性で構成されます。第1の属性はパーティション・キーで、第2の属性はソート・キーです。DynamoDBは、パーティション・キーの値を内部ハッシュ関数への入力として使用します。ハッシュ関数の出力によって、アイテムが格納されるパーティションが決まります。同じパーティション・キー値を持つすべてのアイテムが、ソート・キー値でソートされて一緒に格納されます。

一方、Oracle NoSQL表は、スキーマとスキーマレス設計の両方を備えた柔軟なデータ・モデルをサポートしています。

DynamoDB表は、次の2つの方法でモデル化できます。
  1. JSONドキュメントとしてのDynamoDB表のモデル化(推奨): このモデル化では、Dynamo DB表のすべての属性を、パーティション・キーおよびソート・キーを除くNoSQL表のJSON列にマップします。パーティション・キーおよびソート・キーをNoSQL表の主キー列としてモデル化します。主キー以外のデータをJSON列に集計するには、AggregateFields変換を使用します。

    ノート:

    マイグレータは、属性をJSON列に集計するスキーマレスDDL表を自動的に作成するための、使いやすい構成defaultSchemaを提供します。
  2. NoSQL表の固定列としてのDynamoDB表のモデル化: このモデル化では、DynamoDB表の各属性について、「DynamoDB型からOracle NoSQL型へのマッピング」で指定されているように、NoSQL表に列を作成します。パーティション・キーおよびソート・キー属性を主キーとしてモデル化します。これは、DynamoDB表スキーマのインポートが固定されており、各アイテムにほとんどの属性の値があることが確実な場合にのみ使用する必要があります。DynamoDBアイテムに共通属性がない場合、空の値を持つ多くのNoSQL列が生成される可能性があります。

    ノート:

    DynamoDB表の特性がスキーマレスであるため、DynamoDBからOracle NoSQL Databaseにデータを移行する場合は、スキーマレス表を使用することをお薦めします。これは特に、表全体で各レコードの内容が統一されていない大きな表の場合です。

Oracle NoSQL Database Migratorのトラブルシューティング

使用中に直面する可能性のある一般的な課題とその解決方法について学習します。

移行に失敗しました。どうすれば解決できますか。

データ移行の失敗は、基礎となる複数の理由で発生する可能性があります。重要な原因を次に示します。

表- 移行失敗の原因

エラー・メッセージ 意味 対処方法
Failed to connect to Oracle NoSQL Database マイグレータはNoSQL Databaseとの接続を確立できませんでした。
  • 構成JSONファイルのstoreNameおよびhelperHosts属性の値が有効で、ホストにアクセスできることを確認します。
  • 保護されたストアの場合は、セキュリティ・ファイルが有効で、ユーザー名およびパスワードの値が正しいかどうかを確認します。
Failed to connect to Oracle NoSQL Database Cloud Service マイグレータはOracle NoSQL Database Cloud Serviceとの接続を確立できませんでした。
  • 構成JSONファイルに指定されたエンドポイントURLまたはリージョン名が正しいかどうかを確認します。
  • 構成JSONファイルで指定されたパスで、OCI資格証明ファイルが使用可能かどうかを確認します。
  • OCI資格証明で提供されているOCI資格証明が有効になっていることを確認します。
Table not found 移行用に指定された表がNoSQL Database Migratorで見つかりませんでした。

[ソース]:

  • 表がソース・データベースにあることを確認します。
  • 表がデフォルト以外の名前空間に作成されている場合は、構成JSONファイルで表がそのネームスペースで修飾されていることを確認します。
  • 表へのアクセスに必要な読取り/書込み権限があるかどうかを確認します。
  • ソースがOracle NoSQL Database Cloud Serviceの場合は、構成JSONファイルで有効なコンパートメント名が指定されているかどうかを確認し、表へのアクセスに必要な権限があることを確認します。

シンクの場合:

  • 表がシンクに存在することを確認します。存在しない場合は、表を手動で作成するか、schemaInfo構成を使用して移行によって作成する必要があります。
DDL Execution failed 入力スキーマ定義ファイルに指定されたDDLコマンドが無効です。
  • schemaPathファイルのDDLコマンドの構文を確認します。
  • schemaPathファイルの行ごとにDDL文が1つのみであることを確認します。
failed to write record to the sink table with java.lang.IllegalArgumentException 入力レコードがシンクの表スキーマと一致しません。
  • ターゲット・シンク表に指定されているデータ型および列名がシンク表スキーマと一致するかどうかを確認します。
  • 変換を適用した場合は、変換されたレコードがシンク表スキーマと一致しているかどうかを確認します。
Request timeout ソースまたはシンクの操作が完了しませんでした。
  • ネットワークの接続を確認します。
  • NoSQL Databaseが稼働していることを確認します。
  • 構成JSONファイルのrequestTimeout値を増やします。

失敗した移行を再開するには、何を考慮する必要がありますか。

データ移行タスクが失敗すると、シンクは中間状態になり、障害が発生した時点までにインポートされたデータが含まれます。ログからエラーおよび障害の詳細を特定し、エラーの診断および修正後に移行を再開できます。移行を再開するともう一度終了し、すべてのデータが最初から処理されます。移行をチェックポイント処理し、障害が発生した時点から再開する方法はありません。したがって、NoSQL Database Migratorは、シンクにすでに移行されているすべてのレコードを上書きします。

移行が遅すぎます。速度を上げるにはどうすればよいですか。

データ移行にかかる時間は、移行するデータ量、ネットワーク速度、データベースの現在の負荷などの複数の要因に依存します。クラウド・サービスの場合、移行の速度は、読取りスループットおよびプロビジョニングされた書込みスループットにも依存します。したがって、移行速度を向上させるために、次のことができます。
  • データの移行中に、Oracle NoSQL Databaseの現在のワークロードを減らします。
  • 移行、ソースおよびシンクを実行しているマシンがすべて同じデータ・センターにあり、ネットワーク待機時間が最小限であることを確認します。
  • Oracle NoSQL Database Cloud Serviceの場合は、高い読取り/書込みスループットをプロビジョニングし、表に割り当てられた記憶域が十分かどうかを確認します。NoSQL Database Migratorが表を作成していない場合は、書込みスループットを向上できます。マイグレータが表を作成している場合は、シンク構成の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ファイルに表示されます。