Oracle NoSQL Database Migratorの使用
Oracle NoSQL Database Migratorユーティリティを使用してNoSQLデータを移行するための様々なステップについて学習します。
次の図に、NoSQL Database Migratorの使用に関連するタスクの高レベル・フローを示します。
NoSQL Data Migratorユーティリティのダウンロード
Oracle NoSQL Database Migratorユーティリティは、Oracle NoSQLのダウンロード・ページからダウンロードできます。マシンにダウンロードして解凍すると、コマンドライン・インタフェースからrunMigrator
コマンドにアクセスできます。
ソースとシンクの指定
- シンク表スキーマの指定: シンクがオンプレミスまたはクラウドのOracle NoSQL Databaseの場合は、シンク表のスキーマを指定し、ソース・データがターゲット・スキーマと一致することを確認する必要があります。必要に応じて、変換を使用してソース・データをシンク表にマップします。
- デフォルト・スキーマ: NoSQL Database Migratorには、デフォルト・スキーマを使用して表を作成するオプションがあります。デフォルト・スキーマは、マイグレータ自体によって定義されます。
ソースがMongoDB形式のJSONファイルの場合、表のデフォルト・スキーマは次のようになります。
CREATE TABLE IF NOT EXISTS <tablename>(ID STRING, DOCUMENT JSON,PRIMARY KEY(SHARD(ID));
説明:
— tablename = 構成のtable属性に指定された値。
— ID = mongoDBでエクスポートされたJSONソース・ファイルの各ドキュメントの_id値。
— DOCUMENT = mongoDBでエクスポートされたファイル内のドキュメントごとに、_idフィールドを除く内容がDOCUMENT列に集計されます。ノート:
MongoDB形式のJSONファイルで_id値が文字列として指定されていない場合、NoSQL Database Migratorは、デフォルト・スキーマに挿入する前に値を文字列に変換します。その他すべてのソースでは、デフォルト・スキーマは次のようになります。CREATE TABLE IF NOT EXISTS <tablename> (ID LONG GENERATED ALWAYS AS IDENTITY, DOCUMENT JSON, PRIMARY KEY(ID))
説明:
— tablename = 構成のtable属性に指定された値。
— ID = 自動生成されたLONG値。
— DOCUMENT = ソースによって提供されるJSONレコードがDOCUMENT列に集計されます。ノート:
MongoDB形式のJSONファイルで_id値が文字列として指定されていない場合、NoSQL Database Migratorは、デフォルト・スキーマに挿入する前に値を文字列に変換します。
- デフォルト・スキーマ: NoSQL Database Migratorには、デフォルト・スキーマを使用して表を作成するオプションがあります。デフォルト・スキーマは、マイグレータ自体によって定義されます。
- 表スキーマの提供: NoSQL Database Migratorでは、ソースはschemaInfo属性を使用して表データのスキーマ定義を提供できます。schemaInfo属性は、まだ暗黙的スキーマが定義されていないすべてのデータ・ソースで使用できます。シンク・データ・ストアでは、次のオプションのいずれかを選択できます。
- NoSQL Database Migratorで定義されたデフォルトのスキーマを使用します。
- ソース提供のスキーマを使用します。
- 独自のスキーマを定義して、ソース提供のスキーマをオーバーライドします。たとえば、ソース・スキーマから別のスキーマにデータを変換する場合は、ソース提供のスキーマをオーバーライドし、NoSQL Database Migratorツールの変換機能を使用する必要があります。
たとえば、表スキーマ・ファイルmytable_schema.ddl
には、表DDL文を含めることができます。NoSQL Database Migratorツールは、移行を開始する前にこの表スキーマ・ファイルを実行します。マイグレータ・ツールでは、スキーマ・ファイルの1行に1つのDDL文のみをサポートします。たとえば、次のようになります。CREATE TABLE IF NOT EXISTS(id INTEGER, name STRING, age INTEGER, PRIMARY KEY(SHARD(ID)))
- シンク表の作成: シンク表スキーマの指定後は、管理CLIまたはシンク構成ファイルの
schemaInfo
属性を使用してシンク表を作成します。シンク構成テンプレートを参照してください。
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ファイルを手動で作成する必要があります。ソースとシンクの構成パラメータのヘルプは、ソースとシンクを参照してください。[~]$ ./runMigrator -c </path/to/the/configuration/json/file>
Migratorの進捗状況のロギング
NoSQL Database Migratorツールには、トレース、デバッグおよび進行状況のメッセージを標準出力またはファイルに出力できるオプションが用意されています。このオプションは、特に表またはデータ・セットが大規模な場合に、移行操作の進捗状況を追跡するために役立ちます。
- ログ・レベル
NoSQL Database Migratorツールを使用してロギング動作を制御するには、--log-levelまたは-l run timeパラメータを
runMigrator
コマンドに渡します。書き込むログ情報の量を指定するには、適切なログ・レベルの値を渡します。$./runMigrator --log-level <loglevel>
次に例を示します。$./runMigrator --log-level debug
表7-1 NoSQL Database Migratorでサポートされるログ・レベル
ログ・レベル 説明 warning エラーおよび警告を出力します。 info (デフォルト) ソースの検証、シンクの検証、表の作成、移行されたデータ・レコードの数など、データ移行の進捗状況ステータスを出力します。 debug 追加のデバッグ情報を出力します。 all すべてを出力します。このレベルはロギングのすべてのレベルをオンにします。 - ログ・ファイル:
--log-fileまたは-fパラメータを使用して、ログ・ファイルの名前を指定できます。--log-fileがランタイム・パラメータとして
runMigrator
コマンドに渡された場合、NoSQL Database Migratorはすべてのログ・メッセージをファイルに、それ以外の場合は標準出力に書き込みます。$./runMigrator --log-file <log file name>
次に例を示します。$./runMigrator --log-file nosql_migrator.log