Oracle NoSQL Database Migratorの使用

Oracle NoSQL Database Migratorと、それをデータ移行に使用する方法について学習します。

Oracle NoSQL Database Migratorは、Oracle NoSQL表をあるデータ・ソースから別のデータ・ソースに移行できるツールです。このツールは、オンプレミスのOracle NoSQL Database Cloud Service、オンプレミスのOracle NoSQL DatabaseおよびAWS S3の表を操作できます。Migratorツールは、複数の異なるデータ形式と物理メディア・タイプをサポートします。サポートされるデータ形式は、JSON、Parquet、MongoDB形式のJSON、DynamoDB形式のJSONおよびCSVファイルです。サポートされている物理メディア・タイプは、ファイル、OCIオブジェクト・ストレージ、オンプレミスのOracle NoSQL Database、Oracle NoSQL Database Cloud ServiceおよびAWS S3です。

この記事には次のトピックが含まれます:

概要

Oracle NoSQL Database Migratorを使用すると、Oracle NoSQL表をあるデータ・ソースから別のデータ・ソース(オンプレミスまたはクラウドのOracle NoSQL Database、単純なJSONファイルなど)に移動できます。

Oracle NoSQL DatabaseからまたはNoSQL表を移行する必要がある状況は、多数あります。たとえば、NoSQL Databaseアプリケーションを拡張する開発者のチームは、cloudsIMを使用して、ローカルのOracle NoSQL Database Cloud Service (NDCS)インスタンスで更新されたコードをテストする必要がある場合があります。考えられるすべてのテスト・ケースを検証するには、実際のデータと同様のテスト・データを設定する必要があります。これを行うには、本番環境からローカルNDCSインスタンス(cloudsim環境)にNoSQL表をコピーする必要があります。別の状況では、NoSQL開発者は、開発またはテストのために、アプリケーション・データをオンプレミスからクラウドに、またはその逆に移動する必要がある場合があります。

In all such cases and many more, you can use Oracle NoSQL Database Migrator to move your NoSQL tables from one data source to another, such as Oracle NoSQL Database on-premise or cloud or even a simple JSON file. NoSQL表は、MongoDB形式のJSON入力ファイル、DynamoDB形式のJSON入力ファイル(AWS S3ソースに格納済のファイルまたはファイルから格納済のファイル)またはCSVファイルをオンプレミスまたはクラウドのNoSQLデータベースにコピーすることもできます。

次の図に示すように、NoSQL Database Migratorユーティリティは、データ・ソースおよびターゲット(シンクと呼びます)の間のコネクタまたはパイプとして機能します。基本的に、このユーティリティは選択したソースからデータをエクスポートし、そのデータをシンクにインポートします。このツールは表指向です。つまり、表レベルでのみデータを移動できます。単一の移行タスクは単一の表で動作し、様々なデータ形式でソースからシンクへの表データの移行をサポートします。

Oracle NoSQL Database Migratorは、将来、追加のソースおよびシンクをサポートできるように設計されています。現在のリリースでOracle NoSQL Database Migratorによってサポートされているソースとシンクスのリストは、「サポートされるソースとシンクス」を参照してください。 イメージの説明が続きます

図migrator_overview.pngの説明

Oracle NoSQL Database Migratorで使用される用語

前述の図で使用されている様々な用語について詳しく説明します。

NoSQL Database Migratorツールは、様々なタイプのソースとシンク(物理メディアまたはデータのリポジトリ)およびデータ形式(データがソースまたはシンクで表現される方法)をサポートしています。サポートされるデータ形式は、JSON、Parquet、MongoDB形式のJSON、DynamoDB形式のJSONおよびCSVファイルです。サポートされているソースおよびシンク・タイプは、ファイル、OCIオブジェクト・ストレージ、オンプレミスのOracle NoSQL DatabaseおよびOracle NoSQL Database Cloud Serviceです。

ノート: JSONファイルでは大文字と小文字が識別されるため、特に指定されていないかぎり、構成ファイルで定義されているすべてのパラメータでは大文字と小文字が識別されます。

サポートされるソースとシンク

このトピックでは、Oracle NoSQL Database Migratorでサポートされるソースとシンクのリストを示します。

移行アクティビティには、この表の有効なソースとシンクを組み合せて使用できます。ただし、少なくとも一方の端、つまりソースまたはシンクがOracle NoSQL製品である必要があります。NoSQL Database Migratorを使用して、NoSQL表データをファイル間で移動することはできません。

型(値) フォーマット(値) 有効なソース 有効なシンク
Oracle NoSQL Database(nosqldb) NA あり あり
Oracle NoSQL Database Cloud Service(nosqldb_cloud) NA あり あり
ファイル・システム(file) JSON(json) あり あり
ファイル・システム(file) MongoDB JSON(mongodb_json) あり なし
ファイル・システム(file) DynamoDB JSON(dynamodb_json) あり なし
ファイル・システム(file) Parquet(parquet) なし あり
ファイル・システム(file) CSV(csv) あり なし
OCIオブジェクト・ストレージ(object_storage_oci) JSON(json) あり あり
OCIオブジェクト・ストレージ(object_storage_oci) MongoDB JSON(mongodb_json) あり なし
OCIオブジェクト・ストレージ(object_storage_oci) Parquet(parquet) なし あり
OCIオブジェクト・ストレージ(object_storage_oci) CSV(csv) あり なし
AWS S3 DynamoDB JSON(dynamodb_json) あり なし

ノート:ソースとシンクの構成では、多くの構成パラメータが共通しています。参照しやすいように、このようなパラメータの説明は、ドキュメントの項内のソースおよびシンクごとに繰り返されます。これらの項では、様々なタイプのソースやシンクの構成ファイル形式について説明します。いずれの場合も、同じ名前のパラメータの構文とセマンティクスは同じです。

ソースとシンクのセキュリティ

ソースおよびシンク・タイプの中には、認証のためにオプションまたは必須のセキュリティ情報が含まれているものがあります。

Oracle Cloud Infrastructure (OCI)のサービスを使用するすべてのソースおよびシンクでは、特定のパラメータを使用してオプションのセキュリティ情報を提供できます。この情報は、OCI構成ファイルまたはインスタンス・プリンシパルを使用して提供できます。

Oracle NoSQL Databaseソースおよびシンクでは、インストールがセキュアでOracle Walletベースの認証を使用する場合、必須のセキュリティ情報が必要です。この情報は、jarファイルを<MIGRATOR_HOME>/libディレクトリに追加することで提供できます。

インスタンス・プリンシパルによる認証

インスタンス・プリンシパルは、IAMサービス機能です。これにより、インスタンスは、サービス・リソースに対するアクションを実行できる認可済アクター(またはプリンシパル)になることができます。各コンピュート・インスタンスは、自身のアイデンティティを持ち、これに追加された証明書を使用して認証します。

Oracle NoSQL Database Migratorには、NoSQLクラウドおよびOCIオブジェクト・ストレージ・ソースに接続して、インスタンス・プリンシパル認証を使用するシンクに接続するためのオプションが用意されています。これは、OCIにホストされたVMで動作するNoSQL Database Migratorツールなど、OCIコンピュート・インスタンス内でNoSQL Database Migratorツールを使用する場合のみサポートされています。この機能を有効にするには、NoSQLクラウド・ソースおよびシンク構成ファイルのuseInstancePrincipal属性を使用します。様々なタイプのソースおよびシンクの構成パラメータの詳細は、「ソース構成テンプレート」および「シンク構成テンプレート」を参照してください

インスタンス・プリンシパルの詳細は、インスタンスからのサービスのコールに関する説明を参照してください。

Oracle NoSQL Database Cloud Serviceのソースおよびシンクでの認可

表、表領域、APIなどのOracle NoSQL Database Cloud Serviceのリソースへのアクセスは、Identity and Access Management (IAM)ポリシーによって管理されます。これにより、特定のコンパートメント内の表権限を適切に検査、読取り、使用または管理するユーザーまたはアプリケーションのみがこれらのリソースと対話できるようになります。詳細は、NDCS表へのアクセスの管理を参照してください

Migratorユーティリティを使用してOracle NoSQL Database Cloud Service表からデータをインポートまたはエクスポートする場合、有効なIAM権限によって、読取りまたは書込みが可能なリソースが決まります。定義済グループのユーザーが、認可された権限を超えてアクションを試行した場合、Migratorユーティリティは、OCI IAMで指定された対応する認可エラーを返します。

たとえば、ユーザー・グループに表に対する読取り権限のみがある場合、OCI IAMはOracle NoSQL Database Cloud Service表にデータをインポートする試みを拒否します。次のようなエラー・メッセージがログに表示されます。

[INSUFFICIENT_PERMISSION] Authorization failed or requested resource not found

Oracle NoSQL Database Migratorのワークフロー

Oracle NoSQL Database Migratorユーティリティを使用してNoSQLデータを移行するための様々なステップについて学習します。

次の図に、NoSQL Database Migratorの使用に関連するタスクの高レベル・フローを示します。

イメージの説明が続きます

図migrator_flow.pngの説明

NoSQL Data Migratorユーティリティのダウンロード

Oracle NoSQL Database Migratorユーティリティは、Oracle NoSQLのダウンロード・ページからダウンロードできます。マシンにダウンロードして解凍すると、コマンドライン・インタフェースからrunMigratorコマンドにアクセスできます。

ノート: Oracle NoSQL Database Migratorユーティリティを実行するには、Java 11以降のバージョンが必要です。

ソースとシンクの識別

マイグレータを使用する前に、データ・ソースとシンクを指定する必要があります。たとえば、オンプレミスのOracle NoSQL DatabaseからJSON形式のファイルにNo SQL表を移行する場合、ソースはOracle NoSQL Databaseになり、シンックはJSONファイルになります。サポートされているソースおよびシンクを参照して、識別されたソースおよびシンクがOracle NoSQL Database Migratorでサポートされていることを確認します。これは、ターゲットまたはシンクのNoSQL表のスキーマを決定して作成するための適切なフェーズでもあります。

ノート:シンクに表が存在し、schemaPathのDDLが表と異なる場合、移行は失敗します。

ノート:ソースがCSVファイルの場合は、ターゲット表のスキーマに対するDDLコマンドを使用してファイルを作成します。シンク構成ファイルのschemaInfo.schemaPathパラメータにファイル・パスを指定します。

runMigratorコマンドの実行

runMigrator実行可能ファイルは、抽出されたNoSQL Database Migratorファイルで使用できます。runMigratorコマンドを正常に実行するには、システムにJava 11以上のバージョンおよびbashをインストールする必要があります。

runMigratorコマンドは、次の2つの方法で実行できます。

  1. 次のように、runMigratorコマンドのランタイム・オプションを使用して構成ファイルを作成します。

    [~]$ ./runMigrator
    configuration file is not provided. Do you want to generate configuration? (y/n)
    
    [n]: y
    ...
    ...
    • runMigratorユーティリティを起動すると、一連の実行時オプションが提供されて、各オプションの選択内容に基づいて構成ファイルが作成されます。

    • ユーティリティによって構成ファイルを作成した後は、同じ実行で移行アクティビティを続行するか、将来の移行のために構成ファイルを保存できます。

    • 生成された構成ファイルでの移行アクティビティの続行または延期に関係なく、将来の要件を満たすようにファイルを編集またはカスタマイズできます。カスタマイズした構成ファイルは、後で移行に使用できます。

  2. -cまたは--configオプションを使用して、手動で作成した構成ファイル(JSON形式)を実行時パラメータとして渡します。-cまたは--configオプションを指定してrunMigratorコマンドを実行する前に、構成ファイルを手動で作成する必要があります。ソースおよびシンクの構成パラメータに関するヘルプは、Oracle NoSQL Database Migratorリファレンスを参照してください。

    [~]$ ./runMigrator -c </path/to/the/configuration/json/file>

注意: NoSQL Database Migratorは、Oracle NoSQL Cloud Service表から任意の有効なシンクへのデータ・エクスポートを実行中に読取りユニットを消費します。

Migratorの進捗状況のロギング

NoSQL Database Migratorツールには、トレース、デバッグおよび進行状況のメッセージを標準出力またはファイルに出力できるオプションが用意されています。このオプションは、特に表またはデータ・セットが大規模な場合に、移行操作の進捗状況を追跡するために役立ちます。

制限

Oracle NoSQL Database Migratorは、バックアップ中にデータベースをロックせず、他のユーザーをブロックしません。したがって、移行タスクの実行時には、次のアクティビティを実行しないことを強くお薦めします。

表の行のTTLメタデータの移行

ソースからシンクにTTLデータを移行する方法を学習します。

Time to Live (TTL)は、表の行を自動的に期限切れにできるメカニズムです。TTLは、データがストア内に存続できる時間として表されます。有効期限タイムアウト値に達したデータを取得できなくなり、ストア統計にも表示されません。

Oracle NoSQL Database表の移行の実行時に、表の行のTTLメタデータを実際のデータとともに含めるように選択できます。NoSQL Database Migratorには、表の行のTTLメタデータのエクスポートおよびインポートをサポートする構成パラメータが用意されています:

表- TTLメタデータの移行

ソース・タイプ ソース構成パラメータ シンク構成パラメータ
Oracle NoSQL Database includeTTL includeTTL
Oracle NoSQL Database Cloud Service includeTTL includeTTL
DynamoDB形式のJSONファイル ttlAttributeName includeTTL
AWS S3に格納されたDynamoDB形式のJSONファイル ttlAttributeName includeTTL

Oracle NoSQL DatabaseおよびOracle NoSQL Database Cloud ServiceでのTTLメタデータのエクスポート

NoSQL Database Migratorには、表の行のTTLメタデータのエクスポートをサポートするためのincludeTTL構成パラメータが用意されています。

表をエクスポートすると、有効な有効期限を持つ表の行のTTLデータがエクスポートされます。行が失効しない場合、有効期限値は常に0であるため、_metadata JSONオブジェクトはエクスポートされたデータに明示的に含まれません。

  1. 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メタデータをインポートできます。

