助け合いフォーラム

AWS

AWS ソリューションアーキテクト - アソシエイト(SAA-C03)
問題ID : 35733
問題を開く
Amazon DynamoDBにおいて、世界各地にいるユーザーの読み込みと書き込みが高速化する機能はどれか。

正解

グローバルテーブル

解説

DynamoDBのグローバルテーブルは、DynamoDBテーブルを複数のリージョンにまたがって運用できるサービスです。複数のリージョンにDynamoDBテーブルが自動的にレプリケートされ、ユーザーは地理的に近いリージョンのDynamoDBテーブルへ高速な読み込みと書き込みが可能です。データのレプリケーションは通常1秒以内に完了し、リージョン間のデータ冗長化によって高可用性が確保されます。

グローバルテーブルでは、通常は1秒以内にグローバルテーブル内の他リージョンのDynamoDBテーブルすべてにレプリケートされます。また、複数リージョンでデータが冗長化されるので高可用性が確保されます。

したがって正解は
・グローバルテーブル
です。

グローバルテーブルのレプリケーション先のリージョンはユーザーが指定します。


その他の選択肢については、以下のとおりです。

・DynamoDB Accelerator(DAX)
DynamoDBのインメモリキャッシュクラスタです。
キャッシュを利用して読み込みは高速化できますが、書き込みは高速化できないので誤りです。

・DynamoDB Streams
テーブルに対して行われた直近の24時間の変更(追加や更新、削除)をログに保存する機能です。
読み込みと書き込みの高速化には関係ないので、誤りです。

・ポイントインタイムリカバリ
DynamoDBの自動バックアップ機能です。
読み込みと書き込みの高速化には関係ないので、誤りです。

参考

【Amazon DynamoDB】
Amazon DynamoDBは、AWSが提供するフルマネージド型のNoSQLデータベースサービスです。「NoSQL」は多くの場合、SQLを使用する「リレーショナルデータベース(RDB)」に属さないデータベースという意味で使われます。

下記はAWSが提供する主なデータベースサービスです。


本項では、DynamoDBのデータ構造、高可用性、キャパシティ、データ参照時の一貫性、自動スケール、Time To Live(TTL)について解説します。

■データ構造
DynamoDBはKey-Value構造を基本としつつ、JSON形式のようなドキュメント型の柔軟性も兼ね備えています。

○Key-Value型
DynamoDBでは、Key-Value型という「保存するデータ(Value)」と、それを特定するための「キー(Key)」のペアで構成される形式のデータを扱います。例えば「ユーザーが保有しているアイテム」を管理するには、以下のように格納できます。


新たにアイテムが追加された場合や、初めて保有するアイテムを登録する場合でも、既存のデータ構造を変更することなく新しい項目を追加できます。
Key-Value型で構成されたデータの集合を「テーブル」と呼びます。複数のテーブルを結合して分析するような用途よりも、上記のように単一のデータを高速に格納・取得するシンプルな利用に向いています。
シンプルな構造のためパフォーマンスが非常に高く、ピーク時には1秒あたり最大2000万件のリクエストに対応可能です。さらに、ストレージに上限がないため、非常に高いスケーラビリティを実現します。

○ドキュメント型
DynamoDBでは、階層構造を持つ「ドキュメント型」のデータも扱うことができます。


構造的にはKey-Value型をベースとしていますが、ドキュメント型ではネストされた複雑なデータ構造もJSON形式で格納可能です。

DynamoDBは「スキーマレス」なデータベースで、属性の追加や変更を柔軟にできます。スキーマとはデータベースの構造定義のことを指します。通常、項目を追加する際にはスキーマの定義変更とデータ移行が必要ですが、DynamoDBではプライマリキー以外の属性に関しては事前定義が不要であり、任意の項目を動的に追加できます。さらに、DynamoDBではテーブルにインデックスを定義することによって、データへの高速アクセスが可能です。

■キャパシティ
DynamoDBでは、読み書きの処理量と課金体系が密接に関係しています。以下の2つの利用モードが提供されています。

○オンデマンドモード
読み書きリクエスト数に応じた従量課金なので、アクセス頻度が予測不能なワークロードに適しています。

○プロビジョンドモード
事前に1秒間あたりの読み書き量(キャパシティユニット)を設定する方式で、アクセス頻度が予測できるワークロードに適しています。

プロビジョンドモードの書き込み・読み込みは、「キャパシティユニット」という単位で管理されています。これは1秒間にどれだけ読み込み・書き込みを行うかを予約する設定で、容量が大きいほど料金がかかります。


初期値はRCU(Read Capacity Unit)/WCU(Write Capacity Unit)ともに5に設定されており、ユーザーは随時変更可能です。また、DynamoDBは負荷に応じてキャパシティユニットを自動でスケーリングできるため、一定のパフォーマンスを維持しつつ、コストを抑えることが可能です。
大規模な運用が見込まれる場合は「リザーブドキャパシティ」の利用が推奨されます。RCU/WCUを100ユニット単位で1年または3年契約で予約購入することで、通常のプロビジョンドモードよりもコストを削減できるプランです。

・キャパシティユニットとパーティション
パーティションの数やサイズは、プロビジョニングしたキャパシティユニットの値に応じてAWS側で自動的に算出・調整されます。キャパシティユニットが大きくなると、対応するパーティション数も増加し、スループットが維持されます。

■高可用性
○3つのAZにデータを分散して保存
DynamoDBは、単一障害点(SPOF: Single Point Of Failure)を排除した設計となっており、高い可用性と耐障害性を実現しています。データは、3つの異なるAZに自動的にレプリケートされ、障害発生時にも可用性が維持されます。


