DynamoDB Accelerator (DAX) とインメモリアクセラレーション
Amazon DynamoDB はスケールとパフォーマンスのために設計されています。ほとんどの場合、DynamoDB の応答時間は 1 桁台のミリ秒単位で測定できます。ただし、マイクロ秒の応答時間を必要とする一部のユースケースがあります。これらのユースケースでは DynamoDB Accelerator (DAX) が整合性データへのアクセス時に素早い対応を実現します。
DAX は、DynamoDB と互換性のあるキャッシュサービスで、条件の厳しいアプリケーションで高速なインメモリパフォーマンスを可能にします。DAX は、次の 3 つのコアシナリオに対応します。
-
インメモリキャッシュとしての DAX は、1 桁台のミリ秒単位からマイクロ秒単位まで、結果整合性のある読み込みワークロードの応答時間を短縮します。
-
DAX は、DynamoDB と API の互換性のあるマネージドサービスを提供することにより、オペレーションとアプリケーションの複雑さを軽減します。したがって、既存のアプリケーションで使用するために必要なのは最小限の機能変更だけです。
-
読み込みの多いワークロードや急激に増大するワークロードにおいて、DAX はスループットを強化することや、読み込み容量ユニットを必要以上にプロビジョニングしないようにすることで運用コストの節約を可能にします。個々のキーで繰り返し読み込みが必要なアプリケーションにおいては特にメリットがあります。
DAX はサーバー側の暗号化をサポートします。保存時の暗号化では、ディスク上で DAX によって保持されるデータが暗号化されます。DAX は、プライマリノードからリードレプリカへの変更の伝播の一部として、データをディスクに書き込みます。詳細については、「」を参照してください保管時の DAX 暗号化
DAX は転送中の暗号化もサポートしており、アプリケーションとクラスター間のすべてのリクエストとレスポンスがトランスポートレベルセキュリティ (TLS) によって暗号化され、クラスターへの接続はクラスター x509 証明書の検証によって認証されます。詳細については、「」を参照してください転送時の DAX 暗号化
トピック
DAX のユースケース
DAX は、マイクロ秒のレイテンシーで DynamoDB テーブルからの結果整合性データへのアクセスを提供します。マルチ AZ DAX クラスターは、1 秒間に数百万件のリクエストを処理できます。
DAX は、次のタイプのアプリケーションに最適です。
-
可能な限り迅速な読み込み応答時間を必要とするアプリケーション。たとえば、リアルタイム入札、ソーシャルゲーム、トレーディングアプリケーションなどです。DAX はこれらのユースケースに対して、高速なインメモリ読み取りパフォーマンスを提供します。
-
少数の項目を他のものよりも頻繁に読み込むアプリケーション。たとえば、人気商品の 1 日限りのセールを行う e コマースシステムを考えてみます。セール中は、その商品 (および DynamoDB 内のそのデータ) に対する需要が他の商品全般に比べて急増します。「ホット」キーおよび不均一なトラフィックディストリビューションの影響を緩和するために、1 日限りのセールが終了するまで、読み込みアクティビティを DAX キャッシュにオフロードできます。
-
読み込み負荷が高いが、コストも重要なアプリケーション。DynamoDB を使用する場合、アプリケーションが要求する読み込み数を 1 秒ごとにプロビジョニングします。読み込みアクティビティが上昇すれば、テーブルにプロビジョニングされた読み込みスループットも増加し (追加コストがかかり) ます。または、アプリケーションからのアクティビティを DAX クラスターにオフロードして、そうしない場合に購入する必要がある読み込みキャパシティユニットの数を削減できます。
-
大規模データセットに対して繰り返し読み込みが必要なアプリケーション。このようなアプリケーションは、データベースリソースを他のアプリケーションから引き離してしまう可能性があります。たとえば、リージョンの天気データの長期分析では、DynamoDB テーブルのすべての読み込みキャパシティが一時的に消費される可能性があります。この状況は、同じデータにアクセスする必要がある他のアプリケーションに悪影響を及ぼします。DAX を使用することで、代わりにキャッシュデータに対して気象分析を実行できます。
DAX は、次のタイプのアプリケーションには最適ではありません。
-
強整合性のある読み込みを必要とする (または結果整合性のある読み込みを許容できない) アプリケーション。
-
読み込みでマイクロ秒の応答時間を要求しない、または基礎となるテーブルから繰り返される読み込みアクティビティをオフロードする必要がないアプリケーション。
-
書き込み負荷の高いアプリケーション。書き込み量が多い場合、クラスター内の DAX ノード間のレプリケーションが増加します。これにより、リソースの消費量が増加し、可用性の問題が発生するリスクがあります。
-
読み込みの繰り返しが少ないアプリケーション。DAX は、キャッシュヒットレートが 90% を超える場合に最適に動作します。キャッシュヒットレートが低いとキャッシュミスが増加し、DAX クラスター全体でより多くのリソースが消費されます。
DAX の使用に関する注意事項
-
DAX を使用できる AWS リージョンのリストについては、「Amazon DynamoDB の料金表
」を参照してください。 -
DAX は、Go、Java、Node.js、Python、および .NET で記述されたアプリケーションをサポートします (これらのプログラミング言語用に AWS が提供するクライアントを使用します)。
-
DAX は EC2-VPC プラットフォームでのみ使用できます。
-
DAX クラスターサービスロールポリシーは、DynamoDB テーブルに関するメタデータを維持するために
dynamodb:DescribeTable
アクションを許可する必要があります。 -
DAX クラスターは、格納する項目の属性名に関するメタデータを保持します。そのメタデータは (項目の有効期限が切れた後、またはキャッシュから削除された後でも) 無期限に保持されます。大量の属性名を使用するアプリケーションは、時間の経過につれて DAX クラスターのメモリ消耗を引き起こすことがあります。この制限は最上位の属性名のみに適用され、ネスト属性名には適用されません。問題が発生しやすい最上位の属性名の例としては、タイムスタンプ、UUID や ID があります。
この制限は属性名のみに適用され、その値には適用されません。以下のような項目に問題はありません。
{ "Id": 123, "Title": "Bicycle 123", "CreationDate": "2017-10-24T01:02:03+00:00" }
ただし、以下のような項目は、十分な数があり、それぞれ別のタイムスタンプがある場合は、問題になります。
{ "Id": 123, "Title": "Bicycle 123", "2017-10-24T01:02:03+00:00": "created" }