![[AWS] MongoDB からの移行ツール:DocumentDB Index Tool を試してみた](https://devio2023-media.developers.io/wp-content/uploads/2019/05/amazon-documentdb.png)
[AWS] MongoDB からの移行ツール:DocumentDB Index Tool を試してみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、菊池です。
先日の 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双方の進化に合わせてアップデートされていくことを期待します。













