MongoDBからOracle NoSQL Database Cloud Serviceへのデータの移行

Oracle NoSQL Database Migratorを使用して、MongoDBからOracle NoSQL Database Cloud Serviceにデータを移行するには、次の2つのオプションがあります:

  • Oracle NoSQLデフォルト・スキーマの使用
  • カスタム・スキーマの使用

どちらのオプションにも、ソース・ファイルとターゲット・データベース(シンク)に関する情報を含む構成JSONファイルが必要です。どちらのシナリオでも、ソースはOCI Object Storageに格納されているMongoDB形式のJSONファイルですが、ターゲットはOracle NoSQL Database Cloud Serviceデータベースです。カスタム・スキーマを使用する場合は、構成JSONファイルにtransformsセクションが含まれている必要があります。

Oracle NoSQLデフォルト・スキーマを使用したデータの移行

デフォルト・スキーマを使用して移行する場合、idおよびdocumentという2つの列を持つ新しいOracle NoSQL Database Cloud Service表が作成されます。MongoDB JSONエクスポート・ファイルのエントリごとに、_id列がOracle NoSQL Database Cloud Service表のidに移行され、MongoDB JSONエクスポート・ファイルの他の列が新しいdocument列に集計されます。

次のステップでは、Oracle NoSQLデフォルト・スキーマを使用してデータを移行する方法について説明します。

  1. MongoDBにログインし、mongoexportを実行して、データ収集をMongoDB形式のJSONファイルにエクスポートします。次に例を示します。
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Oracle Linux splitユーティリティを使用して13,500レコードを超えるMongoDB JSONファイルを分割し、それぞれ13,500レコードの複数のJSONファイルにMongoDB JSONファイルを分割します。次に例を示します。
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. OCIコンソールにログインして、OCIオブジェクト・ストレージ・バケットがまだ存在しない場合は作成します。
    バケット名とネームスペースを書き留めます。
  4. OCIコンソールまたはREST APIを使用して、ステップ2のファイルをステップ3のバケットにアップロードします。
  5. OCIコンソールで、ターゲットのOracle NoSQL Database Cloud Service表を所有するOCIユーザーのAPIキーを作成します。このユーザーには、表を作成および管理する権限が必要です。
    ユーザーOCID、テナンシOCID、フィンガープリントおよびOCIリージョンIDに注意してください。秘密鍵と公開鍵を PEMファイルに保存します。このAPIキーは、Oracle NoSQL Database Migratorによって使用され、MongoDB形式のJSONファイルの取得、新しい表の作成、MongoDB JSONファイルのデータの表へのアップロードを行います。
  6. Oracle NoSQL Database Cloud Service表のコンパートメントがまだ存在しない場合は作成します。
    コンパートメント名に注意してください。
  7. コンピュート・インスタンスを作成します。
    このコンピュート・インスタンスは、Oracle NoSQL Database Migratorソフトウェアを実行します。Always-Free Computeインスタンス(VM.Standard.E4)。1 OCPUと16GBのメモリを搭載したフレックスで十分かつコスト効率に優れています。
  8. SSHを使用して、次のように新しいコンピュート・インスタンスにopc userとしてログインし、Java 11をインストールします:
    [opc@oci-compute ~]$ sudo yum install java-11
  9. Oracle NoSQL Database Migrator 1.5.0バイナリをまだダウンロードしていない場合はダウンロードしてください。詳細は、「ソフトウェア要件の確認」の項を参照してください。
  10. SCPを使用して、Oracle NoSQL Database Migrator ZIPファイルを新しいコンピュート・インスタンスのopc user'sホーム・ディレクトリにアップロードします。
  11. SSHを使用して、opc userとしてコンピュート・インスタンスにログインし、前のステップでダウンロードしたOracle NoSQL Database Migratorソフトウェアを解凍します。ファイルの内容は、/home/opc/nosql-migrator-1.5.0という名前の新しいディレクトリに解凍されます。ファイルは次のようにして解凍します。
    [opc@oci-compute ~]$ unzip V1033765-1.zip
    [opc@oci-compute ~]$ ls -l
    total 61964
    drwxr-xr-x. 3 opc opc 4096 Feb 23 20:32 nosql-migrator-1.5.0
    -rw-r--r--. 1 opc opc 63446080 Feb 14 19:26 V1033765-01.zip
    [opc@jc-bastion-phx migrator]$
  12. SCPを使用して、ステップ5の秘密キーPEMファイルを、前のステップでOracle NoSQL Database Migratorが解凍されたコンピュート・インスタンスのopc userのホーム・ディレクトリにアップロードします。
  13. SSHを使用して、opc userとしてコンピュート・インスタンスにログインし、OCIアイデンティティ・ファイルを作成します。次の内容を使用して、/home/opc/.OCIディレクトリにOCIアイデンティティ・ファイルを作成します。
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_5
    fingerprint=fingerprint_from_step_5
    tenancy=tenancy_OCID_from_step_5
    region=region_ID_from_step_5
    key_file=full_path_to_private_key_PEM_file_uploaded_step_12
  14. コンピュート・インスタンスで、ディレクトリをnosql-migrator-1.5.0サブディレクトリに変更します。ソースおよびターゲット(シンク)に関する情報を含む移行構成JSONファイルを次のように作成します:
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-mongodbjson-bucket_def-schema.json 
    {
       "source":{
          "type":"object_storage_oci",
          "format":"mongodb_json",
          "endpoint":"https://objectstorage.region_ID_from_step_5.oraclecloud.com",
          "namespace":"namespace_from_step_3",
          "bucket":"bucket_name_from_step_3",
          "prefix":"source_json_filename_or_prefix_from_step_2",
          "credentials":"/home/opc/.oci/config",
          "credentialsProfile":"default"
       },
       "sink":{
          "type":"nosqldb_cloud",
          "endpoint":"https://nosql.oci_region_ID_from_step_5.oci.oraclecloud.com",
          "table":"new_Oracle_NoSQL_Database_Cloud_Service_table_name",
          "schemaInfo":{
             "defaultSchema":true,
             "readUnits":50,
             "writeUnits":50,
             "storageSize":25
          },
          "compartment":"compartment_name_from_step_6",
          "includeTTL":false,
          "credentials":"/home/opc/.oci/config",
          "credentialsProfile":"DEFAULT",
          "writeUnitsPercent":90,
          "overwrite":true,
          "requestTimeoutMs":5000
       },
       "abortOnError":false,
       "migratorVersion":"1.5.0"
    }
    [opc@oci-compute nosql-migrator-1.5.0]$
  15. Oracle NoSQL Database Migratorおよび前のステップで作成した移行構成JSONファイルを使用して、次のようにデータ移行を実行します:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket_def_schema.json
    移行ジョブは、デフォルト・スキーマを使用して新しいOracle NoSQL Database Migrator表を作成し、OCI Object StorageからMongoDB形式のJSONファイルを読み取って、それらのファイルから新しく作成された表にデータをインポートします。

