DynamoDBとは
完全マネージド型のNoSQLデータベースサービス
- ハイスケーラブルで無制限に性能を拡張することができる
- 負荷が高くなっても応答速度が低下しない低レイテンシー
- 高可用性(データは3つのAZに保存)
- フルマネージドサービス
- データの読み取りと書き込みに特化(高度な最適化)されている
- ストレージの容量制限がない
データ容量の増加に応じたディスクやノードの増加は一切不要
特徴
- キーバリュー(ワイドカラム型)のためキーに対するバリューのCRUD処理
- 簡易なクエリやオーダー
- 数万人がアクセスするようなビックデータのデータ処理など
パーティショニング
大量のデータを高速に処理するためにパーティショニングによる分散処理を実施している
テーブルに対して3つのパーティショニングを作ることによって並列処理を行い結果的に処理が高速になる
できないこと
- 一般的にSQLができることはできない(JOIN/TRANSACTION/COMMIT/ROLLBACKなど)
- データの検索や結合処理などは向いていない
- 大量のデータの読み書きはコストがかかる
整合性モデル
書き込み | 読み取り | |
---|---|---|
結果整合性 | 少なくとも2つのAZ(2/3)での書き込みが確認が取れた時点で完了 | デフォルトで結果整合性モデルを利用しているので最新の書き込み結果がすぐに反映されない可能性がある |
強い整合性 | オプションとして強い整合性モデルがあり全ての読み込みが完了している状態 |
料金システム
DynamoDBテーブルでのデータの読み取り、書き込み、保存、ユーザーが有効化したオプション機能によって料金が決まり、2種類のキャパシティモードがある。
オンデマンドキャパシティモード
こちらは、テーブルに対してアプリケーションが実行した、データの読み取り、書き取りに対して生じる。
- 使った分だけ金額がかかる
- アプリケーションのトラフィックの予測ができない
プロビジョニング済みキャパシティモード
こちらは、アプリケーションに必要となるであろう1秒当たりの読み込みや書き込み回数の指定をする。
- 必要となるキャパシティを予想して料金のコントロールができる
- アプリケーションのトラフィックの予測ができる
DynamoDBのその他の特徴
DynamoDB Streams
DynamoDBテーブルに保存されたデータの追加・変更・削除の変更情報を暗号化してログに保存しておく仕組みのこと
DynamoDB Accelerator(DAX)
DynamoDBにインメモリキャッシュ型の機能を付与することができる。
おわりに
今回はDyanamoDBを簡単にまとめてみました。
まだ深くは学習できていないので自分で実際に触ってみて覚えていこうと思います。