インポートおよびエクスポート・ユーティリティの使用

Oracle NoSQL Databaseには、表ベースのデータ、RAWキー/値ベースのデータおよびラージ・オブジェクト・データを抽出およびロードするためのインポート/エクスポート・ユーティリティが含まれています。kvtool.jarを介して使用できるインポート/エクスポート・ユーティリティを使用して、次のことができます。

  • Oracle NoSQL Databaseから表データをエクスポートし、そのデータをJSON形式のファイルとしてローカル(またはネットワークでマウントされた)ファイル・システムに格納します。
  • リレーショナル・データベースまたはその他のソースから生成されたアドホックJSONデータ、およびMongoDBのstrictエクスポート経由で生成されたJSONデータをインポートします。
  • 1つ以上の既存のOracle NoSQL Database表、RAWキー/値ベースのデータおよびラージ・オブジェクト・データを圧縮バイナリ形式にエクスポートします。
  • ファイル・システムとの間で、データの読取りまたは書込みを実行します。
  • 1つ以上の表をOracle NoSQL Databaseにインポートします。
  • インポートまたはエクスポートが完了前に失敗した場合は、チェックポイントから再開します。

インポート/エクスポート・ユーティリティでは、豊富なエラー処理セマンティクスおよびデータ変換を構成できます。その他の構成可能なオプションには、ロギング、チェックポイント生成および障害ポイントからの再開があります。

詳細は、importおよびexportを参照してください。

インポートおよびエクスポート機能

インポート/エクスポート・ユーティリティでは、次のことが可能です。

  • バイナリ、JSONまたはMongoDB JSON形式を含むデータ・ファイルをOracle NoSQL Databaseにインポートします。
  • Oracle NoSQL Databaseから、バイナリまたはJSON形式でデータ・ファイルにデータをエクスポートします。

Oracle NoSQL Databaseからデータをエクスポートするとき、インポート/エクスポート・ユーティリティによって、スキーマのメタデータおよび表データを含むエクスポート・パッケージ(ディレクトリ構造)が作成されます。このパッケージは自己完結型となり、これを使用して、任意のOracle NoSQL Databaseインスタンスに、1つ以上の表の状態を再作成できます。データをOracle NoSQL Databaseにインポートするとき、ユーティリティの実行対象は、このエクスポート・パッケージにすることも、インポート/エクスポート・ユーティリティでサポートされるデータ形式のファイルが含まれる任意のディレクトリにすることもできます。

インポート操作とエクスポート操作は、どちらもオンライン操作として実行されます。これらの操作は、読取りリクエストと書込みリクエストを処理するOracle NoSQL Databaseデータ・ストアに対して実行されます。したがって、データをエクスポートするとき、エクスポート・ユーティリティによって同期ポイントが強制されることや、Oracle NoSQL Databaseデータ・ストアのすべてのシャードで表の状態の一貫性を保証するグローバル・ロックが取得されることはありません。表の一貫性のある状態を取得する必要がある場合は、エクスポート操作中に、表の状態を変更する(アプリケーションからの)進行中のすべての書込み操作を一時停止することをお薦めします。インポート操作中に、データ・ストアにすでに存在するレコードの上書きを無視するようにインポートを構成できます。

データ・ソースおよびデータ・ターゲット(シンク)について

インポート/エクスポート・ユーティリティを操作するときには、ソース、シンクおよびデータ形式の概念を理解する必要があります。インポート/エクスポート・ユーティリティを使用して構成済のソースから構成済のシンクにデータを転送するとき、構成済のシンクにデータを挿入する前に、必要に応じて(後述の構成オプションに基づいて)データを変換します。転送の方向によって、ソースおよびシンクの使用方法が定義されます。データ形式によって、ソースまたはシンクから読み取られるデータがインポート/エクスポート・ツールによってどのように解釈されるようにするかが記述されます。

エクスポートする場合、ソース・タイプは常にOracle NoSQL Database (データ抽出元)で、シンクはそのデータの受信側です。インポートする場合、現在、ソース・タイプはファイルに制限され、シンクは常にOracle NoSQL Databaseです。後続のリリースでは、ソース・タイプをOracle Cloud Storageおよびその他のクラウド・ストレージ・プロバイダとして使用することが可能になります。

たとえば、テキストのJSONデータ・ファイルをOracle NoSQL Databaseにインポートすることが必要になる場合があります。この場合、ソース・タイプはLOCAL (データがファイルに格納されていることを示す)で、シンク・タイプはNoSQLDBです。データ形式はJSONです。

ノート:

インポート/エクスポート・ユーティリティの構成ファイルで、ソースおよびシンクに対して複数のデータ形式を構成できます。

データのインポート

importユーティリティを使用して、exportユーティリティで作成したバイナリまたはJSONデータおよびスキーマを含むパッケージをインポートします。また、importユーティリティを使用することにより、MongoDBや、リレーショナル・データベースなどの他のソースから抽出されたJSONデータをインポートすることもできます。データをインポートするためにインポート/エクスポート・ユーティリティを実行する場合、シンク(インポートのターゲット)は常にOracle NoSQL Databaseですが、ソース形式(JSON、バイナリまたはMongoDB)は構成できます。