各AZに保存されるデータは「パーティション」単位で分割されており、パーティション分散により、データが特定のノードに集中しないようになっています。 これにより、プロビジョニングされたスループットの安定的な確保が可能です。なお、パーティションの管理と分散はAWSが自動で行うため、ユーザーが設定する必要はありません。

○バックアップ
DynamoDBでは、自動で行う「ポイントインタイムリカバリ(PITR)」と手動で行う「オンデマンドバックアップ」の2種類のバックアップ方式が提供されています。

・ポイントインタイムリカバリ(PITR)
有効化することで、過去35日間の任意の時点にデータを復元できる差分バックアップ機能が利用可能です。自動的かつ継続的にバックアップが取得されるため、復旧時の操作が容易です。

・オンデマンドバックアップ
ユーザーが任意のタイミングで、マネジメントコンソールやAPIを通じて完全なバックアップを取得できます。

○S3へのエクスポート
DynamoDBは、既存のテーブルデータをAmazon S3に直接エクスポートする機能を提供しています。エクスポートは、アプリケーションコードを記述することなく、簡単に実行できます。


S3へのエクスポートには、内部的にポイントインタイムリカバリ(PITR)の仕組みを利用しているため、事前にPITRを有効化しておく必要があります。

■データ参照時の一貫性
アプリケーションがデータを書き込むと、DynamoDBは3つのAZにレプリケートされたデータのうち、2つへの書き込みが成功した時点で処理を完了と見なします。残り1つのAZには非同期的にレプリケーションが行われるため、一時的に古いデータが参照される可能性があります。
DynamoDBでは2種類の読み込みモードが提供されています。

○結果整合性のある読み込み(デフォルト)
読み込み時に直前の更新が反映されていない可能性がありますが、時間の経過とともに整合性が確保されます。一時的に古いデータが取得されることが許容されるケースに適しています。

○強い整合性のある読み込み
レイテンシーが高くなる可能性がありますが、常に最新のデータを取得できます。

■自動スケール
DynamoDBでは、データ量やトラフィックの増加に応じて自動的にスケールアウト(拡張)されます。ノードの追加やディスク容量の管理などをユーザーが行う必要はなく、ダウンタイムなしで継続的にサービスを提供できます。

■Time To Live(TTL)
Time To Live(TTL)は、指定した時刻に一時データなどを自動で削除する機能です。項目にTTL属性を設定することで、期限を過ぎたデータが自動的に削除されます。削除処理は完全に自動で行われ、追加の管理作業やDynamoDB側での課金は発生しません。不要なデータを効率的に削除することで、ストレージコストの最適化にもなります。

【DynamoDB Streams】
DynamoDB Streamsは、テーブルに対して行われた直近24時間の変更(追加・更新・削除)をログとして保持する機能です。ストリームを利用することで、いつ・どのような更新が行われたかを追跡できます。
ログはアプリケーションからリアルタイムに参照可能で、変更に応じたイベント駆動処理を構築できます。たとえば、特定の更新をトリガーにアラートを発報する、プロフィール画像の変更をフレンドに通知するといったユースケースが考えられます。
なお、Streamsは非同期で動作するため、元のテーブルのパフォーマンスに影響を与えることはありません。


【DynamoDB Accelerator(DAX)】
DynamoDB Accelerator(DAX)は、DynamoDB向けのインメモリキャッシュサービスです。DAXを利用することで、通常ミリ秒単位のレスポンスを、マイクロ秒レベルまで短縮できます。
DAXのキャッシュからデータを取得できる場合、DynamoDB自体への読み込みリクエスト回数が減少するため、パフォーマンス向上とコスト削減の両立が可能です。


Amazon DAXクラスターでは、保管時の暗号化と転送中の暗号化の両方とも、クラスター作成時にのみ設定できます。既存のクラスターに対して後から暗号化設定を変更することはできません。そのため、暗号化を実装するには、既存のクラスターを削除し、必要な暗号化設定を有効にして新しいクラスターを作成する必要があります。

【グローバルテーブル】
DynamoDBのグローバルテーブルは、DynamoDBテーブルを複数のリージョンにまたがって運用できるサービスです。複数のリージョンにDynamoDBテーブルが自動的にレプリケートされ、ユーザーは地理的に近いリージョンのDynamoDBテーブルへ高速な読み込みと書き込みが可能です。データのレプリケーションは通常1秒以内に完了し、リージョン間のデータ冗長化によって高可用性が確保されます。
グローバルテーブルのレプリケート先のリージョンはユーザーが指定します。
上に戻る

DynamoDB Accelerator(DAX)のデメリットは?

投稿日 2024/05/02

SB Creative出版のAWS認定ソリューションアーキテクト[アソシエイト]によるとDAXは下記のメリットがあるようです。
・読み取りの高速化
・RCUの確保を抑え、コスト削減

デメリットの記載がなく、この記載のみを鵜呑みにした場合なぜデフォルトではない?と疑問を待ちます。

デメリットが分かれば教えてください。

2024/05/06 22:24

質問の元は

SB Creative出版のAWS認定ソリューションアーキテクト[アソシエイト]によるとDAXは下記のメリットがあるようです。
デメリットの記載がなく、この記載のみを鵜呑みにした場合

ということですので、SB Creativeに質問すべき内容ではないかなと思います。


コメント

t tetsukai

2024/12/07 17:46

DAXは管理負荷もありますし、DAX利用の料金もかかります。あくまで読み取りの高速化をする際のアドオンサービスという位置付けだと思います。

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?