AWS DMS のソースとしての MongoDB の使用 - AWS Database Migration Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS DMS のソースとしての MongoDB の使用

AWS DMS がソースとしてサポートする MongoDB のバージョンについては、「の情報源 AWS DMS」を参照してください。

MongoDB バージョンのサポートについては、次の点に注意します。

  • AWS DMS 3.4.5 以降のバージョンは、MongoDB バージョン 4.2 および 4.4 をサポートします。

  • AWS DMS 3.4.5 以降のバージョンと MongoDB 4.2 以降のバージョンは、分散トランザクションをサポートします。MongoDB の分散トランザクションの詳細については、「MongoDB ドキュメント」の「Transactions」を参照してください。

  • AWS DMS 3.5.0 以降のバージョンは、3.6 より前のバージョンの MongoDB をサポートしていません。

  • AWS DMS 3.5.1 以降のバージョンは、MongoDB バージョン 5.0 をサポートします。

  • AWS DMS 3.5.2 以降のバージョンは、MongoDB バージョン 6.0 をサポートしています。

MongoDB を初めてお使いの方のために、以下の MongoDB データベースの概念について説明します。

  • MongoDB のレコードは、フィールドと値のペアで構成されるデータ構造であるドキュメントです。フィールドの値には、他のドキュメント、配列、およびドキュメントの配列を含めることができます。ドキュメントは、リレーショナルデータベースのテーブルの行とほぼ同等です。

  • MongoDB のコレクションはドキュメントのグループであり、リレーショナルデータベーステーブルとほぼ同等です。

  • MongoDB のデータベースはコレクションの集合であり、リレーショナル データベーステーブルのスキーマとほぼ同等です。

  • 内部的には、MongoDB ドキュメントは、ドキュメント内の各フィールドのタイプを含む、圧縮形式でバイナリ JSON (BSON) ファイルとして格納されます。各ドキュメントには一意の ID があります。

AWS DMS は、MongoDB をソースとして使用する場合、ドキュメントモード または テーブルモードの 2 つの移行モードをサポートしています。MongoDB エンドポイントを作成するときか、AWS DMS コンソールからのメタデータモード パラメータを設定して、使用する移行モードを指定します。オプションとして、エンドポイント設定パネルで_id を個別の列として指定するのチェックマークボタンを選択して、プライマリ キーとして機能する _id という名前の 2 番目の列を作成できます。

移行モードの選択は、以下に説明するように、ターゲットデータの結果形式に影響します。

ドキュメントモード

ドキュメントモードでは、MongoDB ドキュメントは「現状のまま」移行されます。これは、その中のドキュメントデータが _doc という名前のターゲットテーブルの 1 つの列と見なされることを意味します。MongoDB をソースエンドポイントとして使用する場合のデフォルト設定はドキュメントモードです。

たとえば、myCollection という MongoDB コレクションの次のドキュメントを考えてみましょう。

> db.myCollection.find() { "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 } { "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 }

ドキュメントモードを使用してデータをリレーショナルデータベーステーブルに移行した後、データは以下のように構成されます。MongoDB ドキュメントのデータフィールドは _doc 列に統合されています。

oid_id _doc
5a94815f40bd44d1b02bdfe0 { "a" : 1, "b" : 2, "c" : 3 }
5a94815f40bd44d1b02bdfe1 { "a" : 4, "b" : 5, "c" : 6 }

オプションで、追加の接続属性 extractDocIDtrue に設定して、プライマリキーとして動作する、"_id" という名前の 2 つ目の列を作成できます。CDC を使用する場合は、このパラメータを true に設定します。

ドキュメントモードでは、AWS DMS は、コレクションの作成と名前の変更を次のように管理します。

  • 新しいコレクションをソースデータベースに追加すると、AWS DMS はコレクションの新しいターゲットテーブルを作成し、すべてのドキュメントをレプリケートします。

  • ソースデータベースで既存コレクションの名前を変更すると、AWS DMS はターゲット テーブルの名前を変更しません。