エクスポート・パッケージのデータをインポートする場合、インポート・ユーティリティによって、エクスポート・パッケージの既知の構造内にデータが存在する1つ以上の表のデータがロードされます。エクスポートによって作成されたものでないデータをインポートする場合、インポート・ユーティリティでは1つの表へのロードのみがサポートされます。エクスポートによって作成されたものでないデータを含む複数の表をロードする必要がある場合は、各表のデータを別々のディレクトリ構造に格納し、ロードする表ごとにインポート・ユーティリティを1回実行することをお薦めします。JSON構成ファイルで、各表のpathおよびtableNameパラメータを変更します。JSON構成ファイルで使用可能なパラメータの詳細は、次の項を参照してください。

データのエクスポート

エクスポート・オプションを使用すると、インポート/エクスポート・ユーティリティによって、次のものを含むパッケージが作成されます。

  • 表のデータ
  • 表のスキーマ定義メタデータ
  • ロギング情報

インポート・オプションを使用するとき、インポート/エクスポート・ユーティリティに同じパッケージを指定して、エクスポート・パッケージの内容から表を自動的に作成およびロードできます。

すべてのデータおよびメタデータを、ローカルまたはネットワークにマウントされたファイルシステムにエクスポートできます。将来のリリースでは、Oracle Storage Cloudまたはその他のクラウド・ストレージ・プロバイダにデータをエクスポートできます。

必要に応じて、インポート/エクスポート・ユーティリティを使用して、データ・ストア全体ではなく、個々の表をエクスポートできます。このユーティリティによって、次のものが書き込まれます。

  • アプリケーションによって作成されたデータ(セキュリティ・データを除く)。
  • スキーマ・メタデータ:
    • 表を再作成するためのDDL。
    • 索引を再作成するためのDDL。
  • すべての表レコードのTTL情報。

インポート/エクスポート・ユーティリティでは、次のことはできません。

  • セキュリティ・データ(ユーザー定義など)のエクスポート
  • Oracle NoSQL Databaseのデプロイメント情報(クラスタ・トポロジなど)のエクスポート
  • データの増分エクスポート(特定の時点からのエクスポートなど)
  • 導出された情報(索引データ、キー分散統計データなど)のエクスポート。データのインポート時に、導出された情報を再作成する必要があります。

エクスポート操作の場合は、エクスポート操作のターゲットとしてdm-cryptなどの暗号化ファイル・システムを使用することをお薦めします。

  1. Oracle NoSQL Databaseデータ・ストアの内容全体をエクスポートし、エクスポート・パッケージを/users/oracle/kvstore_exportディレクトリに配置します。エクスポートがアクセス可能ないずれかのホストに接続することを試行できるように、sn1およびsn2という2つのヘルパー・ホストを指定します。
    java –Xmx64m –Xms64m -jar KVHOME/lib/kvtool.jar export \
        -export-all -store kvstore -helper-hosts sn1:5000,sn2:5000 \
        -config export_config

    export_configファイルは現在の作業ディレクトリ内にあり、ファイルの内容は次のとおりです。

    {
        "path": "/users/oracle/kvstore_export"
    }
  2. 例1で作成したエクスポート・パッケージのすべてのデータを別のOracle NoSQL Databaseデータ・ストアにインポートします。エクスポート・ユーティリティで作成されたエクスポート・パッケージを使用しているため、表がまだ存在しない場合は、すべての表が自動的に作成されます。
    java –Xmx64m –Xms64m -jar KVHOME/lib/kvtool.jar import \
        -import-all -store other_kvstore -helper-hosts sn10:5000 \
        -config import_config

    import_configファイルは現在の作業ディレクトリ内にあり、ファイルの内容は次のとおりです。

    {
        "path": "/users/oracle/kvstore_export"
    }
  3. エクスポートしたデータを/users/oracle/json_table_dataディレクトリに配置することによって、3つの表をJSON形式でエクスポートします。
    java –Xmx64m –Xms64m -jar KVHOME/lib/kvtool.jar export \
        -table table1, table2, table3 -store kvstore -helper-hosts sn1:5000,sn2:5000 \
        -config export_config -format JSON

    export_configファイルは現在のディレクトリ内にあり、ファイルの内容は次のとおりです。

    {
        "path": "/users/oracle/json_table_data"
    }
  4. 例3でエクスポートした3つの表を別のOracle NoSQL Databaseデータ・ストアにインポートします。インポートが失敗した場合に終了した位置からインポートを再開できるようにするために、チェックポイントを使用します。
    java –Xmx64m –Xms64m -jar KVHOME/lib/kvtool.jar import \
        -store other_kvstore -helper-hosts sn10:5000 \
        -config import_config -table table1, table2, table3 \
        -status /users/oracle/checkpoint_dir –format JSON

    import_configファイルは現在の作業ディレクトリ内にあり、ファイルの内容は次のとおりです。

    {
        "path": "/users/oracle/json_table_data"
    }
  5. "social_security_number"という名前のデータ内で機密属性を転送するのではなく、MongoDBのstrictエクスポートからのデータが含まれるデータ・ファイルに対してインポートを実行してください。インポートのすべてのエラーおよび進捗情報を/users/oracle/mongo_db_import_logsに格納します。
    java –Xmx64m –Xms64m -jar KVHOME/lib/kvtool.jar import \
        -external -store other_kvstore \
        -helper-hosts sn10:5000 -config import_config \
        -status /users/oracle/checkpoint_dir –format MONGODB_JSON

    import_configファイルは現在の作業ディレクトリ内にあり、ファイルの内容は次のとおりです。

    {
        "path": "/users/oracle/my_mongodb_data",
        "ignoreFields": "social_security_number",
        "errorOutput": "/users/oracle/mongo_db_import_logs"
    }