デフォルトのインポート操作の参照時間は、NoSQL Database Migratorツールが実行されているマシンのSystem.currentTimeMillis()から取得された現在の時刻(ミリ秒)です。ただし、有効期間を延長し、延長し、すぐに期限切れになった行をインポートする場合は、ttlRelativeDate構成パラメータを使用してカスタム・リファレンス時間を設定することもできます。拡張は次のように計算され、有効期限に追加されます。

Extended time = expiration time - reference time

インポート操作では、TTLメタデータを含む表の行を移行する際に次のユースケースが処理されます。これらのユースケースは、includeTTL構成パラメータがtrueに設定されている場合にのみ適用されます。

AWS S3に格納されているDynamoDB形式のJSONファイルおよびDynamoDB形式のJSONファイルへのTTLメタデータのインポート

NoSQL Database Migratorには、DynamoDB形式のJSONファイル・アイテムからのTTLメタデータのインポートをサポートするための追加の構成パラメータttlAttributeNameが用意されています。

DynamoDBでエクスポートされた JSONファイルには、TTLの有効期限タイムスタンプを格納する特定の属性が各項目に含まれます。To optionally import the TTL values from DynamoDB exported JSON files, you must supply the specific attribute’s name as a value to the ttlAttributeName configuration parameter in the DynamoDB-Formatted JSON File or DynamoDB-Formatted JSON File stored in AWS S3 source configuration files. また、シンク構成テンプレートでincludeTTL構成パラメータを設定する必要があります。有効なシンクは、Oracle NoSQL DatabaseおよびOracle NoSQL Database Cloud Serviceです。NoSQL Database Migratorは、インポートされたアイテムの_metadata JSONオブジェクトにTTL情報を格納します。

インポート操作では、DynamoDBでエクスポートされたJSONファイルの表アイテムを移行する際に、次のユース・ケースを管理します。

ノート:シンク構成テンプレートにttlRelativeDate構成パラメータを、有効期限を計算するための参照時間として指定できます。

IDENTITY列を含むシンクへのデータのインポート

IDENTITY列を含むシンクにデータをインポートする方法を学習します。

有効なソースからIDENTITY列を含むシンク表(オンプレミス/クラウド・サービス)にデータをインポートできます。IDENTITY列は、GENERATED ALWAYS AS IDENTITYまたはGENERATED BY DEFAULT AS IDENTITYのいずれかとして作成します。IDENTITY列を含む表の作成の詳細は、SQLリファレンス・ガイドのIDENTITY列を含む表の作成を参照してください。

データをインポートする前に、シンクのOracle NoSQL Database表(存在する場合)が空であることを確認してください。シンク表に既存のデータがある場合、移行によって、シンク表の既存のデータの上書きやインポート中のソース・データのスキップなどの問題が発生する可能性があります。

IDENTITY列がGENERATED ALWAYS AS IDENTITYであるシンク表

IDENTITY列がGENERATED ALWAYS AS IDENTITYとして作成されたシンク表について考えます。データ・インポートは、ソースがIDENTITY列およびignoreFields変換パラメータに値を指定するかどうかによって異なります。

たとえば、JSONファイル・ソースのデータをシンクとしてOracle NoSQL Database表にインポートします。シンク表のスキーマは次のとおりです:

CREATE TABLE IF NOT EXISTS migrateID(ID INTEGER GENERATED ALWAYS AS IDENTITY, name STRING, course STRING, PRIMARY KEY
      (ID))

Migratorユーティリティは、次のケースで説明するようにデータ移行を処理します:

ソース条件 ユーザー処理 移行結果

ケース1: ソース・データでシンク表のIDENTITYフィールドに値が指定されていません。

例: JSONソース・ファイルsample_noID.json

{"name":"John", "course":"Computer Science"}
{"name":"Jane", "course":"BioTechnology"}
{"name":"Tony", "course":"Electronics"}

構成ファイルを作成/生成します。

データ移行に成功しました。IDENTITY列の値は自動生成されます。Oracle NoSQL Databaseシンク表migrateIDにデータを移行しました:

{"ID":1001,"name":"Jane","course":"BioTechnology"}
{"ID":1003,"name":"John","course":"Computer Science"}
{"ID":1002,"name":"Tony","course":"Electronics"}

ケース2: ソース・データでシンク表のIDENTITYフィールドに値が指定されます。

例: JSONソース・ファイルsampleID.json

{"ID":1, "name":"John", "course":"Computer Science"}
{"ID":2, "name":"Jane", "course":"BioTechnology"}
{"ID":3, "name":"Tony", "course":"Electronics"}

構成ファイルを作成/生成します。シンク構成テンプレートのID列にignoreFields変換を指定します。

"transforms" : { "ignoreFields" : ["ID"] }

データ移行に成功しました。指定されたID値はスキップされ、IDENTITY列の値は自動生成されます。

Oracle NoSQL Databaseシンク表migrateIDにデータを移行しました:

{"ID":2003,"name":"John","course":"Computer Science"}
{"ID":2002,"name":"Tony","course":"Electronics"}
{"ID":2001,"name":"Jane","course":"BioTechnology"}

IDENTITY列のignoreFields変換なしで、構成ファイルを作成/生成します。

データ移行は次のエラー・メッセージで失敗します:

"Cannot set value for a generated always identity column".

変換構成パラメータの詳細は、「変換構成テンプレート」のトピックを参照してください。

IDENTITY列がGENERATED BY DEFAULT AS IDENTITYであるシンク表

IDENTITY列がGENERATED BY DEFAULT AS IDENTITYとして作成されたシンク表について考えます。データ・インポートは、ソースがIDENTITY列およびignoreFields変換パラメータに値を指定するかどうかによって異なります。

たとえば、JSONファイル・ソースのデータをシンクとしてOracle NoSQL Database表にインポートします。シンク表のスキーマは次のとおりです:

CREATE TABLE IF NOT EXISTS migrateID(ID INTEGER GENERATED BY DEFAULT AS IDENTITY, name STRING, course STRING, PRIMARY KEY
      (ID))

Migratorユーティリティは、次のケースで説明するようにデータ移行を処理します:

ソース条件 ユーザー処理 移行結果

ケース1: ソース・データでシンク表のIDENTITYフィールドに値が指定されていません。

例: JSONソース・ファイルsample_noID.json

{"name":"John", "course":"Computer Science"}
{"name":"Jane", "course":"BioTechnology"}
{"name":"Tony", "course":"Electronics"}

構成ファイルを作成/生成します。

データ移行に成功しました。IDENTITY列の値は自動生成されます。Oracle NoSQL Databaseシンク表migrateIDにデータを移行しました:

{"ID":1,"name":"John","course":"Computer Science"}
{"ID":2,"name":"Jane","course":"BioTechnology"}
{"ID":3,"name":"Tony","course":"Electronics"}

ケース2: ソース・データがシンク表のIDENTITYフィールドに値を提供し、これが主キー・フィールドです。

例: JSONソース・ファイルsampleID.json

{"ID":1, "name":"John", "course":"Computer Science"}
{"ID":2, "name":"Jane", "course":"BioTechnology"}
{"ID":3, "name":"Tony", "course":"Electronics"}

構成ファイルを作成/生成します。シンク構成テンプレートのID列にignoreFields変換を指定します(推奨)。

"transforms" : { "ignoreFields" : ["ID"] }

データ移行に成功しました。指定されたID値はスキップされ、IDENTITY列の値は自動生成されます。

Oracle NoSQL Databaseシンク表migrateIDにデータを移行しました:

{"ID":1002,"name":"John","course":"Computer Science"}
{"ID":1001,"name":"Jane","course":"BioTechnology"}
{"ID":1003,"name":"Tony","course":"Electronics"}

IDENTITY列のignoreFields変換なしで、構成ファイルを作成/生成します。

データ移行に成功しました。ソースから指定されたID値は、シンク表のID列にコピーされます。

IDの値を指定せずに表に追加行を挿入しようとすると、順序ジェネレータによってID値の自動生成が試行されます。シーケンス・ジェネレータの開始値は1です。その結果、生成されたID値がシンク表内の既存のID値のいずれかを複製する可能性があります。これは主キー制約違反であるため、エラーが返され、行は挿入されません。

詳細は、順序ジェネレータを参照してください。

主キー制約違反を回避するために、順序ジェネレータは、シンク表の既存のID値と競合しない値で順序を開始する必要があります。START WITH属性を使用してこの変更を行うには、次の例を参照してください:

例: Oracle NoSQL Databaseシンク表migrateIDにデータを移行しました:

{"ID":1,"name":"John","course":"Computer Science"}
{"ID":2,"name":"Jane","course":"BioTechnology"}
{"ID":3,"name":"Tony","course":"Electronics"}

順序ジェネレータがID列に挿入する適切な値を検索するには、次の問合せを使用してIDフィールドの最大値をフェッチします:

SELECT ID FROM migrateID ORDER BY ID DESC LIMIT 1

出力:

{"ID":3}

シンク表のID列の最大値は3です。複製を避けるために、順序ジェネレータで3を超えるID値の生成を開始する必要があります。次の文を使用して、順序ジェネレータのSTART WITH属性を4に更新します:

ALTER Table migrateID (MODIFY ID GENERATED BY DEFAULT AS IDENTITY (START WITH 4))

これにより、順序は4から開始されます。

これで、ID値を指定せずにシンク表に行を挿入すると、順序ジェネレータによってID値が4以降から自動生成され、IDの重複が回避されるようになります。

変換構成パラメータの詳細は、「変換構成テンプレート」のトピックを参照してください。

問合せ述語を使用したデータのフィルタ処理

問合せ述語を指定して、フィルタ基準に一致する表の行のみをエクスポートする方法を学習します。

問合せ述語

NoSQL Database Migratorには、問合せ述語を指定してエクスポート中にデータを除外するオプションが用意されています。問合せ述語は、行がエクスポートされるために満たす必要がある条件を指定します。Migratorユーティリティは、問合せ述語をSQL WHERE句に変換し、指定された表に適用して、指定された条件に一致する行のみをエクスポートするフィルタ条件を指定します。問合せ述語で組込み関数(modification_time()expiration_time()creation_time())を使用して、拡張フィルタ・オプションを作成できます。

サポートされているすべてのシンクの問合せ述語は、Oracle NoSQL DatabaseおよびOracle NoSQL Database Cloud Serviceソースでのみ使用できます。詳細は、Oracle NoSQL DatabaseおよびOracle NoSQL Database Cloud Serviceを参照してください。

ユースケースのデモンストレーションについては、「Oracle NoSQL Database Cloud ServiceからJSONファイルへの移行」を参照してください。

ダンプ・フィルタ

Migratorユーティリティには、バックエンドで実行されるSQL問合せをエコーするオプションが用意されています。この機能により、生成された問合せを検証し、必要に応じて、移行タスクを実行する前にフィルタを絞り込むことができます。

次のようにダンプ・フィルタ・オプションを指定してMigratorユーティリティを実行できます。

[~/nosqlMigrator]$./runMigrator --dump-filter|df [optional-config-file]

Oracle NoSQL Database Migratorのユース・ケース・デモンストレーション

特定のユースケースでOracle NoSQL Database Migratorを使用してデータ移行を実行する方法を学習します。移行を実行するためのコード例を含む詳細な体系的手順は、各ユースケースにあります。

この記事には次のトピックが含まれます:

Oracle NoSQL Database Cloud ServiceからJSONファイルへの移行

この例では、Oracle NoSQL Database Migratorを使用して、Oracle NoSQL Database Cloud Service (NDCS)からJSONファイルにNoNoSQL表のデータおよびスキーマ定義をコピーする方法を示します。

ユースケース

組織は、Oracle NoSQL Database Cloud Service (NDCS)データを使用してモデルを訓練し、将来の行動を予測し、パーソナライズされた推奨を提供することを決定します。NDCS表のデータの定期的なコピーをJSONファイルに取得し、分析エンジンに適用してモデルを分析およびトレーニングできます。これは、分析問合せを低遅延のクリティカル・パスから分離するのに役立ちます。

デモンストレーションでは、myTableというNoSQL表のデータおよびスキーマ定義をNDCからJSONファイルに移行する方法について説明します。

前提条件

プロシージャ

