DocumentDB

【VPC内リージョンサービス】

DocumentDB は、MongoDB互換APIを備えたスケーラブルなマネージドドキュメントデータベースです。

JSON / BSON(Binary JSON) 形式のデータを扱う スキーマレス 構造を採用しており、柔軟なデータモデルを簡単に運用できます。

内部構成は クラスター / レプリカセット によって高可用性を確保し、ストレージとコンピューティングの分離 によりスケーラブルで耐障害性の高いアーキテクチャを実現しています。自動スケーリング / 高速キャッシュ / 並列クエリ に対応しており、負荷に応じてスムーズにパフォーマンスを最適化します。

データ保護の面では、自動バックアップ / スナップショット / PITR(Point-In-Time Recovery) によって、任意の時点への復旧が可能です。また、マルチAZ構成 による高可用性や、監視 / パッチ適用のマネージド化 により、運用負担を大幅に軽減できます。

ネットワークとセキュリティ面では、VPC内配置、KMS暗号化、TLS通信 に対応しており、安全なデータ運用を実現します。

多読負荷がある場合は、リードレプリカ により水平スケーリングすることで、読み取り性能を高めることができます。

Lambda / Glue / DMS / Kinesis / QuickSight などのAWSサービスと連携し、ETL処理やリアルタイム分析、可視化にも対応します。特に、Database Migration Service(DMS) を使うことで、既存のMongoDBアプリケーション を最小限のドライバ変更で DocumentDB へ容易に移行できます。

重要用語

レプリカセット
ストレージとコンピューティングの分離
自動バックアップ
スナップショット
PITR
関連サービス
DMS
Kinesis
QuickSight

ユースケース

JSONドキュメント指向アプリケーションMongoDB互換APIを利用して、柔軟なスキーマを持つJSONドキュメントを保存するWebアプリやモバイルアプリのバックエンドDBとして利用する。
コンテンツ管理システムのデータストア記事やページ情報など、構造が頻繁に変わるコンテンツデータをドキュメントとして保存し、アプリ側から柔軟に検索・取得する。
サーバーログやイベントデータの保存アプリケーションログやイベントデータをJSON形式で蓄積し、柔軟なクエリや分析用の抽出を行いやすくする。

ベストプラクティス

マルチAZクラスター構成本番環境ではレプリカを持つマルチAZで運用する。
バックアップとスナップショット管理自動バックアップを有効化し、リテンション期間を設定する。
インデックス最適化クエリパターンに応じてインデックスを設計し、性能を維持する。

高可用性・バックアップ・リトライ

高可用性・バックアップ・リトライ設計のポイント
【デフォルト】AWS内部で冗長化
 ・ストレージレイヤーの6重化(すべてのデータを3つのAZに6つのコピーとして自動複製)
 ・自動データ修復(ディスクやノードの障害を検知し自動修復)
 ・クラスターボリュームの自動管理(10GBずつ自動拡張 最大128TB)
 ・書き込みの同期レプリケーション(4/6の書き込み確認で成功とする仕組み)
 ・読み取りの冗長性(6コピー中3/6の読み取り確認で成功)
 ・自動バックアップ(ストレージスナップショットを自動作成)
 ・フェイルオーバー機能(プライマリインスタンス障害時にレプリカを自動昇格)
 ・クラスターエンドポイントの自動切り替え(フェイルオーバー時にDNS名を自動更新)
【リードレプリカ】(推奨:複数AZに最低1つ以上のリードレプリカを配置する)
【DBサブネットグループ】(最低2つ以上の異なるAZにサブネットを指定)
【フェイルオーバー優先度(Priority)】の設定
【グローバルクラスター】(ディザスタリカバリ要件がある場合)
【自動バックアップ】バックアップ保持期間 1~35 日
 デフォルト 1 日
 クラスタストレージを継続的に S3 にバックアップ
 PITR:継続的バックアップ+トランザクションログにより、保持期間内の任意時点に復元可能
【手動スナップショット】任意のタイミングで取得可能
 保持期限は無制限(ユーザーが削除するまで保持)
 クラスタストレージ全体を S3 ベースの永続ストレージに保存
 スナップショットからいつでもクラスタを復元可能(スナップショット時点での復元)

セキュリティ

関連サービス設定内容
Subnet(公開リソースと内部リソースの分離)【DBサーバ】
 Privateの専用SubnetでマルチAZ構成
SG(リソース単位のアクセス制御)【DBサーバ】
 インバウンド:27017(MongoDB)
 アウトバウンド:すべて許可
KMS(データの暗号化と鍵の安全管理)【ストレージとバックアップの暗号化が必要】
 独自KMSキーを使うことを推奨(鍵操作、監査)
Secrets Manager(機密情報の安全管理)シークレット(秘密情報)の作成が推奨
 MongoDB互換接続の認証情報
SSM Parameter Store(設定情報の一元管理)-
CloudTrail(操作履歴の記録・監査・追跡)【自動記録】
作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI)
データ操作は追跡できない(データプレーンAPI)
Config(リソースの構成状態・設定変更を記録)【Configが有効な場合】
クラスター設定の変更履歴・暗号化/バックアップ/ネットワーク準拠評価
GuardDuty(脅威を自動検出)【GuardDutyが有効な場合】
VPC経由のネットワーク/DNS異常通信検知

ログ・監視

ログ出力先ログの種類
CloudWatch Logsデータベースログ
CloudWatch Logs優先の原則
標準メトリクス
メトリクス名説明

制限値(固定値/ハードリミット/ソフトリミット)

固定値制限値
スナップショット保持期間1-35日

ハードリミット制限値
クラスターで使用できるストレージ最大128 TiB
リードレプリカ数15

ソフトリミット制限値
クラスター数/リージョン40
インスタンス数/クラスター16

AWS CLIのサンプルコード

CloudFormationのサンプルコード

Terraformのサンプルコード

料金計算

課金項目説明
インスタンス時間データベースインスタンスの稼働時間
ストレージ容量使用したストレージ容量
I/Oリクエスト100万I/Oリクエスト単位
バックアップストレージ保持期間を超えるバックアップ
データ転送インターネットへのデータ転送量
料金計算ツール

公式ページ

AWSドキュメント DocumentDB