Amazon DynamoDB
ミリ秒単位の応答速度を持つフルマネージドの NoSQL データベースサービス
何ができるか
Amazon DynamoDB は、どんな規模のアプリケーションでもミリ秒単位の一貫した応答速度を提供するフルマネージドの NoSQL データベースサービスです。テーブルの作成とデータの読み書きだけに集中すればよく、サーバーの管理、パッチ適用、クラスター運用などは一切不要です。1 日に数兆件のリクエストを処理でき、毎秒数千万件の読み書きにも対応します。
どのような場面で使うか
モバイルアプリやゲームのユーザーデータ管理、EC サイトのショッピングカート、IoT デバイスからのセンサーデータ収集、セッション管理、リアルタイムの広告配信データ、ソーシャルメディアのフィード管理など、高速な読み書きが求められるアプリケーションで利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
図書館のカード目録に例えるとわかりやすいでしょう。カード目録 (DynamoDB) では、著者名や書名 (キー) を指定すれば、膨大な蔵書の中から瞬時に目的の本 (データ) を見つけられます。蔵書がどれだけ増えても検索速度は変わりません。ただし、カード目録にない条件 (キー以外) での検索は苦手です。
DynamoDB とは
Amazon DynamoDB は、AWS が提供するサーバーレスの NoSQL データベースサービスです。NoSQL とは、従来のリレーショナルデータベース (RDS など) とは異なり、テーブル間の結合 (JOIN) を使わず、キーと値のペアやドキュメント形式でデータを管理する方式です。この設計により、データ量やアクセス数が増えても性能が劣化しにくいという特徴があります。
主な特徴
DynamoDB の最大の特徴は、規模に関係なく一桁ミリ秒の応答速度を維持できる点です。データが 1 万件でも 1 億件でも、キーを指定した読み書きの速度はほぼ変わりません。また、サーバーレスで動作するため、インフラの管理が完全に不要です。オンデマンドキャパシティモードを選べば、実際の読み書き回数に応じた従量課金となり、トラフィックの予測が難しいアプリケーションでも無駄なコストが発生しません。
データモデル
DynamoDB のテーブルは、パーティションキー (必須) とソートキー (任意) で構成される主キーを持ちます。各アイテム (行) は JSON に似た形式で、属性 (列) を柔軟に追加できます。リレーショナルデータベースのように事前にスキーマを厳密に定義する必要がなく、アイテムごとに異なる属性を持つことができます。グローバルセカンダリインデックス (GSI) を作成すれば、主キー以外の属性でも効率的に検索できます。
はじめかた
DynamoDB を使い始めるには、DynamoDB コンソールで「テーブルの作成」をクリックします。テーブル名とパーティションキーを指定するだけで、数秒でテーブルが作成されます。コンソール上でアイテムの追加・編集・削除ができるほか、AWS SDK を使ってプログラムからデータを操作できます。無料利用枠として、25GB のストレージと月間 2 億 5000 万回の読み書きが永続的に提供されています。
Azure・オンプレミスとの比較
AWS の優位点
- 完全サーバーレスで運用管理が一切不要であり、データ量やアクセス数に関係なく一桁ミリ秒の応答速度を維持できる
- 25GB のストレージと月間 2 億 5000 万回の読み書きが永続的に無料で提供され、小規模アプリケーションを実質無料で運用できる
- オンデマンドキャパシティモードにより、トラフィック予測なしで自動スケーリングが可能で、キャパシティプランニングが不要
注意点
- キー以外の属性での検索はスキャン操作となり、データ量に比例してコストと時間がかかるため、アクセスパターンを事前に設計すること
- オンデマンドモードは便利だが、大量アクセスが予測できる場合はプロビジョンドモードの方がコスト効率が良い場合がある
- 無料利用枠が永続的に提供されるため、小規模なアプリケーションであれば実質無料で運用できる
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。