表のデータおよびスキーマ定義をOracle NoSQL Database Cloud ServiceからJSONファイルに移行するには、次のいずれかのオプションを使用できます。

  1. コマンド・プロンプトを開き、NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  2. NoSQL Database Migratorを使用して構成ファイルを生成するには、ランタイム・パラメータを指定せずにrunMigratorコマンドを実行します。

    [~/nosqlMigrator]$./runMigrator
  3. ランタイム・パラメータとして構成ファイルを指定しなかったため、構成を今すぐ生成するかどうかを尋ねるプロンプトが表示されます。「**y**」と入力します。

    Configuration file is not provided. Do you want to generate
    configuration? (y/n) [n]: y
    
    Generating a configuration file interactively.
  4. ユーティリティのプロンプトに基づいて、ソース構成のオプションを選択します。

    Enter a location for your config [./migrator-config.json]: /home/<user>/nosqlMigrator/NDCS2JSON
    Select the source:
    1) nosqldb
    
    2) nosqldb_cloud
    
    3) file
    
    4) object_storage_oci
    
    5) aws_s3
    
    #? 2
    
    Configuration for source type=nosqldb_cloud
    Enter endpoint URL or region ID of the Oracle NoSQL Database Cloud: us-phoenix-1
    Select the authentication type:
    1) credentials_file
    
    2) instance_principal
    
    3) delegation_token
    
    4) session_token
    
    5) oke_workload_identity
    
    #? 1
    Enter path to the file containing OCI credentials [/home/<user>/.oci/config]:
    Enter the profile name in OCI credentials file [DEFAULT]:
    Enter the compartment name or id of the table []: developers
    Enter table name: myTable
    Include TTL data? If you select 'yes' TTL of rows will also
    be included in the exported data.(y/n) [n]:
    Enter percentage of table read units to be used for migration operation. (1-100) [90]:
    
    Enter store operation timeout in milliseconds. (1-30000) [5000]:
  5. ユーティリティのプロンプトに基づいて、シンク構成のオプションを選択します。

    Select the sink:
    1) nosqldb
    
    2) nosqldb_cloud
    
    3) file
    
    #? 3
    Configuration for sink type=file
    Enter path to a directory to store JSON data: /home/<user>/nosqlMigrator
    would you like to export data to multiple files for each source?(y/n) [y]: n
    Would you like to store JSON in pretty format? (y/n) [n]: y
    Would you like to migrate the table schema also? (y/n) [y]: y
    Enter path to a file to store table schema: /home/<user>/nosqlMigrator/myTableSchema
  6. ユーティリティのプロンプトに基づいて、ソース・データ変換のオプションを選択します。デフォルト値はnです。

    Would you like to add transformations to source data? (y/n) [n]:
  7. レコードの移行に失敗した場合に移行を続行するかどうかを決定するための選択肢を入力します。

    Would you like to continue migration in case of any record/row is failed to migrate?: (y/n) [n]:
  8. 生成された構成が画面に表示されます。

    generated configuration is:
    {
      "source": {
        "type": "nosqldb_cloud",
        "endpoint": "us-ashburn-1",
        "table": "myTable",
        "compartment": "ocid1.compartment.oc1..aa..rhsmq",
        "credentials": "/home/<user>/.oci/config",
        "credentialsProfile": "DEFAULT",
        "readUnitsPercent": 90,
        "requestTimeoutMs": 5000
      },
      "sink": {
        "type": "file",
        "format": "json",
        "useMultiFiles" : false,
        "schemaPath": "/home/<user>/nosqlMigrator/myTableSchema",
        "pretty": true,
        "dataPath": "/home/<user>/nosqlMigrator"
      },
      "abortOnError": true,
      "migratorVersion": "1.8.0"
    }
  9. ユーティリティによって、生成された構成ファイルで移行を続行するかどうかを決定するように求められます。デフォルト・オプションはyです。

    ノート: nを選択すると、生成された構成ファイルを使用して、./runMigrator -cまたは./runMigrator --configオプションを使用して移行を実行できます。

    Would you like to run the migration with above configuration?
    If you select no, you can use the generated configuration file to
    run the migration using:
    ./runMigrator --config /home/<user>/nosqlMigrator/NDCS2JSON
    (y/n) [y]:
  10. NoSQL Database Migratorによって、NDCSからJSONファイルにデータおよびスキーマが移行されます。

    Records provided by source=10,Records written to sink=10,Records failed=0,Records skipped=0.
    Elapsed time: 0min 1sec 277ms
    Migration completed.

    VALIDATION

移行を検証するために、指定されたシンク・ディレクトリに移動し、スキーマおよびデータを表示できます。

-- Exported myTable Data. JSON files are created in the supplied data path

[~/nosqlMigrator]$cat myTable_1_5.json
{
  "id" : 10,
  "document" : {
    "course" : "Computer Science",
    "name" : "Neena",
    "studentid" : 105
  }
}
{
  "id" : 3,
  "document" : {
  "course" : "Computer Science",
    "name" : "John",
    "studentid" : 107
  }
}
{
  "id" : 4,
  "document" : {
    "course" : "Computer Science",
    "name" : "Ruby",
    "studentid" : 100
  }
}
{
  "id" : 6,
  "document" : {
    "course" : "Bio-Technology",
    "name" : "Rekha",
    "studentid" : 104
  }
}
{
  "id" : 7,
  "document" : {
    "course" : "Computer Science",
    "name" : "Ruby",
    "studentid" : 100
  }
}
{
  "id" : 5,
  "document" : {
    "course" : "Journalism",
    "name" : "Rani",
    "studentid" : 106
  }
}
{
  "id" : 8,
  "document" : {
    "course" : "Computer Science",
    "name" : "Tom",
    "studentid" : 103
  }
}
{
  "id" : 9,
  "document" : {
    "course" : "Computer Science",
    "name" : "Peter",
    "studentid" : 109
  }
}
{
  "id" : 1,
  "document" : {
    "course" : "Journalism",
    "name" : "Tracy",
    "studentid" : 110
  }
}
{
  "id" : 2,
  "document" : {
    "course" : "Bio-Technology",
    "name" : "Raja",
    "studentid" : 108
  }
}
-- Exported myTable Schema

[~/nosqlMigrator]$cat myTableSchema
CREATE TABLE IF NOT EXISTS myTable (id INTEGER, document JSON, PRIMARY KEY(SHARD(id)))
  1. Oracle NoSQL Database Cloud Service (NDCS)ソースおよびJSONシンクの詳細を含む構成ファイル(JSON形式)を準備します。ソース構成テンプレートおよびシンク構成テンプレートを参照してください。

    users表は、この例の次のデータとともに使用されます。

    {"id":10,"firstName":"John","lastName":"Smith","age":22,"income":45000,"address":{"city":"Santa Cruz","number":101,"phones":[{"area":408,"kind":"work","number":4538955},{"area":831,"kind":"home","number":7533341},{"area":831,"kind":"mobile","number":7533382}],"state":"CA","street":"Pacific Ave","zip":95008}}
    {"id":20,"firstName":"Jane","lastName":"Smith","age":22,"income":55000,"address":{"city":"San Jose","number":201,"phones":[{"area":608,"kind":"work","number":6538955},{"area":931,"kind":"home","number":9533341},{"area":931,"kind":"mobile","number":9533382}],"state":"CA","street":"Atlantic Ave","zip":95005}}
    {"id":30,"firstName":"Adam","lastName":"Smith","age":45,"income":75000,"address":{"city":"Houston","number":301,"phones":[{"area":618,"kind":"work","number":6618955},{"area":951,"kind":"home","number":9613341},{"area":981,"kind":"mobile","number":9613382}],"state":"TX","street":"Indian Ave","zip":95075}}
    {"id":40,"firstName":"Joanna","lastName":"Smith","age":null,"income":75000,"address":{"city":"Houston","number":401,"phones":[{"area":null,"kind":"work","number":1618955},{"area":451,"kind":"home","number":4613341},{"area":481,"kind":"mobile","number":4613382}],"state":"TX","street":"Tex Ave","zip":95085}}

    必要な行のみを表からエクスポートするには、queryFilterパラメータと適切な問合せ述語をソース構成テンプレートに含めてください。問合せ述語の作成方法の詳細は、NoSQL Database Cloudサービス・ソースのトピックのサンプル問合せ述語表を参照してください。

    この例では、問合せ述語によって、address JSON列のcityフィールドが'Houston'である行がusers表からエクスポートされます。

    {
      "source" : {
        "type" : "nosqldb_cloud",
        "endpoint" : "us-ashburn-1",
        "table" : "users",
        "queryFilter" : "$row.address.city='Houston'",
        "compartment" : "ocid1.compartment.oc1..aa..rhsmq",
        "credentials" : "/home/<user>/.oci/config",
        "credentialsProfile" : "DEFAULT",
        "readUnitsPercent" : 90,
        "includeTTL" : true,
        "requestTimeoutMs" : 5000
      },
      "sink" : {
        "type" : "file",
        "format" : "json",
        "useMultiFiles" : true,
        "chunkSize" : 32,
        "schemaPath" : "/scratch/<user>/nosqlMigrator/tableschema.ddl",
        "pretty" : false,
        "dataPath" : "/scratch/<user>/nosqlMigrator"
      },
      "abortOnError" : true,
      "migratorVersion" : "1.8.0"
    }
  2. コマンド・プロンプトを開き、NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  3. 構成ファイルを渡して、runMigratorコマンドを実行します。--configまたは -cオプションを使用します。

    [~/nosqlMigrator]$./runMigrator --config <complete/path/to/the/JSON/config/file>

    ノート:

    次のコマンドを使用してコマンドを実行することもできます。

    次のように移行タスクを実行する前に、生成された問合せを表示および検証するオプションです。詳細は、を参照してください

    .

    [~/nosqlMigrator]$./runMigrator --dump-filter <complete/path/to/the/JSON/config/file>

    ユーティリティは、次のようにデータの移行に進みます。

    [INFO] creating source from given configuration:
    [INFO] [cloud source] : query = 'SELECT $row,expiration_time_millis($row) AS expiration FROM users $row where $row.address.city='Houston''
    [INFO] source creation completed
    [INFO] creating sink from given configuration:
    [INFO] sink creation completed
    [INFO] creating migrator pipeline
    [INFO] [json file sink] : writing table schema to /scratch/raumesh/nosqlMigrator/tableschema.ddl
    [INFO] migration started
    [INFO] Migration success for source users. read=2,written=2,failed=0
    [INFO] Migration is successful for all the sources.
    [INFO] migration completed.
    Records provided by source=2, Records written to sink=2, Records failed=0,Records skipped=0.
    Elapsed time: 0min 0sec 182ms
    Migration completed.

検証

移行を確認するには、指定されたシンク・ディレクトリに移動し、スキーマおよびデータを表示できます。cityフィールド値が'Houston'のaddress JSON列の行のみがエクスポートされます。

-- Exported users data. Schema and JSON files are created in the supplied data paths.

[~/nosqlMigrator]: cat tableschema.ddl

CREATE TABLE IF NOT EXISTS users (id INTEGER, firstName STRING, lastName STRING, age INTEGER, income INTEGER, address JSON, PRIMARY KEY(SHARD(id)))
[~/nosqlMigrator]: cat users_6_10.json

{"id":30,"firstName":"Adam","lastName":"Smith","age":45,"income":75000,"address":{"city":"Houston","number":301,"phones":[{"area":618,"kind":"work","number":6618955},{"area":951,"kind":"home","number":9613341},{"area":981,"kind":"mobile","number":9613382}],"state":"TX","street":"Indian Ave","zip":95075}}
{"id":40,"firstName":"Joanna","lastName":"Smith","age":null,"income":75000,"address":{"city":"Houston","number":401,"phones":[{"area":null,"kind":"work","number":1618955},{"area":451,"kind":"home","number":4613341},{"area":481,"kind":"mobile","number":4613382}],"state":"TX","street":"Tex Ave","zip":95085}}
bash-4.4$

オンプレミスのOracle NoSQL DatabaseからOracle NoSQL Database Cloud Serviceへの移行

この例では、Oracle NoSQL Database Migratorを使用して、Oracle NoSQL DatabaseからOracle NoSQL Database Cloud Service (NDCS)にNoSQL表のデータおよびスキーマ定義をコピーする方法を示します。

ユースケース

開発者は、既存のNoSQL Database KVStoreワークロードのリソース、クラスタおよびガベージ・コレクションの管理のオーバーヘッドを回避するためのオプションを調べています。解決策として、NDCSによって既存のオンプレミスKVStoreワークロードが自動的に管理されるため、これらをOracle NoSQL Database Cloud Serviceに移行することを選択します。

デモでは、myTableというNoSQL表のデータおよびスキーマ定義をNoSQL Database KVStoreからNDCSに移行する方法について説明します。また、このユースケースを使用して、事前作成済の構成ファイルを渡してrunMigratorユーティリティの実行方法を示します。

前提条件

プロシージャ

myTableのデータおよびスキーマ定義をNoSQL Database KVStoreからNDCSに移行するには:

  1. 識別されたソースおよびシンクの詳細を含む構成ファイル(JSON形式)を準備します。ソース構成テンプレートおよびシンク構成テンプレートを参照してください。

    {
      "source" : {
        "type" : "nosqldb",
        "storeName" : "kvstore",
        "helperHosts" : ["<hostname>:5000"],
        "table" : "myTable",
        "requestTimeoutMs" : 5000
      },
      "sink" : {
        "type" : "nosqldb_cloud",
        "endpoint" : "us-phoenix-1",
        "table" : "myTable",
        "compartment" : "developers",
        "schemaInfo" : {
          "schemaPath" : "<complete/path/to/the/JSON/file/with/DDL/commands/for/the/schema/definition>",
          "readUnits" : 100,
          "writeUnits" : 100,
          "storageSize" : 1
        },
        "credentials" : "<complete/path/to/oci/config/file>",
        "credentialsProfile" : "DEFAULT",
        "writeUnitsPercent" : 90,
        "requestTimeoutMs" : 5000
      },
      "abortOnError" : true,
      "migratorVersion" : "1.8.0"
    }
  2. コマンド・プロンプトを開き、NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  3. --configまたは-cオプションを使用して構成ファイルを渡し、runMigratorコマンドを実行します。

    [~/nosqlMigrator/nosql-migrator-1.8.0]$./runMigrator --config <complete/path/to/the/JSON/config/file>
  4. 次に示すように、ユーティリティはデータの移行に進みます。

    Records provided by source=10, Records written to sink=10, Records failed=0.
    Elapsed time: 0min 10sec 426ms
    Migration completed.

VALIDATION

移行を検証するには、NDCSコンソールにログインし、ソース・データを使用してmyTableが作成されていることを確認します。

JSONファイル・ソースからOracle NoSQL Database Cloud Serviceへの移行

この例では、Oracle NoSQL Database Migratorを使用して、JSONファイル・ソースからOracle NoSQL Database Cloud Serviceにデータをコピーする方法を示します。

複数のオプションを評価した後、組織はOracle NoSQL Database Cloud ServiceをNoNoSQL Databaseプラットフォームとして最終決定します。ソース・コンテンツはJSONファイル形式であるため、これをOracle NoSQL Database Cloud Serviceに移行する方法を探しています。

この例では、SampleData.jsonというJSONファイルからデータを移行する方法について学習します。runMigratorユーティリティは、事前作成済の構成ファイルを渡して実行します。構成ファイルがランタイム・パラメータとして指定されていない場合、runMigratorユーティリティでは、対話型プロシージャを使用して構成を生成するように求められます。

前提条件

プロシージャ

