Amazon DocumentDB で運用する MongoDB 互換データベース - 設計パターンとスケーリング

MongoDB 互換の DocumentDB でインスタンスクラスを選定し、Elastic Clusters によるシャーディングでスケーラビリティを確保する。バックアップ戦略も紹介します。

DocumentDB の特徴と MongoDB との違い

DocumentDB は MongoDB 互換の API を提供するマネージドドキュメントデータベースです。MongoDB のドライバー、ODM (Mongoose など)、管理ツール (mongosh、Compass) をそのまま使用できます。ただし、内部アーキテクチャは MongoDB とは異なり、Aurora と同様のストレージエンジンを採用しています。ストレージは 3 つの AZ に 6 つのコピーを自動複製し、10 GB 単位で最大 128 TiB まで自動拡張されます。MongoDB のレプリカセットやシャーディングの運用管理が不要になる点が最大のメリットです。一方、MongoDB の一部機能 (クライアントサイドフィールドレベル暗号化、$graphLookup の一部パターンなど) はサポートされていないため、移行前に互換性の検証が必要です。

インスタンス設計とスケーリング

DocumentDB のインスタンスクラスは db.r6g (メモリ最適化、Graviton2) が標準的な選択肢です。プライマリインスタンスが書き込みを処理し、最大 15 のリードレプリカが読み取りを分散します。リードレプリカはフェイルオーバーターゲットとしても機能し、プライマリ障害時に自動的に昇格します。大規模なワークロードには Elastic Clusters を使用します。Elastic Clusters はデータをシャードキーに基づいて自動的に分散し、ペタバイト規模のデータと数百万回/秒のスループットに対応します。シャードキーの選定はパフォーマンスに直結するため、カーディナリティが高く、クエリパターンに合致するフィールドを選択することが重要です。

バックアップと高可用性

DocumentDB は継続的バックアップを自動的に S3 に取得し、最大 35 日間の任意の秒単位でポイントインタイムリストアが可能です。手動スナップショットは保持期間の制限なく保存でき、クロスリージョンコピーで DR に対応します。マルチ AZ 配置ではプライマリとリードレプリカを異なる AZ に配置し、 AZ 障害時のフェイルオーバーは通常 30 秒以内に完了します。グローバルクラスターを使用すると、最大 5 つのリージョンにリードレプリカを配置し、リージョン障害時に別リージョンのレプリカをプライマリに昇格できます。レプリケーションラグは通常 1 秒未満です。 MongoDB に関する実践的なノウハウはAmazon の関連書籍でも確認できます。

DocumentDB の料金

DocumentDB の料金はインスタンス時間、ストレージ、I/O で構成されます。db.r6g.large は 1 時間あたり約 0.277 ドル (月額約 199 ドル) です。ストレージは 1 GB あたり月額約 0.10 ドルで、I/O は Standard クラスタで 100 万リクエストあたり約 0.20 ドルです。I/O-Optimized クラスタはストレージ単価が約 25% 高い代わりに I/O 料金が無料で、I/O 負荷の高いワークロードではトータルコストが下がります。Elastic Clusters (シャーディング) は vCPU 時間あたり約 0.1386 ドルで、シャード数に応じてスケールします。

まとめ

DocumentDB は MongoDB 互換の API でドキュメントデータベースをマネージドに運用するサービスです。Aurora ベースのストレージエンジンで高い耐久性と可用性を実現し、Elastic Clusters で大規模ワークロードにも対応します。MongoDB からの移行では互換性の事前検証が重要ですが、運用管理の負荷を大幅に削減できます。