Please enable JavaScript.
Coggle requires JavaScript to display documents.
DynamoDB - Coggle Diagram
DynamoDB
特徴
フルマネージド
低レイテンシー
無制限性能拡張
高可用性
3箇所のAZに保存
read,writeのプロビジョンド
readとwriteのスループットキャパシティをテーブルごとに設定できる
オンデマンドでも利用可能
状況に応じてキャパの設定が可能
どのくらい使うか分からない場合に有効
ストレージの容量制限がない
キーバリュー型のワイドカラム型
結果整合性モデル
結果整合性と分散
writeに関しては2つのAZで書き込み完了した時点で完了
パーティショニングで分散処理をしている
ユースケース
ビッグデータの大量データの収集蓄積、分析
Hadoopと連携してビッグデータ処理
大規模サービスデータ高速処理が必要なもの向け
多くのユーザが同時にアクセスするデータとか
ユーザ行動管理
ログとか
設計
データベースは存在せず、テーブルから作る
例えば
項目がユーザ
属性が名前、年齢とか
テーブルと項目と属性からなる
DAX
インメモリ
DynamoDBに行く前にキャッシュにいく
DyanmoDBだけでも高速だがさらに高速
レイテンシーは10倍とかも良くなる
用途
トレーディング処理とか
クラスタを作る
グローバルテーブル
結果整合性のみ
リージョン間のレプリケーション
ただの同期だね
苦手・得意なところ
苦手なこと
大量な読み書き
joinとかトランザクション、データ詳細検索
得意
大量に来るが単純なデータ
複雑な処理が絡まない
行動ログとか
インデックス
暗黙的なキー
ハッシュキー
PKみたいなもの
ハッシュ化してパーティション
テーブル間では重複ある
レンジキー
ハッシュキーだけではデータ特定できないもの
複合キーですね
明示的なキー
ローカルセカンダリインデックス
テーブル作成前
レンジキー以外で検索したい場合
グローバルセカンダリインデックス
テーブル作成後
ハッシュキーの属性の代わり
使いすぎると性能が落ちてコストが掛かる
Streams
データの変更理履歴
用途
データ更新をトリガーとしてなにかする
更新処理が走ったからレプリケーションしようとか
データ更新時の通知
Lambdaをキックする感じ
活用のコツ
どこでサーバレスを使ってコスト削減、効率化、高速かできないかと検討する
まずDynamoDBファーストでできないか考える
オンデマンドバックアップ
数百TB可能