JSONソース・ファイルをSampleData.jsonからOracle NoSQL Database Cloud Serviceに移行するには、次を実行します。

  1. 識別されたソースおよびシンクの詳細を含む構成ファイル(JSON形式)を準備します。ソース構成テンプレートおよびシンク構成テンプレートを参照してください。

    {
      "source" : {
        "type" : "file",
        "format" : "json",
        "schemaInfo" : {
          "schemaPath" : "[~/nosql-migrator-1.8.0]/schema_json.ddl"
        },
        "dataPath" : "[~/nosql-migrator-1.8.0]/SampleData.json"
      },
      "sink" : {
        "type" : "nosqldb_cloud",
        "endpoint" : "us-ashburn-1",
        "table" : "Migrate_JSON",
        "compartment" : "Training-NoSQL",
        "includeTTL" : false,
        "schemaInfo" : {
          "readUnits" : 100,
          "writeUnits" : 60,
          "storageSize" : 1,
          "useSourceSchema" : true
        },
        "credentials" : "/home/<user>/.oci/config",
        "credentialsProfile" : "DEFAULT",
        "writeUnitsPercent" : 90,
        "overwrite" : true,
        "requestTimeoutMs" : 5000
      },
      "abortOnError" : true,
      "migratorVersion" : "1.8.0"
    }
  2. コマンド・プロンプトを開き、Oracle NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  3. --configまたは-cオプションを使用して構成ファイルを渡し、runMigratorコマンドを実行します。

    [~/nosql-migrator-1.8.0]$./runMigrator --config <complete/path/to/the/config/file>
  4. 次に示すように、ユーティリティはデータの移行に進みます。Migrate_JSON表は、schemaPathに指定されたスキーマでシンクに作成されます。

    creating source from given configuration:
    source creation completed
    creating sink from given configuration:
    sink creation completed
    creating migrator pipeline
    migration started
    [cloud sink] : start loading DDLs
    [cloud sink] : executing DDL: create table Migrate_JSON (id INTEGER, val_json JSON, PRIMARY KEY(id)),limits: [100, 60, 1]
    [cloud sink] : completed loading DDLs
    [cloud sink] : start loading records
    [json file source] : start parsing JSON records from file: SampleData.json
    [INFO] migration completed.
    Records provided by source=4, Records written to sink=4, Records failed=0, Records skipped=0.
    Elapsed time: 0min 5sec 778ms
    Migration completed.

VALIDATION

移行を検証するには、Oracle NoSQL Database Cloud Serviceコンソールにログインし、ソース・データでMigrate_JSON表が作成されていることを確認します。コンソールにアクセスする手順は、Oracle NoSQL Database Cloud Serviceドキュメントのインフラストラクチャ・コンソールからのサービスへのアクセスを参照してください。

図- Oracle NoSQL Database Cloud Serviceコンソールの表

イメージの説明が続きます

図migrate_json1.pngの説明

図- Oracle NoSQL Database Cloud Serviceコンソールの表データ

イメージの説明が続きます

図migrate_json2.pngの説明

MongoDB JSONファイルからOracle NoSQL Database Cloud Serviceへの移行

この例では、Oracle NoSQL Database Migratorを使用して、Oracle NoSQL Database Cloud Service (NDCS)にMongoDB形式のデータをコピーする方法を示します。

ユースケース

複数のオプションを評価した後、組織はOracle NoSQL Database Cloud ServiceをNoNoSQL Databaseプラットフォームとして最終決定します。表とデータはMongoDBにあり、組織は両方をOracle NDCSに移行することを希望しています。

ソース構成テンプレートでファイルまたはディレクトリを指定することで、MongoDBがエクスポートした移行用のJSONデータを含むファイルまたはディレクトリをコピーできます。

次の2つのサンプルJSONファイルをMongoDBからエクスポートして、ユースケースを示します。

MongoDB形式のJSONファイルのサンプルを次に示します:

{"_id":0,"name":"Aimee Zank","scores":[{"score":1.463179736705023,"type":"exam"},{"score":11.78273309957772,"type":"quiz"},{"score":35.8740349954354,"type":"homework"}]}
{"_id":1,"name":"Aurelia Menendez","scores":[{"score":60.06045071030959,"type":"exam"},{"score":52.79790691903873,"type":"quiz"},{"score":71.76133439165544,"type":"homework"}]}
{"_id":2,"name":"Corliss Zuk","scores":[{"score":67.03077096065002,"type":"exam"},{"score":6.301851677835235,"type":"quiz"},{"score":66.28344683278382,"type":"homework"}]}
{"_id":3,"name":"Bao Ziglar","scores":[{"score":71.64343899778332,"type":"exam"},{"score":24.80221293650313,"type":"quiz"},{"score":42.26147058804812,"type":"homework"}]}
{"_id":4,"name":"Zachary Langlais","scores":[{"score":78.68385091304332,"type":"exam"},{"score":90.2963101368042,"type":"quiz"},{"score":34.41620148042529,"type":"homework"}]}

SpringアプリケーションからエクスポートされたMongoDB形式のJSONファイルのサンプルは、次のとおりです。

{"_id":{"$oid":"63d3a87cf564fc21dac3838d"},"firstName":"John","lastName":"Smith","address":{"Country":"France"},"_class":"com.example.demo.Customer"}
{"_id":{"$oid":"63d3a87cf564fc21dac3838e"},"firstName":"Sam","lastName":"David","address":{"Country":"USA"},"_class":"com.example.demo.Customer"}
{"_id":"3","firstName":"Dona","lastName":"William","address":{"Country":"England"},"_class":"com.example.demo.Customer"}

MongoDBは、フォーマットされたJSONファイルに対する2種類の拡張(正規モードおよび緩和モード)をサポートしています。mongoexportツールを使用して正規モードでまたは緩和モードで生成されるMongo DB形式のJSONファイルを指定することができます。NoSQL Database Migratorは両方のモードをサポートしています。

MongoDB Extended JSON (v2)ファイルの詳細は、mongoexport_formatsを参照してください。

MongoDB形式のJSONファイルの生成の詳細は、mongoexportを参照してください。

デモでは、MongoDB形式のJSONファイルをNDCSに移行する方法について説明します。この例では、手動で作成した構成ファイルを使用します。

前提条件

プロシージャ