ターゲット エンドポイントが Amazon DocumentDB の場合は、ドキュメントモードで移行を実行します。

テーブルモード

テーブルモードでは、AWS DMS は MongoDB ドキュメントのそれぞれの最上位フィールドをターゲットテーブルの列に変換します。フィールドがネストされている場合、AWS DMS はネストされた値を 1 つの列にフラット化します。次に AWS DMS は、キーフィールドとデータ型をターゲットテーブルの列セットに追加します。

各 MongoDB ドキュメントについては、AWS DMS はターゲットテーブルの列セットに各キーとタイプを追加します。たとえば、テーブルモードを使用すると、AWS DMS は前の例を次のテーブルに移行します。

oid_id a b c
5a94815f40bd44d1b02bdfe0 1 2 3
5a94815f40bd44d1b02bdfe1 4 5 6

入れ子の値は、ドット区切りのキー名を含む列にフラット化されます。列は、ピリオドで区切られたフラット化されたフィールド名の連結と呼ばれます。たとえば、AWS DMS は、{"a" : {"b" : {"c": 1}}} のようなネストされた値のフィールドを持つ JSON ドキュメントを a.b.c. という名前の列に移行します。

ターゲット列を作成するため、AWS DMS は指定された数の MongoDB ドキュメントをスキャンして、すべてのフィールドおよびタイプのセットを作成します。次に AWS DMS は、このセットを使用してターゲットテーブルの列を作成します。コンソールを使用して MongoDB ソースエンドポイントを作成または変更する場合は、スキャンするドキュメントの数を指定できます。デフォルト値は 1000 ドキュメントです。AWS CLI を使用する場合は、追加の接続属性 docsToInvestigateを使用できます。

テーブルモードでは、AWS DMS は、ドキュメントとコレクションを次のように管理します。

  • 既存のコレクションにドキュメント (行) を追加する場合は、ドキュメントがレプリケートされます。ターゲットに存在しないフィールドがある場合、それらのフィールドはレプリケーションされません。

  • ドキュメントを更新すると、更新されたドキュメントはレプリケートされます。ターゲットに存在しないフィールドがある場合、それらのフィールドはレプリケーションされません。

  • ドキュメントの削除は完全にサポートされています。

  • CDC タスクの実行中に新しいコレクションを追加しても、ターゲット上に新しいテーブルは作成されません。

  • 変更データキャプチャ (CDC) フェーズでは、AWS DMS はコレクション名の変更をサポートしていません。

AWS DMS のソースとして MongoDB を使用する場合に必要なアクセス許可

MongoDB ソースを使用した AWS DMS の移行では、ルート権限を持つユーザーアカウントを作成するか、移行するデータベースに対してのみアクセス許可を持つユーザーを作成することができます。

次のコードは、ルートアカウントとなるユーザーを作成します。

use admin db.createUser( { user: "root", pwd: "password", roles: [ { role: "root", db: "admin" } ] } )

MongoDB 3.x ソースに関して次のコードは、移行するデータベースに対して最小限の権限を持つユーザーを作成します。

use database_to_migrate db.createUser( { user: "dms-user", pwd: "password", roles: [ { role: "read", db: "local" }, "read"] })

MongoDB 4.x ソースの場合、以下のコードは最小限の権限を持つユーザーを作成します。