カスタム・スキーマを使用したデータの移行

カスタム・スキーマを使用して移行する場合は、新しいOracle NoSQL Database Cloud Service表をMongoDB表のスキーマと同様に定義する必要があります。NoSQL Database Migrator構成ファイルには、新しい表の列_ididに変換する方法をNoSQL Database Migratorに指示する変換エントリが含まれている必要があります。

次のステップでは、Oracle NoSQLカスタム・スキーマを使用してデータを移行する方法について説明します。

  1. MongoDBにログインし、mongoexportを実行して、データ収集をMongoDB形式のJSONファイルにエクスポートします。次に例を示します。
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Oracle Linux splitユーティリティを使用して13,500レコードを超えるMongoDB JSONファイルを分割し、それぞれ13,500レコードの複数のJSONファイルにMongoDB JSONファイルを分割します。次に例を示します。
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. Oracle Linuxのcatまたはviコマンドを使用して、生成されたMongoDB形式のJSONファイルを調べます。次の点に注意してください:
    • 各列の名前とデータ型に注意してください。この情報を使用して、Oracle NoSQL Database Cloud Service表スキーマ・データ定義言語(DDL)を作成します。
    • 最初の列の名前はidにする必要があります。残りの列は、MongoDB JSONファイルと同じ名前および型である必要があります。
  4. スキーマDDLをファイルに保存します。スキーマDDLは次のようになります。
    $ cat collection_name.ddl
    CREATE TABLE table_name ( id string, column_2_name column_2_type, column_n_name column_n_type, PRIMARY KEY ( id ) )
  5. OCIコンソールにログインして、OCIオブジェクト・ストレージ・バケットがまだ存在しない場合は作成します。
    バケット名とネームスペースを書き留めます。
  6. OCIコンソールまたはREST APIを使用して、ステップ2および3のファイルをステップ5で作成した新しいバケットにアップロードします。
  7. OCIコンソールで、ターゲットのOracle NoSQL Database Cloud Service表を所有するOCIユーザーのAPIキーを作成します。このユーザーには、表を作成および管理する権限が必要です。
    ユーザーOCID、テナンシOCID、フィンガープリントおよびOCIリージョンIDに注意してください。秘密鍵と公開鍵を PEMファイルに保存します。このAPIキーは、Oracle NoSQL Database Migratorによって使用され、MongoDB形式のJSONファイルの取得、新しい表の作成、MongoDB JSONファイルのデータの表へのアップロードを行います。
  8. Oracle NoSQL Database Cloud Service表のコンパートメントがまだ存在しない場合は作成します。
    コンパートメント名に注意してください。
  9. コンピュート・インスタンスを作成します。
    このコンピュート・インスタンスは、Oracle NoSQL Database Migratorソフトウェアを実行します。Always-Free Computeインスタンス(VM.Standard.E4)。1 OCPUと16GBのメモリを搭載したフレックスで十分かつコスト効率に優れています。
  10. SSHを使用して、次のように新しいコンピュート・インスタンスにopc userとしてログインし、Java 11をインストールします:
    [opc@oci-compute ~]$ sudo yum install java-11
  11. Oracle NoSQL Database Migrator 1.5.0バイナリをまだダウンロードしていない場合はダウンロードしてください。詳細は、「ソフトウェア要件の確認」の項を参照してください。
  12. SCPを使用して、Oracle NoSQL Database Migrator ZIPファイルを新しいコンピュート・インスタンスのopc user'sホーム・ディレクトリにアップロードします。
  13. SSHを使用して、opc userとしてコンピュート・インスタンスにログインし、前のステップでダウンロードしたOracle NoSQL Database Migratorソフトウェアを解凍します。ファイルの内容は、/home/opc/nosql-migrator-1.5.0という名前の新しいディレクトリに解凍されます。ファイルは次のようにして解凍します。
    [opc@oci-compute ~]$ unzip V1033765-1.zip
    [opc@oci-compute ~]$ ls -l
    total 61964
    drwxr-xr-x. 3 opc opc 4096 Feb 23 20:32 nosql-migrator-1.5.0
    -rw-r--r--. 1 opc opc 63446080 Feb 14 19:26 V1033765-01.zip
    [opc@jc-bastion-phx migrator]$
  14. SCPを使用して、ステップ7の秘密キーPEMファイルを、前のステップでOracle NoSQL Database Migratorが解凍されたコンピュート・インスタンスのopc userのホーム・ディレクトリにアップロードします。
  15. SSHを使用して、opc userとしてコンピュート・インスタンスにログインし、OCIアイデンティティ・ファイルを作成します。次の内容を使用して、/home/opc/.OCIディレクトリにOCIアイデンティティ・ファイルを作成します。
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_7
    fingerprint=fingerprint_from_step_7
    tenancy=tenancy_OCID_from_step_7
    region=region_ID_from_step_7
    key_file=full_path_to_private_key_PEM_file_uploaded_step_14
  16. コンピュート・インスタンスで、ディレクトリをnosql-migrator-1.5.0サブディレクトリに変更します。ソースおよびターゲット(シンク)に関する情報を含む移行構成JSONファイルを次のように作成します:
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-mongodbjson-bucket-src_schema.json 
    {
      "source": {
        "type": "object_storage_oci",
        "format": "mongodb_json",
        "endpoint": "https://objectstorage.region_ID_from_step_7.oraclecloud.com",
        "namespace": "namespace_from_step_5",
        "bucket": "bucket_name_from_step_5",
        "prefix": "source_json_filename_or_prefix_from_step_2",
        "schemaInfo": {
          "schemaObject": "collection_name_ddl_from_step_3"
        },
        "credentials": "/home/opc/.oci/config",
        "credentialsProfile": "DEFAULT"
      },
      "sink": {
        "type": "nosqldb_cloud",
        "endpoint": "https://nosql.oci_region_ID_from_step_7.oci.oraclecloud.com",
        "table": "new_Oracle_NoSQL_Database_Cloud_Service_table_name_from_step_3",
        "schemaInfo": {
          "useSourceSchema": true,
          "readUnits": 50,
          "writeUnits": 50,
          "storageSize": 25
        },
        "compartment": "compartment_name_from_step_8",
        "includeTTL": false,
        "credentials": "/home/opc/.oci/config",
        "credentialsProfile": "DEFAULT",
        "writeUnitsPercent": 90,
        "overwrite": true,
        "requestTimeoutMs": 5000
      },
      "transforms": {
        "renameFields": {
          "_id": "id"
        }
      },
      "abortOnError": true,
      "migratorVersion": "1.5.0"
    }
    [opc@oci-compute nosql-migrator-1.5.0]$
  17. Oracle NoSQL Database Migratorおよび前のステップで作成した移行構成JSONファイルを使用して、次のようにデータ移行を実行します:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket-src_schema.json
    移行ジョブは、カスタム・スキーマを使用して新しいOracle NoSQL Database Migrator表を作成し、OCI Object StorageからMongoDB形式のJSONファイルを読み取って、それらのファイルから新しく作成された表にデータをインポートします。