Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DynamoDB の好きなところ

Yuki Toyoda
September 24, 2020

DynamoDB の好きなところ

社内の「実践AWSゼミ」にて発表したスライドです

Yuki Toyoda

September 24, 2020
Tweet

More Decks by Yuki Toyoda

Other Decks in Technology

Transcript

  1. DynamoDB とは
 • マネージドの NoSQL。
 • ドキュメント指向。
 • 読み込み書き込みが速い。
 ◦

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

  2. 整合性モデル
 • 一番知っておいた方がいいことかも。
 • 書き込み
 ◦ 2つ以上の AZ で書き込み完了確認が取れた時点で、書き込みが承認される。 


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

  3. DynamoDB の前身 Dynamo
 • 2007 年に「Dynamo: Amazon’s Highly Available Key-value

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

  4. 個人的に思ういいところ
 • Lambda と相性がいいので、単純に Lambda の永続化機構として使いやすい。
 • 基本的には保存容量を気にしなくていいので、無限に容量が膨らむ可能性のある データを入れておく際に安心して入れておける。
 •

    Batch Write で億単位のデータを高速に書き込みできる vs Redis。
 • キャパシティがテーブル単位なので、設定を間違えても死ぬのはそのテーブルだ け。
 • Dynamo Streams と組み合わせで、CQRS + ES アーキテクチャをこれひとつで実現 できる。