Oracle NoSQL Database Migratorとインポート/エクスポート・ユーティリティ
このトピックでは、Oracle NoSQL Database Migratorユーティリティが既存のOracle NoSQLインポート/エクスポート・ユーティリティとどのように異なるかについて説明します。
既存のオンプレミス専用のインポート/エクスポート・ユーティリティを置換および拡張するために、Oracle NoSQL Database Migratorが作成されました。NoSQL表のデータとスキーマ定義をソースとシンク(ターゲット)間で移動します。サポートされるソースとシンクにリストされているように、複数のソースとシンクをサポートします。一方で、インポート/エクスポート・ユーティリティでは、Oracle NoSQL Database (オンプレミス)に対してのみインポートまたはエクスポートできます。つまり、インポート/エクスポート・ユーティリティを使用して、Oracle NoSQL Databaseにデータをインポートするか、Oracle NoSQL Databaseからデータをエクスポートできます。エクスポートする場合、ソース・タイプは常にOracle NoSQL Database (データ抽出元)で、シンクはそのデータの受信側です。インポートする場合、現在、ソース・タイプはファイルに制限され、シンクは常にOracle NoSQL Databaseです。エクスポートおよびインポート機能を参照してください。
この基本的な違いとは別に、両方のユーティリティは他の多くの点で異なります。これらは次の比較表で確認できます。
表7-4 比較表
- | Oracle NoSQL Database 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 Database 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 JSON
export_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_dir
import_config
ファイルは現在の作業ディレクトリ内にあります。ファイルの内容は次のとおりです。{ "path": "/users/oracle/kvstore_export" }
NoSQL Database Migratorユーティリティの使用ステップ
- 正しいソースとシンクの詳細を使用して、構成ファイルを準備します。ソースは最初のNoSQL Databaseストア
kvstore1
です。表users
がエクスポートされます。シンクは、別のNoSQL Databaseストアkvstore2
です。schemaPath
パラメータで、NoSQL表を作成するためのDDL文を含むファイルへの絶対パスを指定します。NoSQL Database 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)))
NoSQL Database 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_config
export_config
ファイルは現在の作業ディレクトリ内にあります。ファイルの内容は次のとおりです。{ "path": "/users/oracle/kvstore_export" }
データおよびスキーマ定義用のディレクトリは、
kvstore_export
ディレクトリに作成されます。- 障害発生時には、次のインポート・コマンドを使用して、表を前夜のバージョンにリストアします。
java -jar lib/kvtool.jar import -store kvstore1 \ -table users -helper-hosts <hostname>:5000 \ -config import_config
import_config
ファイルは現在の作業ディレクトリ内にあります。ファイルの内容は次のとおりです。{ "path": "/users/oracle/kvstore_export" }
B) NoSQL Database Migratorユーティリティの使用ステップ
NoSQL Database Migratorユーティリティはバイナリ形式をサポートしていません。JSON形式のみがサポートされます。ここでNoSQL Database 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 JSON
import_config
ファイルは現在の作業ディレクトリ内にあります。ファイルの内容は次のとおりです。{
"path": "/users/oracle/kvstore_export"
}
B) NoSQL Database Migratorユーティリティの使用ステップ
- 正しいソースとシンクの詳細を使用して、構成ファイル"
import_json.config
"を準備します。ソースはインポートする必要のあるjsonファイルのリストです。dataPath
パラメータで、すべてのjsonファイルを格納するディレクトリを指定します。移行のために、NoSQL Database 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)))
NoSQL Database 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_JSON
import_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) NoSQL Database 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