[DMS] MongoDB Sourceのマイグレーションモードを比較する

2017.04.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

菊池です。

先日のブログで紹介しました通り、Database Migration Service(DMS)の移行元データベース(Source)としてMongoDBが設定可能になりました。

今回は、DMSでMongoDBからマイグレーションする際の、2つのマイグレーションモードについて調べてみました。

マイグレーションモード

MongoDBからのマイグレーションには、以下の2つのモードがあります。

  • テーブルモード:JSONドキュメントの各キーを列にマッピングして出力
  • ドキュメントモード:JSONドキュメントをそのまま出力

言葉だけだとわかりにくいですが、図にすると以下のようなイメージです。

dms-mongo-mode-01

MongoDBはドキュメント指向のデータベースですが、データモデルの異なるデータストアに出力するにあたって、ターゲットのデータモデルや用途によって2つのモードから選択が可能です。

RDBにマイグレーションして、各キーの項目を使ったクエリ実行したい場合には、テーブルモードが便利かと思います。DynamoDBのようなキー・バリューストアにレプリケーションする場合にはドキュメントモードが適していそうです。

CDCを使う上での制約

DMSの大きなウリであるCDC(Change Data Capture)も、MongoDBのOplogを利用することで可能です。ただし、各モードによりCDCでレプリケーション可能なオペレーションが異なります。

テーブルモード ドキュメントモード
CDCの利用 可能 可能(_id列を有効にする必要あり)
コレクションの追加 ×
コレクション名の変更 × ×
ドキュメントへのキーの追加 ×

CDCの利用自体はどちらのモードでも可能ですが、ドキュメントモードでは"_id"列をオプションで別のカラムに出力しておく必要があります(プライマリキーとして利用されます)。コレクションを追加するのはドキュメントモードでのみサポートされます。コレクション名の変更はどちらのモードでもサポートされません。ドキュメントへ新規のキーを追加することは、そのまま1つのカラムに出力されるドキュメントモードでのみサポートされます。テーブルモードでは列の追加が必要なためか、サポートされず、定義済みのキーのみ反映されます。

さいごに

異なるデータストア間でのレプリケーションを可能にするDMSですが、データモデルの異なるDBでレプリケーションする場合には、さすがにそのまま移行とはいかないようです。

双方のデータモデルの特性を理解し、ユースケースにあった適切な移行方法を選択するのが重要でしょう。