Amazon DocumentDB で運用する MongoDB 互換データベース - 設計パターンとスケーリング
DocumentDB の MongoDB 互換性、インスタンスクラスの選定、Elastic Clusters によるシャーディング、バックアップ戦略を解説します。
DocumentDB の特徴と MongoDB との違い
DocumentDB は MongoDB 互換の API を提供するマネージドドキュメントデータベースです。MongoDB のドライバー、ODM (Mongoose など)、管理ツール (mongosh、Compass) をそのまま使用できます。ただし、内部アーキテクチャは MongoDB とは異なり、Aurora と同様のストレージエンジンを採用しています。ストレージは 3 つの AZ に 6 つのコピーを自動複製し、10 GB 単位で最大 128 TiB まで自動拡張されます。MongoDB のレプリカセットやシャーディングの運用管理が不要になる点が最大のメリットです。一方、MongoDB の一部機能 (クライアントサイドフィールドレベル暗号化、$graphLookup の一部パターンなど) はサポートされていないため、移行前に互換性の検証が必要です。
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
インスタンス設計とスケーリング
DocumentDB のインスタンスクラスは db.r6g (メモリ最適化、Graviton2) が標準的な選択肢です。プライマリインスタンスが書き込みを処理し、最大 15 のリードレプリカが読み取りを分散します。リードレプリカはフェイルオーバーターゲットとしても機能し、プライマリ障害時に自動的に昇格します。大規模なワークロードには Elastic Clusters を使用します。Elastic Clusters はデータをシャードキーに基づいて自動的に分散し、ペタバイト規模のデータと数百万回/秒のスループットに対応します。シャードキーの選定はパフォーマンスに直結するため、カーディナリティが高く、クエリパターンに合致するフィールドを選択することが重要です。
バックアップと高可用性
DocumentDB は継続的バックアップを自動的に S3 に取得し、最大 35 日間の任意の秒単位でポイントインタイムリストアが可能です。手動スナップショットは保持期間の制限なく保存でき、クロスリージョンコピーで DR に対応します。マルチ AZ 配置ではプライマリとリードレプリカを異なる AZ に配置し、AZ 障害時のフェイルオーバーは通常 30 秒以内に完了します。グローバルクラスターを使用すると、最大 5 つのリージョンにリードレプリカを配置し、リージョン障害時に別リージョンのレプリカをプライマリに昇格できます。レプリケーションラグは通常 1 秒未満です。
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。
まとめ
DocumentDB は MongoDB 互換の API でドキュメントデータベースをマネージドに運用するサービスです。Aurora ベースのストレージエンジンで高い耐久性と可用性を実現し、Elastic Clusters で大規模ワークロードにも対応します。MongoDB からの移行では互換性の事前検証が重要ですが、運用管理の負荷を大幅に削減できます。
AWS の優位点
- MongoDB 3.6/4.0/5.0 の API と互換性があり、既存の MongoDB ドライバーやツールをそのまま使用できる
- ストレージは 3 つの AZ に 6 つのコピーを自動的に複製し、最大 128 TiB まで自動拡張される
- Elastic Clusters でペタバイト規模のデータをシャーディングし、数百万回/秒の読み書きに対応できる
- 最大 15 のリードレプリカで読み取りをスケールアウトし、フェイルオーバーは通常 30 秒以内に完了する
- 継続的バックアップで最大 35 日間の任意の時点にポイントインタイムリストアが可能