MEGAZONE

MEGAZONEブログ

Dive deep into Amazon DynamoDB
re:Invent 2023 Serverless Compute

Dive deep into Amazon DynamoDB

Pulisher : Managed & Support Center キム・ソンド
Description : AWS DynamoDBのスケーラビリティと設計に関する紹介セッション

AWS DynamoDBについて詳しく学び、DynamoDBの拡張性、均一な応答時間を提供するためにどのように設計されているか確認できるセッションです。

OnDemandとグローバルテーブル、DynamoDB Stream、トランザクションなどの機能がどのように動作し、活用できる方法を共有してもらうためにセッションを申し込みました。

DynamoDBでテーブル(またはGSI)の拡張方法は下記の通りです。

1.テーブル、パーティション、レプリケーション
  a. DynamoDBは複数のデータを複数のパーティションに分けて保存し、各パーティションは独立して処理します。
  b. 高い可用性と耐久性のため、データは複数の複製本で保存されており、要求は該当パーティションのレプリカを通じてサービスします。
2.基本キー (PK, [SK])
  a. テーブルを生成する際に指定する基本キー(Primary Key)は、データの固有識別子です。
  b. 複合キーとして基本キー(PK)とソートキー(SK)を使用することができ、これらのキーは、データをソートしてクエリするときに便利です。
3.水平的拡張性
  a. DynamoDBは水平的な拡張を通じて大容量のデータとトラフィックを処理します。
  b. パーティションキーに基づいてデータを複数のパーティションに分割し、各パーティションは独立して拡張可能な単位で処理します。
4.制限事項
  a. DynamoDBには、テーブルおよびインデックスごとの最大保存容量、読み取り/書き込み処理量に制限があります。

DynamoDBはデータを効果的に拡張、分割して処理してくれ、基本キー、水平拡張を通じて大規模なアプリケーションの要件を満たすことができます。

Amazon DynamoDBのOn-Demandは下記のように運営されます。

1.ユーザーが事前に容量を割り当てる必要がありません。
2.毎秒100万回以上のリクエストを処理できる性能を提供します。
3.トラフィックの量によってDynamoDBは読み書き処理量を自動的に調整します。
4.On-Demandモードでは、同時に処理できる要求数を制限するためにRate Limiting(Control)を使用します。
5.使用した分だけ費用が請求されるため、トラフィックが不規則または予測が難しい場合にコストを最適化することができます。

Global Admission Controlは、固定された速度に応じてトークンを生成して制御します。

サーバー要求時、そのトークンがまだ存在するかどうかを確認して制御(Rate Limiting)します。

上側が理想的なKeyで、下側が実際に使用するKeyです。

アプリケーションを使っていると、どうしても片側に偏ってしまいます。

DynamoDBの場合、2倍まではスロットリングが発生しません。

2倍以上の場合、Scale-Outするまで若干のスロットリングが発生することがあります。

DynamoDBの詳細な内容を確認し、内部的にしっかりとした構造を構築していることが分かりました。
NoSQLを使う場合は、高速なデータ送受信が可能なDynamoDBをおすすめして、アプリケーション構築に容易に使えることが分かりました。

ブログ一覧

この記事の読者はこんな記事も読んでいます