[AWS] MongoDB からの移行ツール:DocumentDB Index Tool を試してみた
こんにちは、菊池です。
先日の AWS Black Belt Online Seminarでは、Amazon DocumentDBが紹介されました。
その中で紹介されていたツール、DocumentDB Index Toolが気になったので試してみました。
DocumentDB Index Tool
紹介によると、MongoDBのIndexのエクスポートとDocumentDBとの互換性チェック、インポートが可能なようで、GitHubにて公開されています。
インストール
早速試してみます。実行した環境は、Amazon Linux 2で、ターゲットのMongoDBは以下の記事で用意した MongoDB 4.2RCです。
まずは、前提となるpipをインストールしておきます。
$ curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" $ sudo python get-pip.py
次に、リポジトリのクローンです。
$ git clone https://github.com/awslabs/amazon-documentdb-tools.git
必須のパッケージをインストールしたら完了です。
$ cd amazon-documentdb-tools/ $ sudo pip install -r requirements.txt
環境準備
チェック対象のMongoDBは前述の通り、MongoDB 4.2RCです。互換性チェックの結果をみたいので、DocumentDBではサポート外の以下のインデックスを作成しておきます。
Partial Index
db.user.createIndex( { "userMetadata.age" : 1 }, { partialFilterExpression: { age: { $gt: 30 } }} )
Wildcard Index
db.user.createIndex( { "userMetadata.$**" : 1 } )
実行
それでは実行してみます。まずは--dump-indexesでエクスポートします。
$ python migrationtools/documentdb_index_tool.py --dump-indexes \ > --host localhost \ > --port 27017 \ > --username skikuchi \ > --password password \ > --auth-db localhost \ > --dir ~/dump/ 2019-06-30 09:28:34,858: Successfully authenticated to database: localhost 2019-06-30 09:28:34,858: Successfully connected to instance localhost:27017 2019-06-30 09:28:34,858: Retrieving indexes from server... 2019-06-30 09:28:34,863: Completed writing index metadata to local folder: /home/ec2-user/dump/
エクスポートしたファイルは以下のようになっていました。
$ ls -l ~/dump/localhost/ 合計 4 -rw-rw-r-- 1 ec2-user ec2-user 311 6月 30 09:28 user.metadata.json
それでは、互換性のチェックです。--show-issuesを実行します。なぜか、username/password/auth-dbを指定しないと実行できませんでした。
$ python migrationtools/documentdb_index_tool.py --show-issues \ > --username skikuchi \ > --password password \ > --auth-db localhost \ > --dir ~/dump/ 2019-06-30 09:29:21,191: { "localhost": { "user": { "userMetadata.age_1": { "unsupported_index_options": [ "partialFilterExpression" ] } } } }
結果、Partial Indexがissueとして表示されました。正式リリース前の4.2の機能であるWildcard Indexはさすがに評価対象外のようです。ちなみに、互換性に問題がない場合は、以下のように表示されました。
$ python migrationtools/documentdb_index_tool.py --show-issues \ > --username skikuchi \ > --password password \ > --auth-db localhost \ > --dir ~/dump/ 2019-06-30 09:21:46,534: No incompatibilities found.
さいごに
MongoDBからDocumentDBへの移行互換性チェックツール、DocumentDB Index Toolを試しました。今後も、MongoDB、DocumentDB双方の進化に合わせてアップデートされていくことを期待します。