Slide 1

Slide 1 text

DynamoDB の
 好きなところ
 AWS ゼミ 豊田


Slide 2

Slide 2 text

もくじ
 1. DynamoDB とは
 2. 整合性モデル
 3. DynamoDB の前身 Dynamo
 4. 個人的に思ういいところ


Slide 3

Slide 3 text

DynamoDB とは
 ● マネージドの NoSQL。
 ● ドキュメント指向。
 ● 読み込み書き込みが速い。
 ○ 読み込みは RTB サーバーでは満足できる速度ではないので、キャッシュの工夫や DynamoDB Acceralator (DAX) の助けが必要ではある 
 ○ プロダクトでは数億件のデータを入れているけれど、書き込みがよくスケールするのが本当に嬉し い✨
 ● AZ が関係ない。
 ● テーブル単位でキャパシティユニットによるスループットの管理ができる。


Slide 4

Slide 4 text

整合性モデル
 ● 一番知っておいた方がいいことかも。
 ● 書き込み
 ○ 2つ以上の AZ で書き込み完了確認が取れた時点で、書き込みが承認される。 
 ● 読み込み
 ○ 弱い整合性と強い整合性の2つを選べる。 
 ○ 2つ以上の AZ で書き込み完了した時点から読み取りが可能になる(弱い整合性なら)。 
 ○ 結果整合性を担保しているので、最新の書き込み状況がすぐには反映されないこともある。 
 ○ 強い整合性の場合は一貫性を担保できるが、お金を倍消費する。 
 ● 要するに一貫性が必要な場合には、使用するのは難しい。
 ○ その際は RDS を利用するなどするほうがよいかも。 


Slide 5

Slide 5 text

DynamoDB の前身 Dynamo
 ● 2007 年に「Dynamo: Amazon’s Highly Available Key-value Store」という論文で発 表された。
 ● Consistent Hashing を利用したパーティショニングを採用しており、マスターがいな い脱中心化アーキテクチャになっていた。
 ● 一貫性(consistency)を設定可能で、可用性、レイテンシ、一貫性のバランスを調整 可能にしていた。
 ● 書き込みの際のコンフリクトを許容。Vector Clock という機構でクライアントが情報 を読み取ってコンフリクトを解消できるようにしていた。
 ● シンプルなキーバリューストア(DynamoDB はドキュメント指向)
 ● これにインスパイアされて Apache Cassandra ができた。
 ● DynamoDB とはほぼ別物


Slide 6

Slide 6 text

個人的に思ういいところ
 ● Lambda と相性がいいので、単純に Lambda の永続化機構として使いやすい。
 ● 基本的には保存容量を気にしなくていいので、無限に容量が膨らむ可能性のある データを入れておく際に安心して入れておける。
 ● Batch Write で億単位のデータを高速に書き込みできる vs Redis。
 ● キャパシティがテーブル単位なので、設定を間違えても死ぬのはそのテーブルだ け。
 ● Dynamo Streams と組み合わせで、CQRS + ES アーキテクチャをこれひとつで実現 できる。