Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

インメモリアクセラレーションと DAX

Amazon DynamoDB はスケールとパフォーマンスのために設計されています。ほとんどの場合、DynamoDB 応答時間は1桁台のミリ秒単位で測定できます。ただし、マイクロ秒の応答時間を必要とする、一部のユースケースがあります。これらのユースケースでは DynamoDB Accelerator (DAX) が整合性データへのアクセス時に素早い対応を実現しています。

DAX は、DynamoDB と互換性のあるキャッシュサービスで、条件の厳しいアプリケーションで高速なインメモリパフォーマンスを可能にします。DAX は主に 3 つの状況を取り上げています。

  1. インメモリキャッシュとして DAX は 1 桁台のミリ秒単位からマイクロ秒単位まで結果整合性のある読み込みワークロードの応答時間を短縮します。

  2. DAX は Amazon DynamoDB を使用する API と互換性を持つマネージド型サービスを提供することで、運用上そしてアプリケーションの複雑性を減少させています。これにより、既存のアプリケーションと使用する場合に必要な変更を最小限に抑えることができます。

  3. 読み取りの多いワークロードや急激に増大するワークロードにおいて、DAX はスループットを強化したり、読み込みキャパシティーユニットを必要以上にプロビジョニングしないようにすることで運用コストの節約を可能にします。個々のキーで繰り返し読み取りが必要なアプリケーションにおいては特にメリットがあります。

DAX はサーバー側暗号化をサポートします。保管時の暗号化を使用して、DAX によってディスクに保持されるデータが暗号化されます。DAX は、プライマリノードからリードレプリカへの変更の伝播の一部として、データをディスクに書き込みます。詳細については、「保管時の DAX 暗号化」を参照してください。

DAX のユースケース

DAX は、マイクロ秒のレイテンシーで DynamoDB テーブルからの結果整合性データへのアクセスを提供します。マルチ AZ DAX クラスターは、1 秒間に数百万件のリクエストを処理できます。

DAX は次のような用途に適しています。

  • 可能な限り迅速な読み込み応答時間を必要とするアプリケーション。たとえば、リアルタイム入札、ソーシャルゲーム、トレーディングアプリケーションなどです。 DAX はこれらのユースケースに対して、高速なインメモリ読み込みパフォーマンスを提供します。

  • 少数の項目を他のものよりも頻繁に読み込むアプリケーション。たとえば、人気商品の 1 日限りのセールを行う e コマースシステムを考えてみます。セール中は、その商品 (および DynamoDB 内のそのデータ) に対する需要が他の商品全般に比べて急増します。「ホット」キーおよび不均一なデータディストリビューションの影響を緩和するために、1 日限りのセールが終了するまで、読み込みアクティビティを DAX キャッシュにオフロードできます。

  • 読み込み負荷が高いが、コストも重要なアプリケーション。DynamoDB を使用する場合、アプリケーションが要求する読み込み数を 1 秒ごとにプロビジョニングします。読み込みアクティビティが上昇すれば、テーブルにプロビジョニングされた読み込みスループットも増加し (追加コストがかかり) ます。代わりに、アプリケーションからのアクティビティを DAX クラスターにオフロードして、そうしない場合に購入する必要がある読み込み容量ユニットの量を削減できます。

  • 大規模データセットに対して繰り返し読み込みが必要なアプリケーション。このようなアプリケーションは、データベースリソースを他のアプリケーションから引き離してしまう可能性があります。たとえば、ある地域の気象データの長期実行分析などは、一時的に DynamoDB テーブルのすべての読み込みキャパシティーを消費し、同じデータにアクセスする必要のある他のアプリケーションに悪影響を与える可能性があります。DAX を使用することで、代わりにキャッシュデータに対して気象分析を実行できます。

DAX は次のような用途には適していません

  • 結果的に整合性のある読み込みを必要とする (または結果的に整合性のある読み込みを許容できない) アプリケーション。

  • 読み込みでマイクロ秒の応答時間を要求しない、または基礎となるテーブルから繰り返される読み込みアクティビティをオフロードする必要がないアプリケーション。

  • 書き込み付加が高い、またはそれほど多くの読み込みアクティビティを実行しないアプリケーション。

  • DynamoDB ですでに別のキャッシングソリューションを使用しており、そのキャッシングソリューションと連携するために独自のクライアント側ロジックを使用しているアプリケーション。

使用に関する注意事項

  • DAX を使用できる AWS リージョンのリストについては、https://aws.amazon.com/dynamodb/pricing を参照してください。

  • DAX は、Go、Java、Node.js、Python、および .NET で記述されたアプリケーションをサポートします (これらのプログラミング言語用に AWS が提供するクライアントを使用します)。

  • DAX は Transport Layer Security (TLS) をサポートしていません。

  • DAX は EC2-VPC プラットフォームでのみ使用できます。(EC2-Classic プラットフォームのサポートはありません。)

  • 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" }