Amazon DynamoDB
ミリ秒レベルのレイテンシを提供するフルマネージド NoSQL データベース
何ができるか
Amazon DynamoDB は、キーバリュー型とドキュメント型の両方に対応するフルマネージド NoSQL データベースです。どんな規模のリクエストでもミリ秒単位のレスポンスを返し、サーバーのプロビジョニングやパッチ適用は一切不要です。オンデマンドモードではリクエスト数に応じた完全従量課金で利用できます。
どのような場面で使うか
モバイルアプリやゲームのユーザーデータ管理、EC サイトのショッピングカート、IoT デバイスのデータ格納、セッション管理など、低レイテンシかつ高スループットが求められるワークロードに最適です。サーバーレスアーキテクチャで Lambda と組み合わせるパターンが特に多く使われています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
超高速の図書カードシステムに例えられます。カード番号 (パーティションキー) を伝えるだけで、何百万枚のカードの中から瞬時に目的のカードを見つけ出します。カードの書式は自由で、項目を後から追加しても問題ありません。
DynamoDB とは
Amazon DynamoDB は、AWS が提供するフルマネージドの NoSQL データベースサービスです。テーブルを作成してデータを読み書きするだけで利用でき、サーバーの管理やキャパシティプランニングの手間がかかりません。データは自動的に 3 つのアベイラビリティゾーンに複製され、99.999% の可用性を実現します。
キー設計とデータモデル
DynamoDB のテーブルはパーティションキーとオプションのソートキーで構成されます。パーティションキーはデータの格納先を決定し、ソートキーは同一パーティション内のデータの並び順を制御します。このキー設計がパフォーマンスに直結するため、アクセスパターンを事前に分析してキーを決めることが重要です。セカンダリインデックス (GSI / LSI) を使えば、異なるキーでのクエリも可能です。
キャパシティモードと料金
DynamoDB にはオンデマンドモードとプロビジョンドモードの 2 つの課金方式があります。オンデマンドモードはリクエスト単位の従量課金で、トラフィックが予測しにくいワークロードに適しています。プロビジョンドモードは読み書きのキャパシティユニットを事前に指定する方式で、安定したトラフィックではコスト効率が良くなります。Auto Scaling を有効にすれば、プロビジョンドモードでも負荷に応じた自動調整が可能です。
はじめかた
DynamoDB コンソールで「テーブルの作成」をクリックし、テーブル名とパーティションキーを指定するだけでテーブルが作成されます。AWS SDK や CLI からすぐにデータの読み書きが可能です。DynamoDB Streams を有効にすると、データの変更をリアルタイムに Lambda 関数でキャプチャでき、イベント駆動型のアーキテクチャを構築できます。
注意点
- パーティションキーの設計がパフォーマンスに直結するため、特定のキーにアクセスが集中するホットパーティションを避ける設計が重要
- オンデマンドモードは便利だが、大量のリクエストが発生するとプロビジョンドモードより割高になる場合がある
- 無料利用枠として、25 GB のストレージと月間 2 億 5000 万回の読み書きリクエストが常時無料で利用可能
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。