Oracle NoSQL Database Migratorの使用
NoSQLデータを移行するためのOracle NoSQL Database Migratorユーティリティの使用に関連する様々なステップについて学習します。
NoSQL Database Migratorの使用に関連するタスクの大まかなフローは、次の図に示されています。

NoSQLデータ・マイグレータ・ユーティリティのダウンロード
runMigrator
コマンドにアクセスできます。
Oracle NoSQL Database Migratorユーティリティを実行するには、Java 11以上のバージョンが必要です。
ソースとシンクの識別
- シンク表スキーマの識別:シンクがOracle NoSQL Databaseオンプレミスまたはクラウドの場合、シンク表のスキーマを識別し、ソース・データがターゲット・スキーマと一致することを確認する必要があります。必要に応じて、変換を使用してソース・データをシンク表にマップします。
- デフォルト・スキーマ: NoSQL Database Migratorには、表のスキーマを事前定義する必要なく、デフォルト・スキーマを使用して表を作成するオプションがあります。これは、主にJSONファイルをOracle NoSQL Databaseにロードする場合に便利です。
ソースがMongoDB形式のJSONファイルである場合、表のデフォルト・スキーマは次のようになります。
CREATE TABLE IF NOT EXISTS <tablename>(ID STRING, DOCUMENT JSON,PRIMARY KEY(SHARD(ID))
説明:
- tablename =構成内の表属性に指定された値。
- ID = mongoDBエクスポートしたJSONソース・ファイルの各ドキュメントからの_id値です。
- DOCUMENT = mongoDBエクスポート・ファイルのドキュメントごとに、_idフィールドを除くコンテンツがDOCUMENT列に集計されます。
ソースがDynamoDB形式のJSONファイルの場合、表のデフォルト・スキーマは次のとおりです。CREATE TABLE IF NOT EXISTS <TABLE_NAME>(DDBPartitionKey_name DDBPartitionKey_type, [DDBSortKey_name DDBSortKey_type],DOCUMENT JSON, PRIMARY KEY(SHARD(DDBPartitionKey_name),[DDBSortKey_name]))
説明:
- TABLE_NAME = 構成内のシンクテーブルに指定された値
- DDBPartitionKey_name = 構成のパーティション・キーに指定された値
- DDBPartitionKey_type = 構成内のパーティション・キーのデータ型に指定された値
- DDBSortKey_name = 構成のソート・キーに指定された値(ある場合)
- DDBSortKey_type = 構成内のソート・キーのデータ型に指定された値(ある場合)
- DOCUMENT = NoSQL JSON列に集計されたDynamo DB表アイテムのパーティションおよびソート・キーを除くすべての属性
ソース形式がCSVファイルの場合、ターゲット表ではデフォルトのスキーマはサポートされていません。ソースCSVファイルと同じ数の列およびデータ型を含む表定義を持つスキーマ・ファイルを作成できます。スキーマ・ファイルの作成の詳細は、表スキーマの指定を参照してください。
その他のすべてのソースでは、デフォルトのスキーマは次のようになります。CREATE TABLE IF NOT EXISTS <tablename> (ID LONG GENERATED ALWAYS AS IDENTITY, DOCUMENT JSON, PRIMARY KEY(ID))
説明:
- tablename =構成内の表属性に指定された値。
- ID =自動生成されたLONG値。
- DOCUMENT =ソースから提供されたJSONレコードがDOCUMENT列に集計されます。ノート
_id値がMongoDB形式のJSONファイルに文字列として指定されていない場合、NoSQL Database Migratorはそれをデフォルト・スキーマに挿入する前に文字列に変換します。
- デフォルト・スキーマ: NoSQL Database Migratorには、表のスキーマを事前定義する必要なく、デフォルト・スキーマを使用して表を作成するオプションがあります。これは、主にJSONファイルをOracle NoSQL Databaseにロードする場合に便利です。
- 表スキーマの提供: NoSQL Database Migratorを使用すると、ソースはschemaInfo属性を使用して表データのスキーマ定義を提供できます。schemaInfo属性は、すでに暗黙的スキーマが定義されていないすべてのデータ・ソースで使用できます。シンク・データ・ストアでは、次のオプションのいずれかを選択できます。
- NoSQL Database Migratorで定義されたデフォルトのスキーマを使用します。
- ソース指定のスキーマを使用します。
- 独自のスキーマを定義して、ソース提供のスキーマをオーバーライドします。たとえば、ソース・スキーマから別のスキーマにデータを変換する場合は、ソース指定のスキーマをオーバーライドし、NoSQL Database Migratorツールの変換機能を使用する必要があります。
The table schema file, for example,mytable_schema.ddl
can include table DDL statements. The NoSQL Database Migrator tool executes this table schema file before starting the migration. The migrator tool supports no more than one DDL statement per line in the schema file. For example,CREATE TABLE IF NOT EXISTS(id INTEGER, name STRING, age INTEGER, PRIMARY KEY(SHARD(ID)))
- 洗面台の作成:洗面台スキーマの指定後は、管理CLIまたは洗面台構成ファイルの
schemaInfo
属性を使用して洗面台を作成します。シンク構成テンプレートを参照してください。ノート
ソースがCSVファイルの場合は、ターゲット表のスキーマに対するDDLコマンドを使用してファイルを作成します。シンク構成ファイルのschemaInfo.schemaPathパラメータにファイル・パスを指定します。
表行のTTLメタデータの移行
The support for migrating TTL metadata for table rows is only available for Oracle NoSQL Database and Oracle NoSQL Database Cloud Service.
TTLメタデータをエクスポートしています
_metadata
JSONオブジェクトに含まれています。NoSQL Database Migratorは、各行の有効期限をUNIXエポック(1970年1月1日)からのミリ秒数としてエクスポートします。例://Row 1
{
"id" : 1,
"name" : "xyz",
"age" : 45,
"_metadata" : {
"expiration" : 1629709200000 //Row Expiration time in milliseconds
}
}
//Row 2
{
"id" : 2,
"name" : "abc",
"age" : 52,
"_metadata" : {
"expiration" : 1629709400000 //Row Expiration time in milliseconds
}
}
//Row 3 No Metadata for below row as it will not expire
{
"id" : 3,
"name" : "def",
"age" : 15
}
TTLメタデータのインポート
オプションで、構成パラメータincludeTTLを使用してTTLメタデータをインポートできます。TTLメタデータを含む表の行を移行する場合、インポート操作では次のユースケースを処理します。これらのユースケースは、includeTTL構成パラメータが指定されている場合のみ適用できます。
- ユースケース1: TTLメタデータ情報はインポート表の行に存在しません。
外部ソースから生成されたJSONファイルをインポートする場合、または以前のバージョンの移行を使用してエクスポートする場合、インポート行にはTTL情報がありません。ただし、includeTTL構成パラメータが
true
と等しいため、移行者は表の行にTTL=0を設定します。つまり、インポート表の行は失効しません。 - ユース・ケース2:ソース表の行のTTL値は、表の行がインポートされるときの参照時間を基準にして期限切れになります。
表の行をファイルにエクスポートし、表の行の有効期限の後にインポートしようとすると、表の行は無視され、ストアには書き込まれません。
- ユース・ケース3:表行がインポートされるとき、ソース表の行のTTL値は参照時間に対して相対的に期限切れになっていません。
表の行をファイルにエクスポートし、表行の有効期限より前にインポートしようとすると、表行がTTL値でインポートされます。ただし、TimeToLiveクラスの整数時および日ウィンドウの制約のため、表の行の新しいTTL値はエクスポートされたTTL値と等しくできません。例:
エクスポートされた表の行{ "id" : 8, "name" : "xyz", "_metadata" : { "expiration" : 1629709200000 //Monday, August 23, 2021 9:00:00 AM in UTC } }
インポート時の参照時間は1629707962582で、2021年8月23日月曜日午前8:39:22.582です。
インポートされた表の行{ "id" : 8, "name" : "xyz", "_metadata" : { "ttl" : 1629712800000 //Monday, August 23, 2021 10:00:00 AM UTC } }
runMigrator
コマンドを実行します
runMigrator
実行可能ファイルは、抽出されたNoSQL Database Migratorファイルで使用できます。runMigrator
コマンドを正常に実行するには、Java 8以上のバージョンとbashをシステムにインストールする必要があります。
runMigrator
コマンドは、次の2通りの方法で実行できます。
- 次に示すように、
runMigrator
コマンドのランタイム・オプションを使用してJSON構成ファイルを作成します。[~]$ ./runMigrator configuration file is not provided. Do you want to generate configuration? (y/n) [n]: y ... ...
runMigrator
ユーティリティを起動すると、一連のランタイム・オプションが提供され、各オプションの選択に基づいて構成JSONファイルが作成されます。- ユーティリティによって構成JSONファイルが作成された後、同じ実行で移行アクティビティを続行するか、将来の移行のために構成ファイルを保存するかを選択できます。
- 生成された構成JSONファイルを使用して移行アクティビティを続行または延期するかどうかの決定に関係なく、ファイルは将来の要件を満たすように編集またはカスタマイズできます。カスタマイズした構成JSONファイルは、後で移行するために使用できます。
-c
または--config
オプションを使用して、手動で作成したJSON構成ファイルをランタイム・パラメータとして渡します。-c
または--config
オプションを使用してrunMigrator
コマンドを実行する前に、構成JSONファイルを手動で作成する必要があります。ソースおよびシンク構成パラメータのヘルプは、Oracle NoSQL Database Migratorリファレンスを参照してください。[~]$ ./runMigrator -c </path/to/the/configuration/json/file>
移行者の進捗状況の記録
NoSQL Database Migratorツールには、トレース、デバッグおよび進行状況のメッセージを標準出力またはファイルに出力できるオプションが用意されています。このオプションは、特に表またはデータ・セットが大規模な場合に、移行操作の進捗状況を追跡するために役立ちます。
- ログ・レベル
NoSQL Database Migratorツールを使用してロギング動作を制御するには、--log-levelまたは-l run timeパラメータを
runMigrator
コマンドに渡します。書き込むログ情報の量を指定するには、適切なログレベルの値を渡します。$./runMigrator --log-level <loglevel>
例:$./runMigrator --log-level debug
表1-16 NoSQL Database Migratorでサポートされるログ・レベル
ログ・レベル 説明 警報 エラーおよび警告を出力します。 info (default) ソースの検証、シンクの検証、表の作成、移行されたデータ・レコードの数など、データ移行の進捗状況を出力します。 debug 追加のデバッグ情報を印刷します。 all すべてを出力します。このレベルはロギングのすべてのレベルをオンにします。 - ログ・ファイル:
--log-fileまたは-fパラメータを使用して、ログ・ファイルの名前を指定できます。--log-fileがランタイム・パラメータとして
runMigrator
コマンドに渡された場合、NoSQL Database Migratorは、すべてのログ・メッセージをファイルに、別の標準出力に書き込みます。$./runMigrator --log-file <log file name>
例:$./runMigrator --log-file nosql_migrator.log