{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

たとえば、「admin」データベースに次のロールを作成します。

use admin db.createRole( { role: "changestreamrole", privileges: [ { resource: { db: "", collection: "" }, actions: [ "find","changeStream" ] } ], roles: [] } )

ロールが作成されたら、移行するデータベースにユーザーを作成します。

> use test > db.createUser( { user: "dms-user12345", pwd: "password", roles: [ { role: "changestreamrole", db: "admin" }, "read"] })

CDC 用 MongoDB レプリカセットの設定

MongoDB で継続的レプリケーションまたは CDC を使用するには、AWS DMS が MongoDB オペレーションログ (oplog) にアクセスする必要があります。レプリカセットが存在しない場合に oplog を作成するには、レプリカセットをデプロイする必要があります。詳細については、 MongoDB のドキュメントをご参照ください。

ソースエンドポイントとして設定された MongoDB レプリカのプライマリまたはセカンダリノードを持つ CDC を使用することができます。

スタンドアロンインスタンスをレプリカセットに変換するには
  1. コマンドラインを使用して、mongo に接続します。

    mongo localhost
  2. mongod サービスを停止します。

    service mongod stop
  3. 次のコマンドを使用して、mongod を再起動します。

    mongod --replSet "rs0" --auth -port port_number
  4. 次のコマンドを使用して、レプリカセットへの接続をテストします。

    mongo -u root -p password --host rs0/localhost:port_number --authenticationDatabase "admin"

ドキュメントモードの移行を実行する予定がある場合は、MongoDB エンドポイントを作成するときに _id as a separate column オプションを選択します。このオプションを選択すると、プライマリキーとして機能する _id という名前の 2 番目の列が作成されます。この 2 番目の列は、AWS DMS がデータ操作言語 (DML) オペレーションをサポートするために必要です。

注記

AWS DMS 操作ログ (oplog) を使用して、継続的なレプリケーション中の変更をキャプチャします。AWS DMS が読み取る前に MongoDB が oplog からレコードをフラッシュすると、タスクは失敗します。少なくとも 24 時間は変更が保持されるように oplog のサイジングを行うことをお勧めします。

AWS DMS のソースとして MongoDB を使用する場合のセキュリティ要件

AWS DMS は、MongoDB で 2 つの認証方法をサポートしています。この 2 つの認証方法はパスワードを暗号化する際に使用するため、authType パラメータが PASSWORD に設定されているときにのみ使用されます。

MongoDB の認証方法は次のとおりです。

  • MONGODB-CR — 下位互換性のために

  • SCRAM-SHA-1 – バージョン 3.x と 4.0 認証を使用する場合のデフォルト

認証方法が指定されていない場合、AWS DMS は、MongoDB ソースバージョンのデフォルト方法を使用します。

MongoDB コレクションをセグメント化した並行移行

移行タスクのパフォーマンスを向上させるために、MongoDB ソース エンドポイントは、テーブルマッピングでの並列全ロードの 2 つのオプションをサポートしています。

つまり、自動セグメンテーションまたはテーブルマッピングによる範囲セグメンテーションを使用して、JSON 設定で並列全ロードを行うことで、コレクションを並行移行できます。自動セグメンテーションでは、AWS DMS の条件を指定して各スレッドで移行用のソースを自動的にセグメント化できます。範囲セグメンテーションを使用すると、DMS が各スレッドで移行する各セグメントの特定の範囲を AWS DMS に指定できます。これらの設定の詳細については、「テーブルとコレクション設定のルールとオペレーション」をご参照ください。

自動セグメンテーション範囲を使用して MongoDB データベースを並列移行する

スレッドごとにデータを自動的にパーティション (セグメント化) する AWS DMS の基準を指定することで、ドキュメントを並列移行できます。特に、スレッドごとに移行するドキュメントの数を指定します。このアプローチを使用して、AWS DMS は、スレッドあたりのパフォーマンスを最大化するために、セグメント境界を最適化しようとします。

テーブルマッピングで以下のテーブル設定オプションを使用して、セグメンテーション基準を指定できます。

テーブル設定オプション

説明

"type"

(必須) ソースとして "partitions-auto" for MongoDB を設定します。

"number-of-partitions"

(オプション) 移行に使用されるパーティション (セグメント) の総数。デフォルトは 16 です。

"collection-count-from-metadata"

(オプション) このオプションが true に設定されている場合,AWS DMS は、パーティションの数を決定するために、推定コレクション数を使用します。このオプションが false に設定されている場合、AWS DMS は実際のコレクション数を使用します。デフォルトは true です。

"max-records-skip-per-page"

(オプション) 各パーティションの境界を決定するときに一度にスキップするレコード数。AWS DMS は、ページ割りスキップアプローチを使用して、パーティションの最小境界を決定します。デフォルトは 10,000 です。

比較的高い値を設定すると、カーソルがタイムアウトし、タスクが失敗する可能性がある。相対的に低い値を設定すると、ページあたりのオペレーションが増え、全ロードが遅くなります。

"batch-size"

(オプション) 1 つのバッチで返されるドキュメントの数を制限します。各バッチには、サーバーへの往復が必要です。バッチサイズがゼロ (0) の場合、カーソルはサーバー定義の最大バッチサイズを使用します。デフォルトは 0 です。

次の例は、自動セグメンテーションのテーブルマッピングを示しています。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "admin", "table-name": "departments" }, "rule-action": "include", "filters": [] }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "admin", "table-name": "departments" }, "parallel-load": { "type": "partitions-auto", "number-of-partitions": 5, "collection-count-from-metadata": "true", "max-records-skip-per-page": 1000000, "batch-size": 50000 } } ] }

