Oracle NoSQL Data Migratorとインポート/エクスポート・ユーティリティ
このトピックでは、Oracle NoSQL Data Migratorユーティリティが既存のOracle NoSQLインポート/エクスポート・ユーティリティとどのように異なるかについて説明します。
既存のオンプレミス専用のインポート/エクスポート・ユーティリティを置換および拡張するために、Oracle NoSQL Data Migratorが作成されました。NoSQL表のデータとスキーマ定義をソースとシンク(ターゲット)間で移動します。サポートされるソースとシンクにリストされているように、複数のソースとシンクをサポートします。一方で、インポート/エクスポート・ユーティリティでは、Oracle NoSQL Database (オンプレミス)に対してのみインポートまたはエクスポートできます。つまり、インポート/エクスポート・ユーティリティを使用して、Oracle NoSQL Databaseにデータをインポートするか、Oracle NoSQL Databaseからデータをエクスポートできます。エクスポートする場合、ソース・タイプは常にOracle NoSQL Database (データ抽出元)で、シンクはそのデータの受信側です。インポートする場合、現在、ソース・タイプはファイルに制限され、シンクは常にOracle NoSQL Databaseです。エクスポートおよびインポート機能を参照してください。
この基本的な違いとは別に、両方のユーティリティは他の多くの点で異なります。これらは次の比較表で確認できます。
表7-3 比較表
| Oracle NoSQL Data Migrator | Oracle NoSQLインポート/エクスポート | |
|---|---|---|
| ソースとシンク | Oracle NoSQL Database (オンプレミス)、Oracle NoSQL Database Cloud Service、JSONファイル、MongoDB形式のJSONファイルなど、複数のソースとシンクをサポートします。サポートされるソースとシンクを参照してください。 |
インポート ソース: JSON、バイナリまたはMongoDB形式のJSON シンク: Oracle NoSQL Database (オンプレミス)のみ。 エクスポート ソース: Oracle NoSQL Database (オンプレミス)のみ。 シンク: ローカルまたはネットワークにマウントされたファイルシステム。 |
| サポートされるプラットフォーム | Oracle NoSQL Database (オンプレミス)とOracle NoSQL Database Cloud Service (NDCS)の両方。 | Oracle NoSQL Database (オンプレミス)のみ。 |
| 移行レベル | 移行は表レベルでのみサポートされています。一度に1つの表のみを移行できます。 | インポート/エクスポート操作は、表レベル、ストア・レベルまたはネームスペース・レベルで実行できます。複数の表を1回の操作でインポート/エクスポートできます。 |
| データ形式 | データのJSON形式のみをサポートします。スキーマ定義は、行ごとに1つのDDLコマンドを含むファイルとして表されます。 | バイナリ形式とJSON形式の両方をサポートします。 |
| 移行の単位 | Oracle NoSQL Data Migratorは、中間パッケージを作成せずに、データおよびスキーマ定義をソースからシンクに移行します。 | Oracle NoSQL Databaseからデータをエクスポートするとき、インポート/エクスポート・ユーティリティによって、スキーマのメタデータおよび表データを含むエクスポート・パッケージ(ディレクトリ構造)が作成されます。データをOracle NoSQL Databaseにインポートするとき、ユーティリティの実行対象は、このエクスポート・パッケージにすることも、インポート/エクスポート・ユーティリティでサポートされるデータ形式のファイルが含まれる任意のディレクトリにすることもできます。 |
| キー値およびラージ・オブジェクト・データ | サポートされていません。 | exportコマンドでサポートされています。 |
| NoSQL Databaseのオンプレミスからオンプレミスへの移行 | サポートされています。 | サポートされていません。 |
例1: オンプレミスのNoSQLデータストアの表からJSON形式でデータをエクスポートし、内容を別のオンプレミスのNoSQLデータストアにインポートする。
A) インポート/エクスポート・ユーティリティの使用ステップ
kvstore1の表usersから内容をエクスポートし、エクスポート・パッケージを/users/oracle/kvstore_exportディレクトリに配置します。形式をJSONとして指定します。java -jar lib/kvtool.jar export -table users \ -store kvstore1 -helper-hosts <hostname>:5000 \ -config export_config -format JSONexport_configファイルは現在の作業ディレクトリ内にあります。ファイルの内容は次のとおりです。{ "path": "/users/oracle/kvstore_export" }データおよびスキーマ定義用のディレクトリは、
kvstore_exportディレクトリに作成されます。データ・ディレクトリ内では、すべての表にディレクトリがあり、対応するjsonファイルが表ディレクトリ内に格納されます。- 前述の例で作成したエクスポート・パッケージの
users表のデータを、別のOracle NoSQL Databaseストアkvstore2にインポートします。チェックポイントを使用すると、インポートが失敗した場合に、停止または中断した場所からインポートを再開できます。パラメータ-tableは、インポートする1つ以上の表の名前です。複数の表をインポートするには、表名のカンマ区切りリストを指定します。形式をJSONとして指定します。java -jar lib/kvtool.jar import -store kvstore2 \ -table users -helper-hosts <hostname>:5000 \ -config import_config -format JSON \ -status /users/oracle/checkpoint_dirimport_configファイルは現在の作業ディレクトリ内にあります。ファイルの内容は次のとおりです。{ "path": "/users/oracle/kvstore_export" }
Data Migratorユーティリティの使用ステップ
- 正しいソースとシンクの詳細を使用して、構成ファイルを準備します。ソースは最初のNoSQL Databaseストア
kvstore1です。表usersがエクスポートされます。シンクは、別のNoSQL Databaseストアkvstore2です。schemaPathパラメータで、NoSQL表を作成するためのDDL文を含むファイルへの絶対パスを指定します。NoSQL Data Migratorは、データを移行する前に、このファイルにリストされているDDLコマンドを実行します。userSchemaファイルには、次のDDL文が含まれます。CREATE TABLE IF NOT EXISTS users (id INTEGER, firstName STRING, lastName STRING, otherNames ARRAY(RECORD(first STRING, last STRING)), age INTEGER, income INTEGER, address JSON, connections ARRAY(INTEGER), expenses MAP(INTEGER), PRIMARY KEY(SHARD(id)))Data Migratorの構成ファイルは、次のとおりです。{ "source" : { "type" : "nosqldb", "storeName" : "kvstore1", "helperHosts" : ["<hostname>:5000"], "table" : "users" }, "sink" : { "type" : "nosqldb", "table" : "users", "schemaInfo" : { "schemaPath" : "/users/oracle/export_dir/kvstore_export/usersSchema" }, "storeName" : "kvstore2", "helperHosts" : ["<hostname>:5000"], "requestTimeoutMs" : 5000 }, "abortOnError" : true, "migratorVersion" : "1.0.0" } - --configまたは-cオプションを使用して構成JSONファイルを渡し、
runMigratorコマンドを実行します。./runMigrator --config /users/oracle/migrator_config/store1tostore2.config
例2: 毎晩、表をバイナリ形式でエクスポートするスクリプトがある。障害発生時にはこのバックアップをインポートし、表を前夜のバージョンにリストアします。
kvstore1の表usersから内容をエクスポートし、エクスポート・パッケージを/users/oracle/kvstore_exportディレクトリに配置します。デフォルト形式はバイナリのため、形式は指定されません。java -jar lib/kvtool.jar export -table users \ -store kvstore1 -helper-hosts <hostname>:5000 \ -config export_configexport_configファイルは現在の作業ディレクトリ内にあります。ファイルの内容は次のとおりです。{ "path": "/users/oracle/kvstore_export" }データおよびスキーマ定義用のディレクトリは、
kvstore_exportディレクトリに作成されます。- 障害発生時には、次のインポート・コマンドを使用して、表を前夜のバージョンにリストアします。
java -jar lib/kvtool.jar import -store kvstore1 \ -table users -helper-hosts <hostname>:5000 \ -config import_configimport_configファイルは現在の作業ディレクトリ内にあります。ファイルの内容は次のとおりです。{ "path": "/users/oracle/kvstore_export" }
B) Data Migratorユーティリティの使用ステップ
Data Migratorユーティリティはバイナリ形式をサポートしていません。JSON形式のみがサポートされます。Data Migratorユーティリティを使用するには、2つの構成ファイルを作成する必要があります。最初の構成ファイルはOracle NoSQLデータストアkvstore1をソースとし、シンクはJSONファイルになります。この構成ファイルを毎晩実行して、表をJSONファイルにバックアップします。2番目の構成ファイルは、前に作成したJSONファイルをソースとし、シンクはOracle NoSQL Databaseストアkvstore1になります。この構成ファイルは、障害が発生し、表を前夜のバージョンにリストアする必要がある場合にのみ実行されます。
- 夜間のバックアップを実行するための構成ファイル"
nightlyusersbackup"を作成します。{ "source" : { "type" : "nosqldb", "storeName" : "kvstore1", "helperHosts" : ["<hostname>:5000"], "table" : "users" }, "sink" : { "type" : "file", "format" : "json", "dataPath": "/users/oracle/export_dir/kvstore_export/usersJSON", "schemaPath" : "/users/oracle/export_dir/kvstore_export/usersSchema" }, "abortOnError" : true, "migratorVersion" : "1.0.0" } - --configまたは-cオプションを使用して設定JSONファイルを渡すことにより、毎晩
runMigratorコマンドを実行します。./runMigrator --config /users/oracle/migrator_config/nightlyusersbackup.config - 構成ファイル"
usersrecovery"を作成して、users表を前夜のバージョンにリカバリします。ここでは、ソースは夜間のバックアップで作成されたjsonファイル、シンクはOracle NoSQLデータストアkvstore1です。{ "source" : { "type" : "file", "format" : "json", "dataPath": "/users/oracle/export_dir/kvstore_export/usersJSON", "schemaPath" : "/users/oracle/export_dir/kvstore_export/usersSchema" }, "sink" : { "type" : "nosqldb", "table" : "users", "schemaInfo" : { "schemaPath" : "/users/oracle/export_dir/kvstore_export/usersSchema" }, "storeName" : "kvstore1", "helperHosts" : ["<hostname>:5000"], "requestTimeoutMs" : 5000 }, "abortOnError" : true, "migratorVersion" : "1.0.0" } - 障害が発生し、表usersを前夜のバージョンにリカバリする必要がある場合は、--configまたは-cオプションを使用し、前に作成した設定JSONファイルを渡して、
runMigratorコマンドを実行します。./runMigrator --config /users/oracle/migrator_config/usersrecovery.config
例3: - JSONファイルのディレクトリをインポートするために夜間実行されるスクリプトがある
A) インポート・ユーティリティの使用
-externalを指定します。チェックポイントを使用すると、インポートが失敗した場合に、停止または中断した場所からインポートを再開できます。
java -jar lib/kvtool.jar import -external -store kvstore \
-helper-hosts <hostname>:5000 -config import_config \
-status /users/oracle/checkpoint_dir -format JSONimport_configファイルは現在の作業ディレクトリ内にあります。ファイルの内容は次のとおりです。{
"path": "/users/oracle/kvstore_export"
}B) Data Migratorユーティリティの使用ステップ
- 正しいソースとシンクの詳細を使用して、構成ファイル"
import_json.config"を準備します。ソースはインポートする必要のあるjsonファイルのリストです。dataPathパラメータで、すべてのjsonファイルを格納するディレクトリを指定します。移行のために、NoSQL Data Migratorはディレクトリ内の.json拡張子が付いたファイルをすべて識別します。シンクは、ファイルが特定の表にインポートされるNoSQL Databaseストアです。すべてのjsonファイルが、Oracle NoSQL Databaseストアの指定された表にインポートされます。userSchemaファイルには、次のDDL文が含まれます。CREATE TABLE IF NOT EXISTS users (id INTEGER, firstName STRING, lastName STRING, otherNames ARRAY(RECORD(first STRING, last STRING)), age INTEGER, income INTEGER,address JSON, connections ARRAY(INTEGER), expenses MAP(INTEGER), PRIMARY KEY(SHARD(id)))Data Migratorの構成ファイルは、次のとおりです。
{ "source" : { "type" : "file", "format" : "json", "dataPath": "/users/oracle/dir_jsonfiles" }, "sink" : { "type" : "nosqldb", "table" : "users", "schemaInfo" : { "schemaPath" : "/users/oracle/export_dir/kvstore_export/usersSchema" }, "storeName" : "kvstore", "helperHosts" : ["<hostname>:5000"] }, "abortOnError" : true, "migratorVersion" : "1.0.0" } - --configまたは-cオプションを使用して構成JSONファイルを渡し、
runMigratorコマンドを実行します。./runMigrator --config /users/oracle/migrator_config/import_json.config
例4: - MongoDBエクスポートからKVSTOREにデータをインポートする
A) インポート/エクスポート・ユーティリティの使用ステップ
-externalは、インポートするデータがOracle NoSQL Database以外のソースによって生成されていることを指定します。つまり、このフラグは、インポート・ユーティリティによって読み取られるディレクトリ構造がエクスポート・パッケージ形式ではないことを示します。形式をMONGODB_JSONとして指定します。java -jar lib/kvtool.jar import -external -store kvstore \
-helper-hosts <hostname>:5000 -config import_config \
-format MONGODB_JSONimport_configファイルは現在の作業ディレクトリ内にあります。ファイルの内容は次のとおりです。インポートのすべてのエラーおよび進捗情報を/users/oracle/mongo_db_import_logsに格納します。表の作成に使用するDDL文は、ddlSchemaFileパラメータで指定できます。{
"path": "/users/oracle/my_mongodb_data",
"errorOutput": "/users/oracle/mongo_db_import_logs"
"ddlSchemaFile" : "/users/oracle/export_dir/kvstore_export/usersSchema"
}
B) Data Migratorユーティリティの使用ステップ
- 正しいソースとシンクの詳細を使用して、構成ファイル"
import_mongodbjson.config"を準備します。ソースはMongoDB形式のJSONファイル、シンクはOracle NoSQL Databaseストアです。MongoDBにエクスポートされた、移行するJSONデータを含むファイルへの絶対パスを指定します。このデータがシンクで定義されているNoSQL表スキーマと一致することを確認する必要があります。{ "source" : { "type" : "file", "format" : "mongodb_json", "dataPath": "/users/oracle/my_mongodb_data" }, "sink" : { "type" : "nosqldb", "table" : "users", "schemaInfo" : { "schemaPath" : "/users/oracle/export_dir/kvstore_export/usersSchema" }, "storeName" : "kvstore", "helperHosts" : ["<hostname>:5000"] }, "abortOnError" : true, "migratorVersion" : "1.0.0" } - --configまたは-cオプションを使用して構成JSONファイルを渡し、
runMigratorコマンドを実行します。./runMigrator --config /users/oracle/migrator_config/import_mongodbjson.config