はじめに
どーも、のぶこふです。
re:Inventも終わり、年の瀬が一層近く感じますね。
まだまだアップデートは把握しきれてませんが、毎年こうして大規模アップデートや新サービスの発表などはワクワクします。
あ、この記事はGFAMアドベントカレンダー2021の5日目の記事です。
今回は、DBサービスの一つである「DynamoDB」に焦点を当てていきます。
ソースコードは触らずに、DynamoDBコンソールからの動作確認のみを行います。
今回のサービス一覧
Service名とか | 概要 |
---|---|
DynamoDB 12 | マネージドなNoSQLDB |
DynamoDB
まずは、簡単に概要を抑えておきます。
- 完全マネージド型のNoSQLデータベースサービス
- ハイスケーラブル、低レイテンシー
管理不要、高い信頼性
- SPOFが存在しない
- データは3箇所のAZに保存
- ストレージは必要に応じて、自動的にパーティショニングされる
プロビジョンドスループット
- デーブルごとにReadとWriteのスループットキャパシティを割り当てることができる。
- 例えば・・・
- 初期設定:Read:1,000、Write:100
- 書き込みワークロードが上がった:Read:500、Write:1,000
- この値は、DB運用中にオンラインで変更可能
ストレージ容量制限無し
- 使った分だけの従量課金
- ディスクやノードの増設作業は不要
整合性モデル
- Write
- 少なくとも2つのAZで書き込み完了確認がとれた時点
- Read
- デフォルト
- 「結果整合性」のある読み込み
- 最新の書き込み結果が、即時読み取り処理に反映されない可能性がある
- 「結果整合性」のある読み込み
- Consistent Read Option
- GetItem、Query、Scanでは「強力な整合性」のある読み込みオプションが指定可能
- Readリクエストを受け取る前までのWriteが全て反映されたレスポンスを保証
- Capacity Unitを2倍消費
- GetItem、Query、Scanでは「強力な整合性」のある読み込みオプションが指定可能
- デフォルト
Capacity Unit?
- ユニットと呼ばれる単位
- それぞれ25ユニットまで無料
- Write
- 最大1KBのデータを1秒に1回書き込み可能
- Read
- 最大4KBのデータを1秒に1回読み取り可能
- 強い一貫性を持たないのであれば、1秒に2回読み取り可能
- 最大4KBのデータを1秒に1回読み取り可能
ユースケース
- KVS
- ユーザ情報の格納
- 広告やゲーム等のユーザ行動履歴DB
- ユーザIDごとに複数の行動履歴を監理
- モバイルアプリのバックエンド
- モバイルアプリから直接参照
- その他
- バッチ処理のロック監理
- フラッシュマーケティング
- ストレージのインデックス
DynamoDBの構成
テーブル設計
テーブル操作(一部
名称 | 操作 |
---|---|
GetItem | Partation Keyを条件として指定し、1件のアイテムを取得 |
PutItem | 1件のアイテムを書き込む |
Update | 1件のアイテムを更新 |
Delete | 1件のアイテムを削除 |
Query | Partation KeyとSort Keyの複合条件にマッチするアイテム群を取得※ |
BatchGet | 複数のPRIMARY KEYを指定してマッチするアイテム群を取得 |
Scan | テーブルを総なめ※ |
※最大1MBのデータを取得可能
使い方
テーブルの作成
項目名 | 設定値 |
---|---|
テーブル名 | User |
パーティションキー | UserId:文字列 |
ソートキー | 無し |
設定 | デフォルト設定 |
デフォルト設定 | 特になし |
タグ | Key:Name、Value:Test |
アイテムの作成
※SDKを介して作成したり、追加したりのほうが汎用的だと思いますが、まずはマネコンから・・・
// JSONの例
{
"UserId": "0001",
"Name": "Nobkovskii"
}
アイテムの検索
テーブルの削除
DynamoDB Accelerator(DAX)
リアルタイム処理や一時的なアクセス集中への対応など、読み取りが多い場合に爆速になってくれるやつ。
逆に、書き込みが多い・読み取りが少ない場合は、効果は今ひとつ。
- フルマネージド型高可用性インメモリキャッシュ3
- DynamoDBに特化
- DynamoDB APIと互換性があり、アプリケーションのロジックを変更する必要は無し。
- ミリセカンド→マイクロセカンドへの、最大10倍のパフォーマンス向上を実現する!
- キャッシュがあれば使う、なければオリジンから取得してキャッシュする
- DynamoDBに特化
- マネジメントコンソールやSDKから簡単に使える
- VPC環境で動作
おわりに
今回は、DynamoDBの概要調査と、コンソール上から簡単に触ってみました。
本来はSDKを介して、アイテムのCRUD(追加・検索・更新・削除)をしていくのが筋だと思いますが、概要を掴むということで、コンソール上からの操作までとしました。
テーブルの作成や項目追加も、サクッとできて、良い感じでした。
今回の内容だけでは「DynamoDBの良さ」は、全然理解に至らないので、アプリなどに組み込ませて使ってみたいです。
今回はここまでです。
ありがとうございました。