MongoDB形式のJSONデータをOracle NoSQL Database Cloud Serviceに移行するには、次のいずれかのオプションを選択できます:

  1. 識別されたソースおよびシンクの詳細を含む構成ファイル(JSON形式)を準備します。ソース構成テンプレートおよびシンク構成テンプレートを参照してください。

    ここでは、defaultSchema構成パラメータをtrueに設定します。したがって、NoSQL Database Migratorは、シンクにデフォルト・スキーマを含む表を作成します。

    {
      "source" : {
        "type" : "file",
        "format" : "mongodb_json",
        "dataPath" : "<complete/path/to/the/MongoDB/Formatted/JSON/file>"
      },
      "sink" : {
        "type" : "nosqldb_cloud",
        "endpoint" : "us-ashburn-1",
        "table" : "mongoImport",
        "compartment" : "ocid1.compartment.oc1..aaaaaaaaadeskhnnfkenws4k2vdyklcc32hfpzzz4z3zum3ubhmpz6zxnoza",
    
        "includeTTL" : false,
        "schemaInfo" : {
          "readUnits" : 100,
          "writeUnits" : 60,
          "storageSize" : 1,
          "defaultSchema" : true
        },
        "credentials" : "<complete/path/to/the/oci/config/file>",
        "credentialsProfile" : "DEFAULT",
        "writeUnitsPercent" : 90,
        "overwrite" : true,
        "requestTimeoutMs" : 5000
      },
      "abortOnError" : true,
      "migratorVersion" : "1.8.0"
    }

    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列に集計されます。

    ノート:<tablename>がOracle NoSQL Database Cloud Serviceにすでに存在し、defaultSchema構成を使用してデータを表に移行する場合は、既存の表のID列が小文字(id)でSTRING型であることを確認する必要があります。

  2. コマンド・プロンプトを開き、NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  3. 構成ファイルを渡して、runMigratorコマンドを実行します。--configまたは -cオプションを使用します。

    $./runMigrator --config <complete/path/to/the/JSON/config/file>
  4. 次に示すように、ユーティリティはデータの移行に進みます。

    [INFO] creating source from given configuration:
    [INFO] source creation completed
    [INFO] creating sink from given configuration:
    [INFO] sink creation completed
    [INFO] creating migrator pipeline
    [INFO] [cloud sink] : start loading DDLs
    [INFO] [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS mongoImport (id STRING, document JSON, PRIMARY KEY(SHARD(id))),limits: [100, 60, 1]
    [INFO] [cloud sink] : completed loading DDLs
    [INFO] migration started
    [INFO] [mongo file source] : start parsing MongoDB JSON records from file: mongoDBSample.json
    [INFO] Migration success for source mongoDBSample. read=5,written=5,failed=0
    [INFO] Migration is successful for all the sources.
    [INFO] migration completed.
    Records provided by source=5, Records written to sink=5, Records failed=0,Records skipped=0.
    Elapsed time: 0min 0sec 448ms
    Migration completed.

検証

移行を確認するには、Oracle NoSQL Database Cloud Serviceコンソールにログインし、ソース・データでmongoImport表が作成されていることを確認します。コンソールにアクセスする手順は、インフラストラクチャ・コンソールからのサービスのアクセスの記事を参照してください。

  1. 識別されたソースおよびシンクの詳細を含む構成ファイル(JSON形式)を準備します。ソース構成テンプレートおよびシンク構成テンプレートを参照してください。

    ここでは、シンク表のDDL文を含むファイルを、ソース構成テンプレートのschemaPathパラメータで指定します。これに対応して、シンク構成テンプレートでuseSourceSchema構成パラメータをtrueに設定します。

    次のようにカスタム・スキーマを生成できます。

    • MongoDB形式のJSONデータから、各列の名前とデータ型を書き留めます。この情報を使用して、Oracle NoSQL Database Cloud Service表のスキーマDDLファイルを作成します。

    • スキーマ・ファイルで、最初の列(主キー)にSTRING型のidという名前を付けます。MongoDB形式のJSONファイルに記録されているものと同じ名前および型を残りの列に含めます。

    • スキーマ・ファイルを保存し、その完全なパスを書き留めます。

    この例では、次のユーザー定義スキーマが使用されています。

    CREATE TABLE IF NOT EXISTS sampleMongoDBImp (id STRING, name STRING, scores JSON, PRIMARY KEY(SHARD(id)));

    表の作成時に、NoSQL Database Migratorに_id列をidに変換するように指示するrenameFields変換を含める必要があります。パラメータの詳細は、「変換構成テンプレート」を参照してください。NoSQL Database Migratorは、シンクにカスタム・スキーマを含む表を作成します。

    {
      "source" : {
        "type" : "file",
        "format" : "mongodb_json",
        "schemaInfo" : {
          "schemaPath" : "<complete/path/to/the/schema/file>"
        },
        "dataPath" : "<complete/path/to/the/MongoDB/Formatted/JSON/file>"
      },
      "sink" : {
        "type" : "nosqldb_cloud",
        "endpoint" : "us-ashburn-1",
        "table" : "sampleMongoDBImp",
        "compartment" : "ocid1.compartment.oc1..aaaaaaaaadeskhnnfkenws4k2vdyklcc32hfpzzz4z3zum3ubhmpz6zxnoza",
        "includeTTL" : true,
        "schemaInfo" : {
          "readUnits" : 100,
          "writeUnits" : 60,
          "storageSize" : 1,
          "useSourceSchema" : true
        },
        "credentials" : "<complete/path/to/the/oci/config/file>",
        "credentialsProfile" : "DEFAULT",
        "writeUnitsPercent" : 90,
        "overwrite" : false,
        "requestTimeoutMs" : 5000
      },
      "transforms": {
        "renameFields" : {
          "_id":"id"
        }
      },
      "abortOnError" : true,
      "migratorVersion" : "1.8.0"
    }
  2. コマンド・プロンプトを開き、NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  3. 構成ファイルを渡して、runMigratorコマンドを実行します。--configまたは -cオプションを使用します。

    $./runMigrator --config <complete/path/to/the/JSON/config/file>
  4. 次に示すように、ユーティリティはデータの移行に進みます。

    [INFO] creating source from given configuration:
    [INFO] source creation completed
    [INFO] creating sink from given configuration:
    [INFO] sink creation completed
    [INFO] creating migrator pipeline
    [INFO] [cloud sink] : start loading DDLs
    [INFO] [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS sampleMongoDBImp (id INTEGER, name STRING, scores JSON, PRIMARY KEY(SHARD(id))),limits: [100, 60, 1]
    [INFO] [cloud sink] : completed loading DDLs
    [INFO] migration started
    [INFO] [mongo file source] : start parsing MongoDB JSON records from file: mongoDBSample.json
    [INFO] Migration success for source mongoDBSample. read=5,written=5,failed=0
    [INFO] Migration is successful for all the sources.
    [INFO] migration completed.
    Records provided by source=5, Records written to sink=5, Records failed=0,Records skipped=0.
    Elapsed time: 0min 0sec 438ms
    Migration completed.

検証

移行を確認するには、Oracle NoSQL Database Cloud Serviceコンソールにログインし、ソース・データでsampleMongoDBImp表が作成されていることを確認します。コンソールにアクセスする手順は、インフラストラクチャ・コンソールからのサービスのアクセスの記事を参照してください。

  1. このユース・ケースでは、SpringアプリケーションからエクスポートされたMongoDB形式のサンプルJSONファイルをソースとして使用します。この形式の詳細は、Spring Dataを参照してください。

  2. 識別されたソースおよびシンクの詳細を含む構成ファイル(JSON形式)を準備します。ソース構成テンプレートおよびシンク構成テンプレートを参照してください。

    ここでは、シンク表のDDL文を含むファイルを、ソース構成テンプレートのschemaPathパラメータで指定します。これに対応して、シンク構成テンプレートでuseSourceSchema構成パラメータをtrueに設定します。

    次のようにカスタム・スキーマを生成できます。

    • MongoDB形式のJSONデータから、各列の名前とデータ型を書き留めます。

    • スキーマ・ファイルで、最初の列(主キー)にSTRING型のidという名前を付けます。残りのフィールドをJSON型のkv_json_という名前のフィールドに集計し、Springデータ形式に準拠します。詳細は、Springデータ・フレームワークの永続性モデルを参照してください。

    • スキーマ・ファイルを保存し、その完全なパスを書き留めます。

    この例では、次のユーザー定義スキーマが使用されています。

    CREATE TABLE IF NOT EXISTS sampleMongoDBSpringImp(id STRING, kv_json_ JSON, PRIMARY KEY(SHARD(id)))

    前述のSpringデータ・サンプルでは、次の変換を含める必要があります。

    • _id列をidに変換するrenameFields変換

    • _class列を無視し、シンク表に含めないignoreFields変換

    • 残りのフィールド(id以外)をJSON型のフィールドに集計するaggregateFields変換

    パラメータの詳細は、「変換構成テンプレート」を参照してください。NoSQL Database Migratorは、シンクにカスタム・スキーマを含む表を作成します。

    {
      "source": {
        "type": "file",
        "format": "mongodb_json",
        "schemaInfo": {
          "schemaPath": "<complete/path/to/the/schema/file>"
        },
        "dataPath": "<complete/path/to/the/MongoDB/Formatted/JSON/file>"
      },
      "sink": {
        "type": "nosqldb_cloud",
        "endpoint": "us-ashburn-1",
        "table": "sampleMongoDBSpringImp",
        "compartment": "ocid1.compartment.oc1..aaaaaaaaadeskhnnfkenws4k2vdyklcc32hfpzzz4z3zum3ubhmpz6zxnoza",
        "includeTTL": true,
        "schemaInfo": {
          "readUnits": 100,
          "writeUnits": 60,
          "storageSize": 1,
          "useSourceSchema": true
        },
        "credentials": "<complete/path/to/the/oci/config/file>",
        "credentialsProfile": "DEFAULT",
        "writeUnitsPercent": 90,
        "overwrite": false,
        "requestTimeoutMs": 5000
      },
      "transforms": {
        "renameFields": {
          "_id": "id"
        },
        "ignoreFields": ["_class"],
        "aggregateFields": {
          "fieldName": "kv_json_",
          "skipFields": ["id"]
        }
      },
      "abortOnError" : true,
      "migratorVersion" : "1.8.0"
    }
  3. コマンド・プロンプトを開き、NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  4. 構成ファイルを渡して、runMigratorコマンドを実行します。--configまたは -cオプションを使用します。

    $./runMigrator --config <complete/path/to/the/JSON/config/file>
  5. 次に示すように、ユーティリティはデータの移行に進みます。

    creating source from given configuration:
    source creation completed
    creating sink from given configuration:
    sink creation completed
    creating migrator pipeline
    [cloud sink] : start loading DDLs
    [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS sampleMongoDBSpringImp (id STRING, kv_json_ JSON, PRIMARY KEY(SHARD(id))),limits: [100, 60, 1]
    [cloud sink] : completed loading DDLs
    migration started
    [mongo file source] : start parsing MongoDB JSON records from file: mongodbspring.json
    Migration success for source mongodbspring. read=3,written=3,failed=0
    Migration is successful for all the sources.
    migration completed.
    Records provided by source=3, Records written to sink=3, Records failed=0,Records skipped=0.
    Elapsed time: 0min 0sec 393ms
    Migration completed.

検証

移行を確認するには、Oracle NoSQL Database Cloud Serviceコンソールにログインし、ソース・データでsampleMongoDBImp表が作成されていることを確認します。コンソールにアクセスする手順は、インフラストラクチャ・コンソールからのサービスのアクセスの記事を参照してください。

DynamoDB JSONファイルからOracle NoSQL Database Cloud Serviceへの移行

この例では、Oracle NoSQL Database Migratorを使用してDynamoDB JSONファイルをNoSQL Database Cloud Serviceにコピーする方法を示します。

ユースケース

複数のオプションを評価した後、組織はDynamoDBデータベースを介してOracle NoSQL Database Cloud Serviceを最終決定します。組織は、表およびデータをDynamoDBからOracle NoSQL Database Cloud Serviceに移行しようとしています。

詳細については、「DynamoDB表からOracle NoSQL表へのマッピング」を参照してください。

ソース構成テンプレートでパスを指定することで、DynamoDBがエクスポートしたJSONデータを含むファイルまたはディレクトリをファイル・システムから移行できます。

DynamoDB形式のJSONファイルの例を次に示します。

{"Item":{"Id":{"N":"101"},"Phones":{"L":[{"L":[{"S":"555-222"},{"S":"123-567"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"570004"},"Street":{"S":"21 main"},"DoorNum":{"N":"201"},"City":{"S":"London"}}},"FirstName":{"S":"Fred"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"Smith"},"FavColors":{"SS":["Red","Green"]},"Age":{"N":"22"},"ttl": {"N": "1734616800"}}}
{"Item":{"Id":{"N":"102"},"Phones":{"L":[{"L":[{"S":"222-222"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"560014"},"Street":{"S":"32 main"},"DoorNum":{"N":"1024"},"City":{"S":"Wales"}}},"FirstName":{"S":"John"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"White"},"FavColors":{"SS":["Blue"]},"Age":{"N":"48"},"ttl": {"N": "1734616800"}}}

DynamoDB表をAWS S3ストレージにエクスポートするには、「Amazon S3へのDynamoDB表データのエクスポート」に記載された方法に従います。

このデモでは、DynamoDB JSONファイルをOracle NoSQL Database Cloud Serviceに移行する方法について学習します。この例では、手動で作成した構成ファイルを使用します。

前提条件

プロシージャ

DynamoDB JSONデータをOracle NoSQL Databaseに移行するには:

  1. 識別されたソースおよびシンクの詳細を含む構成ファイル(JSON形式)を準備します。詳細は、ソース構成テンプレートおよびシンク構成テンプレートに関する項を参照してください。

    ノート: DynamoDBでエクスポートされたJSON表アイテムにTTL属性が含まれている場合、オプションでTTL値をインポートするには、ソース構成テンプレートのttlAttributeName構成パラメータで属性を指定し、シンク構成テンプレートでincludeTTL構成パラメータをtrueに設定します。詳細は、「表の行のTTLメタデータの移行」を参照してください。

    ここでは、defaultSchema構成パラメータをtrueに設定します。したがって、NoSQL Database Migratorはシンクにデフォルト・スキーマを作成します。DDBPartitionKeyおよび対応するNoSQL列タイプを指定する必要があります。それ以外の場合は、エラーが表示されます。

    DynamoDBでエクスポートされたJSONソースのデフォルト・スキーマの詳細は、Oracle NoSQL Data Migratorのワークフローのソースとシンクの識別に関するトピックを参照してください。

        {
         "source" : {
          "type" : "file",
          "format" : "dynamodb_json",
          "ttlAttributeName" : "ttl",
          "dataPath" : "complete/path/to/the/DynamoDB/Formatted/JSON/file"
         },
         "sink" : {
          "type" : "nosqldb_cloud",
          "endpoint" : "us-sanjose-1",
          "table" : "sampledynDBImp",
          "compartment" : "ocid
    1.compartment.oc1..aaaaaaaa......smq",
          "includeTTL" : true,
          "schemaInfo" : {
           "readUnits" : 10,
           "writeUnits" : 10,
           "storageSize" : 1,
           "schemaPath" : "complete/path/to/the/DDl/file"
          },
          "credentials" : "/home/<username>/.oci/config",
          "credentialsProfile" : "DEFAULT",
          "writeUnitsPercent" : 90,
          "overwrite" : true,
          "requestTimeoutMs" : 5000
         },
         "abortOnError" : true,
         "migratorVersion" : "1.8.0"
        }

    この例では、次のデフォルト・スキーマが使用されています。

    CREATE TABLE IF NOT EXISTS sampledynDBImp (Id INTEGER, document JSON, PRIMARY KEY(SHARD(Id)))
  2. コマンド・プロンプトを開き、NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  3. 個別の構成ファイルを渡して、runMigratorコマンドを実行します。--configまたは -cオプションを使用します。

    ./runMigrator --config <complete/path/to/the/JSON/config/file>
  4. ユーティリティは、次のサンプルに示すようにデータ移行を続行します。

    [INFO] creating source from given configuration:
    [INFO] source creation completed
    [INFO] creating sink from given configuration:
    [INFO] sink creation completed
    [INFO] creating migrator pipeline
    [INFO] [cloud sink] : start loading DDLs
    [INFO] [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS sampledynDBImp (Id INTEGER, document JSON, PRIMARY KEY(SHARD(Id)))
    [INFO] [cloud sink] : completed loading DDLs
    [INFO] migration started
    [INFO] Start writing data to OnDB Sink
    [INFO] executing for source:DynamoSample
    [INFO] [DDB file source] : start parsing JSON records from file: DynamoSample.json.gz
    [INFO] Writing data to OnDB Sink completed.
    [INFO] migration completed.
    Records provided by source=2, Records written to sink=2, Records failed=0,Records skipped=0.
    Elapsed time: 0min 0sec 45ms
    Migration completed.

検証

移行を検証するには、Oracle NoSQL Database Cloud Serviceコンソールにログインし、ソース・データでsampledynDBImp表が作成されていることを確認します。

  1. 識別されたソースおよびシンクの詳細を含む構成ファイル(JSON形式)を準備します。詳細は、ソース構成テンプレートおよびシンク構成テンプレートに関する項を参照してください。

    ノート: DynamoDBでエクスポートされたJSON表アイテムにTTL属性が含まれている場合、オプションでTTL値をインポートするには、ソース構成テンプレートのttlAttributeName構成パラメータで属性を指定し、シンク構成テンプレートでincludeTTL構成パラメータをtrueに設定します。

    ここでは、defaultSchema構成パラメータをfalseに設定します。したがって、シンク表のDDL文を含むファイルをschemaPathパラメータで指定します。詳細は、「DynamoDB型からOracle NoSQL型へのマッピング」を参照してください。

    この例では、次のユーザー定義スキーマが使用されています。

    CREATE TABLE IF NOT EXISTS sampledynDBImp (Id INTEGER, document JSON, PRIMARY KEY(SHARD(Id)))

    NoSQL Database Migratorは、スキーマ・ファイルを使用して、移行の一部としてシンクに表を作成します。主キー・データが指定されているかぎり、入力JSONレコードが挿入されます。それ以外の場合は、エラーが表示されます。

    ノート:

    • NoSQL Databaseでサポートされていないデータ型がDynamo DB表にある場合、移行は失敗します。

    • 入力データに(主キー以外の)特定の列の値が含まれていない場合は、列のデフォルト値が使用されます。デフォルト値は、表の作成時に列定義の一部にする必要があります。たとえば、id INTEGER not null default 0です。列にデフォルト定義がない場合、列に値が指定されていないとSQL NULLが挿入されます。

    • DynamoDB表をJSONドキュメントとしてモデリングする場合は、主キー以外のデータがJSON列に集計されるように、AggregateFields変換を使用してください。詳細は、aggregateFieldsを参照してください。

        Generated configuration is
        {
         "source" : {
          "type" : "file",
          "format" : "dynamodb_json",
          "ttlAttributeName" : "ttl",
          "dataPath" : "complete/path/to/the/DynamoDB/Formatted/JSON/file"
         },
         "sink" : {
          "type" : "nosqldb_cloud",
          "endpoint" : "us-sanjose-1",
          "table" : "sampledynDBImp",
          "compartment" : "ocid
    1.compartment.oc1..aaaaaaaa......smq",
          "includeTTL" : true,
          "schemaInfo" : {
           "readUnits" : 10,
           "writeUnits" : 10,
           "storageSize" : 1,
           "schemaPath" : "complete/path/to/the/DDl/file"
          },
          "credentials" : "/home/<username>/.oci/config",
          "credentialsProfile" : "DEFAULT",
          "writeUnitsPercent" : 90,
          "overwrite" : true,
          "requestTimeoutMs" : 5000
         },
         "abortOnError" : true,
         "migratorVersion" : "1.8.0"
        }
  2. コマンド・プロンプトを開き、NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  3. 個別の構成ファイルを渡して、runMigratorコマンドを実行します。--configまたは -cオプションを使用します。

    ./runMigrator --config <complete/path/to/the/JSON/config/file>
  4. ユーティリティは、次のサンプルに示すようにデータ移行を続行します。

    [INFO] creating source from given configuration:
    [INFO] source creation completed
    [INFO] creating sink from given configuration:
    [INFO] sink creation completed
    [INFO] creating migrator pipeline
    [INFO] [cloud sink] : start loading DDLs
    [INFO] [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS sampledynDBImp (Id INTEGER, document JSON, PRIMARY KEY(SHARD(Id)))
    [INFO] [cloud sink] : completed loading DDLs
    [INFO] migration started
    [INFO] Start writing data to OnDB Sink
    [INFO] executing for source:DynamoSample
    [INFO] [DDB file source] : start parsing JSON records from file: DynamoSample.json.gz
    [INFO] Writing data to OnDB Sink completed.
    [INFO] migration completed.
    Records provided by source=2, Records written to sink=2, Records failed=0,Records skipped=0.
    Elapsed time: 0min 0sec 45ms
    Migration completed.

検証

移行を検証するには、Oracle NoSQL Database Cloud Serviceコンソールにログインし、ソース・データでsampledynDBImp表が作成されていることを確認します。

AWS S3のDynamoDB JSONファイルからOracle NoSQL Database Cloud Serviceへの移行

この例では、Oracle NoSQL Database Migratorを使用して、AWS S3ストアに格納されているDynamoDB JSONファイルをOracle NoSQL Database Cloud Service (NDCS)にコピーする方法を示します。

ユースケース:

複数のオプションを評価した後、組織はDynamoDBデータベースを介してOracle NoSQL Database Cloud Serviceを最終決定します。組織は、表およびデータをDynamoDBからOracle NoSQL Database Cloud Serviceに移行しようとしています。

詳細は、「DynamoDB表からOracle NoSQL表へのマッピング」を参照してください。

ソース構成テンプレートでパスを指定することで、DynamoDBエクスポートされたJSONデータを含むファイルをAWS S3ストレージから移行できます。

DynamoDB形式のJSONファイルの例を次に示します。

{"Item":{"Id":{"N":"101"},"Phones":{"L":[{"L":[{"S":"555-222"},{"S":"123-567"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"570004"},"Street":{"S":"21 main"},"DoorNum":{"N":"201"},"City":{"S":"London"}}},"FirstName":{"S":"Fred"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"Smith"},"FavColors":{"SS":["Red","Green"]},"Age":{"N":"22"}}}
{"Item":{"Id":{"N":"102"},"Phones":{"L":[{"L":[{"S":"222-222"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"560014"},"Street":{"S":"32 main"},"DoorNum":{"N":"1024"},"City":{"S":"Wales"}}},"FirstName":{"S":"John"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"White"},"FavColors":{"SS":["Blue"]},"Age":{"N":"48"}}}

DynamoDB表をAWS S3ストレージにエクスポートするには、「Amazon S3へのDynamoDB表データのエクスポート」に記載された方法に従います。

例:

このデモでは、AWS S3ソースのDynamoDB JSONファイルをNDCSに移行する方法について学習します。この例では、手動で作成した構成ファイルを使用します。

前提条件

プロシージャ

DynamoDB JSONデータをOracle NoSQL Database Cloud Serviceに移行するには、次のいずれかのオプションを使用します。

  1. 識別されたソースおよびシンクの詳細を含む構成ファイル(JSON形式)を準備します。詳細は、ソース構成テンプレートおよびシンク構成テンプレートに関する項を参照してください。

    ノート: AWS S3のDynamoDB JSONファイルのアイテムにTTL属性が含まれている場合、オプションでTTL値をインポートするには、ソース構成テンプレートのttlAttributeName構成パラメータで属性を指定し、シンク構成テンプレートでincludeTTL構成パラメータをtrueに設定します。詳細は、「表の行のTTLメタデータの移行」を参照してください。

    defaultSchemaTRUEに設定し、Migratorユーティリティがシンクにデフォルトのスキーマを作成します。DDBPartitionKeyおよび対応するNoSQL列タイプを指定する必要があります。そうでない場合、エラーがスローされます。

        {
         "source" : {
           "type" : "aws_s3",
           "format" : "dynamodb_json",
           "s3URL" : "<https://<bucket-name>.<s3_endpoint>/export_path>",
           "credentials" : "</path/to/aws/credentials/file>",
           "credentialsProfile" : <"profile name in aws credentials file">
         },
         "sink" : {
           "type" : "nosqldb_cloud",
           "endpoint" : "<region_name>",
           "table" : "<table_name>",
           "compartment" : "<compartment_name>",
           "schemaInfo" : {
              "defaultSchema" : true,
              "readUnits" : 100,
              "writeUnits" : 60,
              "DDBPartitionKey" : "<PrimaryKey:Datatype>",
              "storageSize" : 1
           },
           "credentials" : "<complete/path/to/the/oci/config/file>",
           "credentialsProfile" : "DEFAULT",
           "writeUnitsPercent" : 90,
           "requestTimeoutMs" : 5000
         },
         "abortOnError" : true,
         "migratorVersion" : "1.8.0"
        }

    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 = 構成内のシンクの'table'に指定された値

    DDBPartitionKey_name = 構成内のパーティション・キーに指定された値

    DDBPartitionKey_type = 構成内のパーティション・キーのデータ型に指定された値

    DDBSortKey_name = 構成のソート・キーに指定された値(ある場合)

    DDBSortKey_type = 構成内のソート・キーのデータ型に指定された値(ある場合)

    DOCUMENT = NoSQL JSON列に集計されたDynamo DB表アイテムのパーティションおよびソート・キーを除くすべての属性

  2. コマンド・プロンプトを開き、NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  3. 構成ファイルを渡して、runMigratorコマンドを実行します。--configまたは -cオプションを使用します。

    [~/nosqlMigrator]$./runMigrator
    
    --config <complete/path/to/the/JSON/config/file>
  4. 次に示すように、ユーティリティはデータの移行に進みます。

    Records provided by source=7..,
    Records written to sink=7,
    Records failed=0,
    Records skipped=0.
    Elapsed time: 0 min 2sec 50ms
    Migration completed.

検証

Oracle NoSQL Database Cloud Serviceコンソールにログインし、ソース・データで新規表が作成されていることを確認します。

  1. 識別されたソースおよびシンクの詳細を含む構成ファイル(JSON形式)を準備します。詳細は、ソース構成テンプレートおよびシンク構成テンプレートに関する項を参照してください。

    ノート: AWS S3のDynamoDB JSONファイルのアイテムにTTL属性が含まれている場合、オプションでTTL値をインポートするには、ソース構成テンプレートのttlAttributeName構成パラメータで属性を指定し、シンク構成テンプレートでincludeTTL構成パラメータをtrueに設定します。詳細は、「表の行のTTLメタデータの移行」を参照してください。

    シンク構成テンプレートでユーザー定義スキーマ・ファイルを指定するには、defaultSchemaをFALSEに設定し、DDL文を含むファイルとしてschemaPathを指定します。詳細は、DynamoDB型からOracle NoSQL型へのマッピングを参照してください。

    ノート: Dynamo DB表にNoNoSQLでサポートされていないデータ型がある場合、移行は失敗します。

    サンプル・スキーマ・ファイルを次に示します。

    CREATE TABLE IF NOT EXISTS sampledynDBImp (AccountId INTEGER,document JSON,
    PRIMARY KEY(SHARD(AccountId)));

    スキーマ・ファイルは、移行の一部としてシンクに表を作成するために使用されます。主キー・データが指定されているかぎり、入力JSONレコードが挿入され、それ以外の場合はエラーがスローされます。

    ノート:

    • 入力データに(主キー以外の)特定の列の値が含まれていない場合は、列のデフォルト値が使用されます。デフォルト値は、表の作成時に列定義の一部である必要があります。たとえば、id INTEGER not null default 0です。列にデフォルト定義がない場合、列に値が指定されていないと、SQL NULLが挿入されます。
    • DynamoDB表をJSONドキュメントとしてモデリングする場合は、主キー以外のデータがJSON列に集計されるように、AggregateFields変換を使用してください。詳細は、aggregateFieldsを参照してください。
        {
         "source" : {
           "type" : "aws_s3",
           "format" : "dynamodb_json",
           "s3URL" : "<https://<bucket-name>.<s3_endpoint>/export_path>",
           "credentials" : "</path/to/aws/credentials/file>",
           "credentialsProfile" : <"profile name in aws credentials file">
         },
         "sink" : {
           "type" : "nosqldb_cloud",
           "endpoint" : "<region_name>",
           "table" : "<table_name>",
           "compartment" : "<compartment_name>",
           "schemaInfo" : {
              "defaultSchema" : false,
              "readUnits" : 100,
              "writeUnits" : 60,
              "schemaPath" : "<full path of the schema file with the DDL statement>",
              "storageSize" : 1
           },
           "credentials" : "<complete/path/to/the/oci/config/file>",
           "credentialsProfile" : "DEFAULT",
           "writeUnitsPercent" : 90,
           "requestTimeoutMs" : 5000
         },
          "transforms": {
            "aggregateFields" : {
              "fieldName" : "document",
              "skipFields" : ["AccountId"]
            }
          },
         "abortOnError" : true,
         "migratorVersion" : "1.8.0"
        }
  2. コマンド・プロンプトを開き、NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  3. 構成ファイルを渡して、runMigratorコマンドを実行します。--configまたは -cオプションを使用します。

    [~/nosqlMigrator]$./runMigrator
    
    --config <complete/path/to/the/JSON/config/file>
  4. 次に示すように、ユーティリティはデータの移行に進みます。

    Records provided by source=7..,
    Records written to sink=7,
    Records failed=0,
    Records skipped=0.
    Elapsed time: 0 min 2sec 50ms
    Migration completed.

検証

Oracle NoSQL Database Cloud Serviceコンソールにログインし、ソース・データで新規表が作成されていることを確認します。

Oracle NoSQL Database Cloud Serviceリージョン間の移行

この例では、リージョン間移行を実行するためのOracle NoSQL Database Migratorの使用方法を示します。

ユース・ケース

組織は、Oracle NoSQL Database Cloud Serviceを使用してデータを格納および管理します。新しいリージョンを本番環境で起動する前に、テスト目的で既存のリージョンから新しいリージョンにデータをレプリケートすることを決定します。

このユース・ケースでは、NoSQL Database Migratorを使用して、アッシュバーン・リージョンのuser_data表からフェニックス・リージョンにデータをコピーする方法を学習します。

runMigratorユーティリティは、事前作成済の構成ファイルを渡して実行します。構成ファイルをランタイム・パラメータとして指定しない場合、runMigratorユーティリティにより、対話型プロシージャを介して構成を生成するよう求められます。

前提条件

この例では、リージョンは異なるテナンシの下にあります。DEFAULTプロファイルにはアッシュバーン・リージョンのOCI資格証明が含まれ、DEFAULT2にはフェニックス・リージョンのOCI資格証明が含まれます。

マイグレータ構成ファイルのendpointパラメータ(ソース構成テンプレートとシンク構成テンプレートの両方)では、サービス・エンドポイントURLまたはリージョンのリージョンIDを指定できます。Oracle NoSQL Database Cloud Serviceでサポートされるデータ・リージョンとそのサービス・エンドポイントURLのリストについては、Oracle NoSQL Database Cloud Serviceドキュメントのデータ・リージョンおよび関連するサービスのURLに関する項を参照してください。

[DEFAULT]
user=ocid1.user.oc1....
fingerprint=fd:96:....
tenancy=ocid1.tenancy.oc1....
region=us-ashburn-1
key_file=</fully/qualified/path/to/the/private/key/>
pass_phrase=abcd


[DEFAULT2]
user=ocid1.user.oc1....
fingerprint=1b:68:....
tenancy=ocid1.tenancy.oc1....
region=us-phoenix-1
key_file=</fully/qualified/path/to/the/private/key/>
pass_phrase=23456

プロシージャ

user_data表をアッシュバーン・リージョンからフェニックス・リージョンに移行するには、次を実行します:

  1. 識別されたソースおよびシンクの詳細を含む構成ファイル(JSON形式)を準備します。ソース構成テンプレートおよびシンク構成テンプレートを参照してください。

    {
      "source" : {
        "type" : "nosqldb_cloud",
        "endpoint" : "us-ashburn-1",
        "table" : "user_data",
        "compartment" : "ocid1.compartment.oc1..aaaaaaaahcrgrgptoaq4cgpoymd32ti2ql4sdpu5puroausdf4og55z4tnya",
        "credentials" : "/home/<user>/.oci/config",
        "credentialsProfile" : "DEFAULT",
        "readUnitsPercent" : 100,
        "includeTTL" : false,
        "requestTimeoutMs" : 5000
      },
      "sink" : {
        "type" : "nosqldb_cloud",
        "endpoint" : "us-phoenix-1",
        "table" : "user_data",
        "compartment" : "ocid1.compartment.oc1..aaaaaaaaleiwplazhwmicoogv3tf4lum4m4nzbcv5wfjmoxuz3doreagvdma",
        "includeTTL" : false,
        "schemaInfo" : {
          "readUnits" : 100,
          "writeUnits" : 60,
          "storageSize" : 1,
          "useSourceSchema" : true
        },
        "credentials" : "/home/<user>/.oci/config",
        "credentialsProfile" : "DEFAULT2",
        "writeUnitsPercent" : 90,
        "overwrite" : true,
        "requestTimeoutMs" : 5000
      },
      "abortOnError" : true,
      "migratorVersion" : "1.8.0"
    }
  2. マシンで、NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。runMigratorコマンドには、コマンドライン・インタフェースからアクセスできます。

  3. –configまたは-cオプションを使用して構成ファイルを渡し、runMigratorコマンドを実行します。

    [~/nosql-migrator]$./runMigrator --config <complete/path/to/the/config/file>
  4. 次に示すように、ユーティリティーはデータの移行に進みます。user_data表は、シンク構成テンプレートでuseSourceSchemaパラメータをtrueとして構成した場合と同じスキーマでシンクに作成されます。

    creating source from given configuration:
    source creation completed
    creating sink from given configuration:
    sink creation completed
    creating migrator pipeline
    migration started
    [cloud sink] : start loading DDLs
    [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS user_data (id INTEGER, firstName STRING, lastName STRING, otherNames ARRAY(RECORD(first STRING, last STRING)), age INTEGER, income INTEGER, address JSON, connections ARRAY(INTEGER), email STRING, communityService STRING, PRIMARY KEY(SHARD(id))),limits: [100, 60, 1]
    [cloud sink] : completed loading DDLs
    [cloud sink] : start loading records
    migration completed.
    Records provided by source=5, Records written to sink=5, Records failed=0, Records skipped=0.
    Elapsed time: 0min 5sec 603ms
    Migration completed.

    ノート:

    • ソース表と同じスキーマを持つシンクに表がすでに存在する場合、構成テンプレートで上書きパラメータをtrueとして指定したのと同じ主キーの行が上書きされます。

    • ソース表とは異なるスキーマを持つ表がシンクにすでに存在する場合、移行は失敗します。

VALIDATION

移行を検証するには、フェニックス・リージョンでOracle NoSQL Database Cloud Serviceコンソールにログインします。「アッシュバーン」リージョンのuser_data表のソース・データが、このリージョンのuser_data表にコピーされていることを確認します。コンソールにアクセスする手順は、インフラストラクチャ・コンソールからのサービスのアクセスの記事を参照してください。

Oracle NoSQL Database Cloud ServiceからOCI Object Storageへの移行

この例では、クラウド・シェルからのOracle NoSQL Database Migratorの使用方法を示します。

ユース・ケース

スタートアップ・ベンチャーは、Oracle NoSQL Database Cloud Serviceをデータ・ストレージ・ソリューションとして使用することを計画しています。同社は、Oracle NoSQL Database Migratorを使用して、Oracle NoSQL Database Cloud Serviceの表からOCI Object Storageにデータをコピーし、データの定期的なバックアップを行うことを希望しています。コスト効率に優れた手段として、すべてのOCIユーザーがアクセスできるクラウド・シェルからNoSQL Database Migratorユーティリティを実行したいと考えています。

このユースケースでは、NoSQL Database Migratorユーティリティをサブスクライブ済リージョンのクラウド・シェルにコピーし、データ移行を実行する方法を学習します。ソース・データをOracle NoSQL Database Cloud Service表からOCI Object StorageのJSONファイルに移行します。

runMigratorユーティリティは、事前作成済の構成ファイルを渡して実行します。構成ファイルをランタイム・パラメータとして指定しない場合、runMigratorユーティリティにより、対話型プロシージャを介して構成を生成するよう求められます。

前提条件

プロシージャ

Oracle NoSQL Database Cloud ServiceからOCI Object Storageに移行するには、「クラウド・シェル」ウィンドウから次の手順を実行します。

  1. Oracle NoSQL Database Cloud ServiceソースおよびOCI Object Storageシンクを使用して、Migrator構成ファイルmigrator-config.jsonを準備します。テンプレートについては、ソース構成テンプレートおよびシンク構成テンプレートを参照してください。ソースおよびシンク構成テンプレートで、useDelegationTokenパラメータをtrueに設定していることを確認します。

    このユース・ケースでは、次の構成テンプレートが使用されます。

    {
      "source" : {
        "type" : "nosqldb_cloud",
        "endpoint" : "us-ashburn-1",
        "table" : "NDCSupload",
        "compartment" : "ocid1.compartment.oc1..aaaaaaaahcrgrgptoaq4cgpoymd32ti2ql4sdpu5puroausdf4og55z4tnya",
        "useDelegationToken" : true,
        "readUnitsPercent" : 90,
        "includeTTL" : true,
        "requestTimeoutMs" : 5000
      },
      "sink" : {
        "type" : "object_storage_oci",
        "format" : "json",
        "endpoint" : "us-ashburn-1",
        "namespace" : "",
        "bucket" : "Migrate_oci",
        "prefix" : "Delegation",
        "chunkSize" : 32,
        "compression" : "",
        "useDelegationToken" : true
      },
      "abortOnError" : true,
      "migratorVersion" : "1.8.0"
    }
  2. クラウド・シェルから、NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  3. --configまたは-cオプションを使用して構成ファイルを渡し、runMigratorコマンドを実行します。

    [~/nosql-migrator]$./runMigrator --config <complete/path/to/the/config/file>
  4. NoSQL Database Migratorユーティリティはデータの移行を続行します。useDelegationTokenパラメータをtrueに設定したため、NoSQL Database Migratorユーティリティの実行中に、Cloud Shellは委任トークンを使用して自動的に認証します。NoSQL Database Migratorは、データをNDCSupload表からオブジェクト・ストレージ・バケットMigrate_ociのJSONファイルにコピーします。ログでデータ・バックアップが成功したかどうかを確認します。

    [INFO] creating source from given configuration:
    [INFO] source creation completed
    [INFO] creating sink from given configuration:
    [INFO] sink creation completed
    [INFO] creating migrator pipeline
    [INFO] migration started
    [INFO] [OCI OS sink] : writing table schema to Delegation/Schema/schema.ddl
    [INFO] [OCI OS sink] : start writing records with prefix Delegation
    [INFO] migration completed.
    Records provided by source=4,Records written to sink=4,Records failed=0.
    Elapsed time: 0min 0sec 486ms
    Migration completed.

    ノート:

    データがファイルにコピーされます: Migrate_oci/NDCSupload/Delegation/Data/000000.json

    シンク構成テンプレートのchunkSizeパラメータに応じて、ソース・データを同じディレクトリ内の複数のJSONファイルに分割できます。

    スキーマがファイルにコピーされます: Migrate_oci/NDCStable1/Delegation/Schema/schema.ddl

VALIDATION

データのバックアップを検証するには、Oracle NoSQL Database Cloud Serviceコンソールにログインします。メニューStorage > Object Storage & Archive Storage > Bucketsをナビゲートします。Migrate_ociバケットのNDCSupload/Delegationディレクトリからファイルにアクセスします。コンソールにアクセスする手順は、インフラストラクチャ・コンソールからのサービスのアクセスの記事を参照してください。

OKE認証を使用したOCI Object StorageからOracle NoSQL Database Cloud Serviceへの移行

この例では、Oracle NoSQL Database MigratorとOKEワークロード・アイデンティティ認証を使用して、OCI Object StorageのJSONファイルからOracle NoSQL Database Cloud Service表にデータをコピーする方法を示します。

ユース・ケース

開発者は、コンテナ化されたアプリケーションでNoSQL Database Migratorを使用して、OCI Object Storage (OCI OS)バケット内のJSONファイルからOracle NoSQL Database Cloud Service (NDCS)表にデータをリストアするオプションを検討しています。コンテナ化されたアプリケーションは、アプリケーションとそのすべての依存関係(ライブラリ、バイナリ、構成ファイルなど)をパッケージにバンドルする仮想化された環境です。これにより、アプリケーションは、基礎となるインフラストラクチャに関係なく、異なる環境間で一貫して実行できます。

あなたは、Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE)ポッド内でNoSQL Database Migratorを実行しようと考えています。OKEポッドからOCI OSおよびNDCSサービスに安全にアクセスするには、ワークロード・アイデンティティ認証(WIA)メソッドを使用します。

このデモンストレーションでは、NoSQL Database MigratorのDockerイメージを構築し、コンテナ・レジストリ内のリポジトリにイメージをコピーし、OKEクラスタを作成し、OKEクラスタ・ポッドにMigratorイメージをデプロイしてMigratorユーティリティを実行します。ここでは、コンテナ化されたアプリケーションとしてMigratorユーティリティを実行するために、手動で作成されたNoSQL Database Migrator構成ファイルを指定します。

前提条件

プロシージャ

OCI OSバケットのJSONファイルからNDCS表に移行するには、「クラウド・シェル」ウィンドウから次の手順を実行します。

  1. OCI OSソースおよびNDCSシンクを使用して、Migrator構成ファイルmigrator-config.jsonを準備します。テンプレートについては、ソース構成テンプレートおよびシンク構成テンプレートを参照してください。

    OKE WIAを使用してOCI OSバケットおよびNDCSにアクセスするには、ソース構成テンプレートとシンク構成テンプレートの両方でuseOKEWorkloadIdentityパラメータをtrueに設定します。ここでは、OCI OSバケット内のスキーマDDLファイルのソース・スキーマを使用します。したがって、シンク構成テンプレートでuseSourceSchemaパラメータをtrueに設定します。

    ノート: OKE WIAの使用中に、Migrator構成ファイルを対話形式で生成することはできません。ソースおよびシンク構成テンプレートを参照して、構成ファイルを手動で準備する必要があります。

        {
          "source" : {
            "type" : "object_storage_oci",
            "format" : "json",
            "endpoint" : "us-ashburn-1",
            "namespace" : "",
            "bucket" : "Migrate_oci",
            "prefix" : "userSession",
            "useOKEWorkloadIdentity" : true
          },
          "sink" : {
            "type" : "nosqldb_cloud",
            "endpoint" : "us-ashburn-1",
            "table" : "users",
            "compartment" : "Training-NoSQL",
            "includeTTL" : true,
            "schemaInfo" : {
              "readUnits" : 100,
              "writeUnits" : 60,
              "storageSize" : 1,
              "useSourceSchema" : true
            },
            "useOKEWorkloadIdentity" : true,
            "writeUnitsPercent" : 90,
            "overwrite" : true,
            "requestTimeoutMs" : 5000
          },
          "abortOnError" : true,
          "migratorVersion" : "1.8.0"
        }
  2. Kubernetesポッドの実行時にmigrator-config.json構成入力ファイルをMigratorコンテナに渡す構成マップ・リソース(configmap)を作成します。configmapは、コンテナのファイル・システムにMigrator構成ファイルをマウント・ボリュームとしてマウントします。

    #Command:
    kubectl create configmap oci-migrator-config --from-file=<Migrator configuration file> -n <namespace-name>
    #Example:
    kubectl create configmap oci-migrator-config --from-file=migrator-config.json -n migrator
    #Output:
    configmap/oci-migrator-config created
  3. コンテナ・レジストリからKubernetesポッドにMigrator Dockerイメージをプルするときに使用するOCI資格証明を含むDockerレジストリ・シークレットを作成します。

    #Command:
    kubectl create secret docker-registry ocirsecret --docker-server=<region-key>.ocir.io --docker-username='tenancy-namespace/username' --docker-password='auth token' --docker-email='<user Email>' -n <namespace-name>
    #Example:
    kubectl create secret docker-registry ocirsecret --docker-server=iad.ocir.io --docker-username='idhx..xxwjzj/rx..xxxxh@oracle.com' --docker-password='<Auth token>' --docker-email='rx..xxxxh@oracle.com' -n migrator
    #Output:
    secret/ocirsecret created
  4. マイグレータDockerイメージの指定に使用するマニフェスト・ファイルを作成します。ネームスペース、Kubernetesサービス・アカウント名、Dockerイメージ名、Dockerレジストリ・シークレットおよびconfigmapの前のステップの値を指定してください。次のサンプルマニフェストファイルを参照できます。

    #migrator-deployment.yaml
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nosql-migrator
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nosql-migrator
      template:
        metadata:
          labels:
            app: nosql-migrator
        spec:
          serviceAccountName: migratorsa
          automountServiceAccountToken: true
          containers:
    
            - name: nosqlmigrator
              image: iad.ocir.io/idhx..xxwjzj/okemigrator:1.0
              imagePullPolicy: Always
              args: ["--config", "/config/migrator-config.json", "--log-level", "DEBUG"]
              volumeMounts:
    
                - name: config-volume
                  mountPath: /config  # Mount the file here
          imagePullSecrets:
    
            - name: ocirsecret
          volumes:
    
            - name: config-volume
              configMap:
                name: oci-migrator-config
  5. 次のコマンドを使用して、Migrator DockerイメージをKubernetesポッドにデプロイします。OKEは、KubernetesクラスタのいずれかのノードのコンテナでMigratorユーティリティを実行します。

    #Command:
    kubectl create -f <manifest file> -n <namespace-name>
    #Example:
    kubectl create -f migrator-deployment.yaml -n migrator
    #Output:
    deployment.apps/nosql-migrator created
  6. 次のコマンドを使用して、ログを確認できます。

    1. Migratorユーティリティが実行されているポッドの名前をフェッチします。

      #Command:
      kubectl get pods -n <namespace-name>
      #Example:
      kubectl get pods -n migrator
      #Output:
      NAME                            READY   STATUS    RESTARTS   AGE
      nosql-migrator-ccdbf549-6sjjg   1/1     Running   0          56s
    2. ポッドの名前を使用して、マイグレータ・ログをフェッチします。

      #Command:
      kubectl logs -f <kubernetes cluster pod name> -n <namespace-name>
      #Example:
      kubectl logs -f nosql-migrator-ccdbf549-6sjjg -n migrator
      #Output:
      SLF4J(I): Connected with provider of type [org.apache.logging.slf4j.SLF4JServiceProvider]
      [INFO] Configuration for migration:
      {
        "source" : {
          "type" : "object_storage_oci",
          "format" : "json",
          "endpoint" : "us-ashburn-1",
          "namespace" : "idhkv1iewjzj",
          "bucket" : "Migrate_oci",
          "prefix" : "userSession",
          "useOKEWorkloadIdentity" : true
        },
        "sink" : {
          "type" : "nosqldb_cloud",
          "endpoint" : "us-ashburn-1",
          "table" : "users",
          "compartment" : "Training-NoSQL",
          "includeTTL" : true,
          "schemaInfo" : {
            "readUnits" : 100,
            "writeUnits" : 60,
            "storageSize" : 1,
            "useSourceSchema" : true
          },
          "useOKEWorkloadIdentity" : true,
          "writeUnitsPercent" : 90,
          "overwrite" : true,
          "requestTimeoutMs" : 5000
        },
        "abortOnError" : true,
        "migratorVersion" : "1.8.0"
      }
      [INFO] creating source from given configuration:
      [INFO] source creation completed
      [INFO] creating sink from given configuration:
      [INFO] sink creation completed
      [INFO] creating migrator pipeline
      [INFO] migration started
      [INFO] [cloud sink] : start loading DDLs
      [INFO] [cloud sink] : completed loading DDLs
      [INFO] [cloud sink] : start loading records
      [INFO] [OCI OS source] : start parsing JSON records from object: users/userSession/Data/users_1_5_0.json
      [INFO] [OCI OS source] : start parsing JSON records from object: users/userSession/Data/users_6_10_0.json
      [INFO] migration completed.
      Records provided by source=5, Records written to sink=5, Records failed=0, Records skipped=0.
      Elapsed time: 0min 1sec 15ms
      Migration completed.

    ノート:

    データ移行は、次のように繰り返し実行できます。

    1. 次のコマンドを使用して、nosql-migratorコンテナを削除します。

      #Command:
      
      kubectl delete -f <manifest file> -n <namespace-name>
      #Example:
      
      kubectl delete -f migrator-deployment.yaml -n migrator
      #Output:
      
      deployment.apps "nosql-migrator" deleted
    2. migrator-config.json構成入力ファイルを更新します。

    3. ステップ2のコマンドを使用して、configmapを削除して再作成します。

      Dockerレジストリ・シークレットを作成し、再度マニフェスト・ファイルを作成する必要はありません。

    4. マニフェスト・ファイル(ステップ5)を使用して、Migrator DockerイメージをKubernetesポッドにデプロイします。

検証

データのリストアを確認するには、Oracle NoSQL Database Cloud Serviceコンソールにログインします。ナビゲーション・バーから、「データベース」→「NoSQLデータベース」に移動します。ドロップダウンからコンパートメントを選択して、users表を表示します。コンソールにアクセスする手順は、インフラストラクチャ・コンソールからのサービスのアクセスを参照してください。

セッション・トークン認証を使用したOracle NoSQL DatabaseからOCIオブジェクト・ストレージへの移行

この例では、セッション・トークン認証でOracle NoSQL Database Migratorを使用して、Oracle NoSQL Database表からOCIオブジェクト・ストレージ・バケット内のJSONファイルにデータをコピーする方法を示します。

ユース・ケース

開発者は、Oracle NoSQL Database表のデータをOCI Object Storage (OCI OS)にバックアップするオプションを検討しています。セッション・トークン・ベース認証を使用します。

このデモンストレーションでは、OCIコマンドライン・インタフェース・コマンド(CLI)を使用してセッション・トークンを作成します。マイグレータ構成ファイルを手動で作成し、データ移行を実行します。

前提条件

ノート: OCI OSバケットにオブジェクトを書き込む権限があることを確認してください。ポリシーの設定の詳細は、オブジェクト・ストレージへの書込みを参照してください。

プロシージャ

Oracle NoSQL Database表からOCI OSバケット内のJSONファイルに移行するには:

  1. OCI OSバケット・シンクのOracle NoSQL DatabaseソースおよびJSONファイルを含む構成ファイル(JSON形式)を準備します。テンプレートについては、ソース構成テンプレートおよびシンク構成テンプレートを参照してください。

    セッション・トークン認証を使用してOCI OSバケットにアクセスするには、シンク構成テンプレートでuseSessionTokenパラメータをtrueに設定します。これに対応して、credentialsパラメータにconfigパスを指定し、credentialsProfileパラメータにプロファイル名を指定します。

    {
       "source" : {
         "type" : "nosqldb",
         "storeName" : "kvstore",
         "helperHosts" : ["<hostname>:<port>"],
         "table" : "users",
         "includeTTL" : true,
         "requestTimeoutMs" : 5000
       },
       "sink" : {
         "type" : "object_storage_oci",
         "format" : "json",
         "endpoint" : "us-ashburn-1",
         "namespace" : "idhkv1iewjzj",
         "bucket" : "Migrate_oci",
         "prefix" : "userSession",
         "chunkSize" : 32,
         "compression" : "",
         "useSessionToken" : true,
         "credentials" : "$/home/.oci/config",
         "credentialsProfile" : "SESSIONPROFILE"
       },
       "abortOnError" : true,
       "migratorVersion" : "1.8.0"
    }
  2. コマンド・プロンプトを開き、NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  3. 構成ファイル・オプションを渡してrunMigratorコマンドを実行します。構成ファイルを次のように渡すには、--configまたは -cオプションを使用します。

    ./runMigrator --config ./migrator-config.json
  4. Migratorユーティリティはデータ移行を続行します。出力サンプルを次に示します。

    useSessionTokenパラメータをtrueに設定すると、Migratorユーティリティはセッション・トークンを使用して自動的に認証します。Migratorユーティリティは、データをusers表からOCI OSバケット内のMigrate_ociという名前のJSONファイルにコピーします。ログでデータ・バックアップが成功したかどうかを確認します。

    [INFO] creating source from given configuration:
    [INFO] source creation completed
    [INFO] creating sink from given configuration:
    [INFO] sink creation completed
    [INFO] creating migrator pipeline
    [INFO] [OCI OS sink] : writing table schema to userSession/Schema/schema.ddl
    [INFO] migration started
    [INFO] Migration success for source users_6_10. read=2,written=2,failed=0
    
    [INFO] Migration success for source users_1_5. read=3,written=3,failed=0
    
    [INFO] Migration is successful for all the sources.
    [INFO] migration completed.
    Records provided by source=5, Records written to sink=5, Records failed=0,Records skipped=0.
    Elapsed time: 0min 0sec 982ms
    Migration completed.

    ノート:

    シンク構成テンプレートのchunkSizeパラメータに応じて、Migratorユーティリティはソース・データを同じディレクトリ内の複数のJSONファイルに分割します。この例では、Migratorユーティリティは、データをMigrate_oci/userSession/Dataディレクトリのusers_1_5_0.jsonおよびusers_6_10_0.jsonファイルにコピーします。

    ソース表スキーマは、Migrate_oci/userSession/Schemaディレクトリのschema.ddlファイルにコピーされます。

検証

データのバックアップを確認するには、Oracle NoSQL Database Cloud Serviceコンソールにログインします。メニュー Storage > Object Storage & Archive Storage > Bucketsをナビゲートします。Migrate_ociバケットのuserSessionディレクトリからファイルにアクセスします。コンソールにアクセスする手順は、インフラストラクチャ・コンソールからのサービスのアクセスを参照してください

CSVファイルからOracle NoSQL Database Cloud Serviceに移行します

この例は、Oracle NoSQL Database Migratorを使用してCSVファイルからOracle NoSQL Database Cloud Serviceにデータをコピーする方法を示します。

複数のオプションを評価した後、組織はOracle NoSQL Database Cloud ServiceをNoNoSQL Databaseプラットフォームとして最終決定します。ソース・コンテンツはCSVファイル形式であるため、これをOracle NoSQL Database Cloud Serviceに移行する方法を探しています。

この例では、course.CSVというCSVファイルからデータを移行する方法を学習します。このファイルには、大学が提供する様々なコースに関する情報が含まれています。構成ファイルは、runMigratorユーティリティから対話形式で生成します。

識別されたソースおよびシンクの詳細を含む構成ファイルを準備することもできます。Oracle NoSQL Database Migratorリファレンスを参照してください。

前提条件

プロシージャ

course.csvファイルからOracle NoSQL Database Cloud Serviceにデータを移行するには、次のステップを実行します。

  1. コマンド・プロンプトを開き、Oracle NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。

  2. Oracle NoSQL Database Migratorを使用して構成ファイルを生成するには、ランタイム・パラメータを指定せずにrunMigratorコマンドを実行します。

    [~/nosql-migrator-1.8.0]$./runMigrator
  3. ランタイム・パラメータとして構成ファイルを指定しなかったため、構成を今すぐ生成するかどうかを尋ねるプロンプトが表示されます。「y」と入力します。

    構成ファイルの場所を選択することも、[Enter]キーを押してデフォルトの場所を保持することもできます。

    Configuration file is not provided. Do you want to generate
    configuration? (y/n) [n]: y
    Generating a configuration file interactively.
    
    Enter a location for your config [./migrator-config.json]:
    ./migrator-config.json already exist. Do you want to overwrite?(y/n) [n]: y
  4. ユーティリティのプロンプトに基づいて、ソース構成のオプションを選択します。

    Select the source:
    1) nosqldb
    
    2) nosqldb_cloud
    
    3) file
    
    4) object_storage_oci
    
    5) aws_s3
    
    #? 3
    
    Configuration for source type=file
    Select the source file format:
    1) json
    
    2) mongodb_json
    
    3) dynamodb_json
    
    4) csv
    
    #? 4
  5. ソースCSVファイルへのパスを指定します。さらに、ユーティリティからのプロンプトに基づいて、列名の順序変更、エンコーディング方法の選択、ターゲット表からの末尾のスペースの切捨てを選択できます。

    Enter path to a file or directory containing csv data: [~/nosql-migrator]/course.csv
    Does the CSV file contain a headerLine? (y/n) [n]: n
    Do you want to reorder the column names of NoSQL table with respect to
    CSV file columns? (y/n) [n]: n
    Provide the CSV file encoding. The supported encodings are:
    UTF-8,UTF-16,US-ASCII,ISO-8859-1. [UTF-8]:
    
    Do you want to trim the tailing spaces? (y/n) [n]: n
  6. ユーティリティーのプロンプトに基づいて、シンク構成に nosqldb_cloudオプションを選択します。

    Select the sink:
    1) nosqldb
    
    2) nosqldb_cloud
    
    #? 2
  7. テナンシのエンド・ポイントURLまたはリージョンIDを指定し、Oracle NoSQL Database Cloud ServiceにアクセスするためのMigratorユーティリティの認証タイプを選択します。

    Configuration for sink type=nosqldb_cloud
    Enter endpoint URL or region ID of the Oracle NoSQL Database Cloud: us-ashburn-1
    Select the authentication type:
    1) credentials_file
    
    2) instance_principal
    
    3) delegation_token
    
    4) session_token
    
    5) oke_workload_identity
    
    #? 1
  8. ユーティリティからのプロンプトに基づいて、認証に使用する資格証明ファイルの名前、資格証明プロファイル、コンパートメントID、およびシンクでデータをコピーする表の名前を指定します。

    Enter path to the file containing OCI credentials [/home/<user>/.oci/config]:
    Enter the profile name in OCI credentials file [DEFAULT]:
    Enter the compartment name or id of the table []: ua_nosql
    Enter table name: course
  9. 選択を入力してTTL値を設定します。デフォルト値はnです。

    Include TTL data? If you select 'yes' TTL value provided by the
    source will be set on imported rows. (y/n) [n]: y
    Would you like to provide TTL reference time?(y/n) [n]: n
  10. ユーティリティからのプロンプトに基づいて、Oracle NoSQL Database Migratorツールを使用してターゲット表を作成する必要があるかどうかを指定します。表がすでに作成されている場合は、nを指定することをお薦めします。表が作成されない場合、ユーティリティは、ターゲット表のスキーマに対するDDLコマンドを含むファイルのパスをリクエストします。

    Would you like to create table as part of migration process?
    Use this option if you want to create table through the migration tool.
    If you select yes, you will be asked to provide a file that contains
    table DDL or to use schema provided by the source or default schema.
    (y/n) [n]: y
    Enter path to a file containing table DDL: [~/nosql-migrator]/mytable_schema.ddl
  11. シンクテーブルのスループット値とストレージ割り当てを入力します。

    Would you like to use on demand read and write units? (y/n) [n]: n
    Enter read throughput in KB of new table: 100
    Enter write throughput in KB of new table: 60
    Enter storage size in GB of new table: 1
    Enter percentage of table write units to be used for migration operation.
    (1-100) [90]: 90
  12. テーブルがすでにシンクで使用可能である場合に、レコードを上書きするかどうかを決定する選択肢を入力します。ソース・データに変換を追加することもできます。

    would you like to overwrite records which are already present?
    If you select 'no' records with same primary key will be skipped [y/n] [y]: y
    Enter store operation timeout in milliseconds. [5000]:
    Would you like to add transformations to source data? (y/n) [n]: n
    Would you like to continue migration if any data fails to be migrated?
     (y/n) [n]: n
  13. 生成された構成が画面に表示されます。

    {
      "source" : {
        "type" : "file",
        "format" : "csv",
        "dataPath" : "[~/nosql-migrator]/course.csv",
        "hasHeader" : false,
        "csvOptions" : {
          "encoding" : "UTF-8",
          "trim" : false
        }
      },
      "sink" : {
        "type" : "nosqldb_cloud",
        "endpoint" : "us-ashburn-1",
        "table" : "course",
        "compartment" : "ua_nosql",
        "includeTTL" : true,
        "schemaInfo" : {
          "readUnits" : 100,
          "writeUnits" : 60,
          "storageSize" : 1,
          "schemaPath" : "[~/nosql-migrator]/mytable_schema.ddl"
        },
        "credentials" : "/home/<user>/.oci/config",
        "credentialsProfile" : "DEFAULT",
        "writeUnitsPercent" : 90,
        "overwrite" : true,
        "requestTimeoutMs" : 5000
      },
      "abortOnError" : true,
      "migratorVersion" : "1.8.0"
    }
  14. 最後に、生成された構成ファイルを使用して移行を続行するかどうかを指定するよう求められます。デフォルト・オプションはyです。

    ノート:

    nを選択すると、データ移行は開始されません。生成された構成ファイルはMigratorディレクトリに保存されます。次のいずれかのコマンドを使用して、構成ファイル・オプションを指定して移行ユーティリティを実行します。

    ./runMigrator -c ./migrator-config.json

    ./runMigrator --config ./migrator-config.json

    Would you like to run the migration with above configuration?
    If you select no, you can use the generated configuration file to
    run the migration using:
    ./runMigrator --config ./migrator-config.json
    (y/n) [y]: y
  15. NoSQL Database Migratorが、CSVファイルからOracle NoSQL Database Cloud Serviceにデータをコピーします。

    creating source from given configuration:
    source creation completed
    creating sink from given configuration:
    sink creation completed
    creating migrator pipeline
    [cloud sink] : start loading DDLs
    [cloud sink] : executing DDL: create table if not exists course (id INTEGER, name STRING, location STRING, fees INTEGER, PRIMARY KEY(id)),limits: [100, 60, 1]
    [cloud sink] : completed loading DDLs
    migration started
    [csv file source] : start parsing CSV records from file: course.csv
    Migration success for source course. read=4,written=4,failed=0
    Migration is successful for all the sources.
    migration completed.
    Records provided by source=4, Records written to sink=4, Records failed=0,Records skipped=0.
    Elapsed time: 0min 0sec 395ms
    Migration completed.

検証

移行を確認するには、Oracle NoSQL Database Cloud Serviceコンソールにログインし、course表にアクセスします。この表にはソース・データが含まれます。コンソールにアクセスする手順は、Oracle NoSQL Database Cloud Serviceドキュメントのインフラストラクチャ・コンソールからのサービスへのアクセスを参照してください。

関連トピック