自動セグメンテーションには次のような制限があります。各セグメントの移行は、コレクション数とコレクション用の最小値 _id を別個にフェッチします。次に、ページ割りされたスキップを使用して、そのセグメントの最小境界を計算します。

従って、コレクション内のすべてのセグメント境界が計算されるまで、各コレクションで _id の最小値が一定のままであるようにします。セグメント境界の計算中にコレクションの _id 最小値を変更すると、データの損失や重複行のエラーが発生する可能性があります。

範囲セグメンテーションを使用して MongoDB データベースを並列移行する

スレッド内の各セグメント範囲を指定することで、ドキュメントを並列移行できます。このアプローチを使用して、AWS DMS に対してスレッドごとに選択したドキュメント範囲に従って、各スレッドで移行する特定のドキュメントを指定します。

次のイメージは、7 つの項目を持つ MongoDB コレクションとプライマリキーとしての _id を示しています。


                        7 つの項目を持つ MongoDB コレクション。

AWS DMS を並列移行させるためコレクションを 3 つの特定のセグメントに分割するには、移行タスクにテーブルマッピングルールを追加できます。これは次の JSON 例で示されます。

{ // Task table mappings: "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "testdatabase", "table-name": "testtable" }, "rule-action": "include" }, // "selection" :"rule-type" { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "testdatabase", "table-name": "testtable" }, "parallel-load": { "type": "ranges", "columns": [ "_id", "num" ], "boundaries": [ // First segment selects documents with _id less-than-or-equal-to 5f805c97873173399a278d79 // and num less-than-or-equal-to 2. [ "5f805c97873173399a278d79", "2" ], // Second segment selects documents with _id > 5f805c97873173399a278d79 and // _id less-than-or-equal-to 5f805cc5873173399a278d7c and // num > 2 and num less-than-or-equal-to 5. [ "5f805cc5873173399a278d7c", "5" ] // Third segment is implied and selects documents with _id > 5f805cc5873173399a278d7c. ] // :"boundaries" } // :"parallel-load" } // "table-settings" :"rule-type" ] // :"rules" } // :Task table mappings

このテーブルマッピング定義は、ソースコレクションを 3 つのセグメントに分割し、並列移行します。以下は、セグメンテーション境界です。

Data with _id less-than-or-equal-to "5f805c97873173399a278d79" and num less-than-or-equal-to 2 (2 records) Data with _id > "5f805c97873173399a278d79" and num > 2 and _id less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5 (3 records) Data with _id > "5f805cc5873173399a278d7c" and num > 5 (2 records)

移行タスクが完了したら、次の例に示すように、テーブルが並列にロードされたことをタスクログから確認できます。ソーステーブルから各セグメントをアンロードするために使用する MongoDB find 句 を確認することもできます。

[TASK_MANAGER ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752) [SOURCE_UNLOAD ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) [SOURCE_UNLOAD ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328) [SOURCE_UNLOAD ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent. [TASK_MANAGER ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752) [SOURCE_UNLOAD ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) [SOURCE_UNLOAD ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328) [SOURCE_UNLOAD ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent. [TARGET_LOAD ] I: Load finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 1 rows received. 0 rows skipped. Volume transfered 480. [TASK_MANAGER ] I: Load finished for segment #1 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. 2 records transferred.

現在、AWS DMS は、セグメントキー列として次の MongoDB データ型をサポートしています。

  • ダブル

  • 文字列

  • ObjectId

  • 32 ビット整数

  • 64 ビット整数

AWS DMS のソースとして MongoDB を使用する際複数のデータベースを移行する

AWS DMS バージョン 3.4.5 以降では、サポートされているすべての MongoDB バージョンについて、単一のタスクで複数のデータベースを移行できます。複数のデータベースを移行する場合は、次のステップを実行します:

  1. MongoDB ソース エンドポイントを作成するときは、次のいずれかの操作を行います:

    • DMS コンソールのエンドポイントの作成ページで、[Endpoint configuration] (エンドポイント設定) の下にある[Database name] (データベース名) が空であることを確認してください。

    • AWS CLI CreateEndpoint コマンドを使用して、空の文字列値を MongoDBSettingsDatabaseName パラメータに割り当てます。

  2. MongoDB ソースから移行するデータベースごとに、タスクのテーブルマッピングにおけるスキーマ名としてのデータベース名を指定します。これを行うには、コンソール内のガイド付き入力を使用するか、JSON で直接入力できます。ガイド付き入力の詳細については、「 コンソールからテーブル選択および変換を指定する」をご参照ください。JSON の詳細については、「選択ルールと選択アクション」をご参照ください。

たとえば、次の JSON を指定して、3 つの MongoDB データベースを移行するとします。

例 スキーマ内のすべてのテーブルの移行

次の JSON は、すべてのテーブルをソースエンドポイントの CustomersOrdersSuppliers データベースからターゲット エンドポイントに移行します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Customers", "table-name": "%" }, "rule-action": "include", "filters": [] }, { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "Orders", "table-name": "%" }, "rule-action": "include", "filters": [] }, { "rule-type": "selection", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "Inventory", "table-name": "%" }, "rule-action": "include", "filters": [] } ] }

MongoDB を AWS DMS のソースとして使用する場合の制限

MongoDB を AWS DMS のソースとして使用する場合の制限は次のとおりです。

  • テーブルモードの場合、コレクション内のドキュメントは、同じフィールドの値で使用されるデータ型と一致している必要があります。例えば、コレクション内のドキュメントに '{ a:{ b:value ... }' が含まれている場合、a.b フィールドの value を参照するコレクション内のすべてのドキュメントは、値が登場するコレクションの場所を問わず、value で同じデータ型を使用する必要があります。

  • _id オプションが別の列として設定されている場合、ID 文字列は 200 文字以下でなければなりません。

  • オブジェクト ID および配列タイプキーは、テーブルモードで oid および array というプレフィックスが付けられた列に変換されます。

    内部的には、これらの列はプレフィックスが付けられた名前で参照されます。これらの列を参照する変換ルールを AWS DMS で使用する場合は、プレフィックス列を指定します。たとえば、${_id} ではなく ${oid__id} を指定するか、${_addresses} ではなく ${array__addresses} を指定します。

  • コレクション名とキー名にドル記号 ($) を含めることはできません。

  • AWS DMS は、RDBMS ターゲットを使用したテーブルモードで、大文字と小文字 (uppermlower) が異なる同じフィールドがあるコレクションをサポートしていません。例えば、AWS DMS は、Field1field1 という名前の 2 つのコレクションがあることをサポートしていません。

  • 前述のように、テーブルモードとドキュメントモードには制限があります。

  • 自動セグメンテーションを使用して並列移行するには、前述の制限があります。

  • ソースフィルターは、MongoDB ではサポートされていません。

  • AWS DMS は、ネストレベルが 97 を超えるドキュメントをサポートしていません。

  • AWS DMS は、MongoDB バージョン 5.0 の次の機能をサポートしていません。

    • ライブリシャーディング

    • クライアント側のフィールドレベルの暗号化 (CSFLE)

    • 時系列コレクションの移行

      注記

      DocumentDB は、時系列コレクションをサポートしていないため、フルロードフェーズで移行された時系列コレクションは Amazon DocumentDB の通常のコレクションに変換されます。

AWS DMS のソースとして MongoDB を使用する場合のエンドポイント設定

MongoDB ソース エンドポイントを設定する場合、AWS DMSコンソールを使用して、複数のエンドポイント設定を指定できます。

次の表は、AWS DMS のソースとして MongoDB データベースを使用する際利用可能な設定についてです。

設定 (属性) 有効値 デフォルト値と説明

[Authentication mode] (認証モード)

"none"

"password"

"password" では、ユーザー名とパスワードの入力が求められます。"none" を指定した場合、ユーザー名とパスワードのパラメータは使用されません。

[Authentication source] (認証ソース)

有効な MongoDB データベース名を指定してください。

認証情報を検証するために使用する MongoDB データベースの名前。デフォルト値は、"admin"です。

[Authentication mechanism] (認証メカニズム)

"default"

"mongodb_cr"

"scram_sha_1"

認証メカニズム。 "default" 値は "scram_sha_1" です。authType"no" に設定されている場合、この設定は使用されません。

[Metadata mode] (メタデータモード)

ドキュメントとテーブル

ドキュメントモードまたはテーブルモードを選択します。

スキャンするドキュメントの数 (docsToInvestigate)

0 より大きい正の整数。

このオプションは、テーブルモードでのみターゲット テーブル定義を定義するために使用します。

[_id as a separate column] (_id を個別の列として指定する)

チェックボックス

このチェックを入れると、プライマリ キーとして機能する _id という名前の 2 番目の列が作成されます。

socketTimeoutMS

NUMBER

追加の接続属性 (ECA) のみ

この設定はミリ秒単位で、MongoDB クライアントの接続タイムアウトを設定する。値が 0 以下の場合、MongoDB クライアントのデフォルトが使用される。

UseUpdateLookUp

boolean

true

false

true の場合、CDC 更新イベント中に、AWS DMS は更新されたドキュメント全体をターゲットにコピーする。false に設定すると、AWS DMS は MongoDB の update コマンドを使用して、ターゲットのドキュメント内の変更されたフィールドのみを更新する。

ReplicateShardCollections

boolean

true

false

true の場合、AWS DMS はデータをシャードコレクションにレプリケートする。AWS DMS は、ターゲットエンドポイントが DocumentDB の伸縮自在なクラスターである場合にのみこの設定を使用する。

この設定が true の場合、次の点に注意する。

  • TargetTablePrepModenothing に設定する必要がある。

  • AWS DMS は自動的に useUpdateLookupfalse に設定する。

ドキュメントメタデータモードとして選択した場合、さまざまなオプションを利用できます。

ターゲット エンドポイントが DocumentDB の場合は、ドキュメントモードで移行を実行し、また、ソース エンドポイントを変更し、[_id as separate column] (_id を個別の列として) オプションを選択します。ソースの MongoDB ワークロードにトランザクションが含まれる場合、これは必須の前提条件です。

MongoDB のソースデータ型

AWS DMS のソースとして MongoDB を使用するデータ移行では、ほとんどの MongoDB データ型がサポートされます。次のテーブルに、AWS DMS を使用する場合にサポートされる MongoDB のソースデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。MongoDB データ型の詳細については、『MongoDB のドキュメント』の「BSON 型」をご参照ください。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションをご参照ください。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型」をご参照ください。

MongoDB データ型

AWS DMS データ型

ブール値

Bool

バイナリ

BLOB

日付

日付

タイムスタンプ

日付

Int

INT4

Long

INT8

ダブル

REAL8

String (UTF-8)

CLOB

配列

CLOB

OID

文字列

REGEX

CLOB

コード

CLOB