

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 DynamoDB Accelerator (DAX) 的記憶體內加速
<a name="DAX"></a>

Amazon DynamoDB 是專為擴展與效能所設計。在大多數情況下，DynamoDB 回應時間可以測量到個位數毫秒。但是，有些使用案例需要以微秒為單位的回應時間。針對這些使用案例，DynamoDB Accelerator (DAX) 在存取最終一致資料時可提供快速的回應時間。

DAX 是與 DynamoDB 相容的快取服務，可讓您利用快速的記憶體內效能，滿足高需求的應用程式。DAX 可解決三種核心案例：

1.  作為記憶體快取，DAX 會以十倍為單位 (從個位數毫秒到微秒) 來縮短最終一致讀取工作負載的回應時間。

1. DAX 可提供與 DynamoDB API 相容的受管服務，減少操作和應用程式的複雜度。因此，它只需要極少的功能變更，便能搭配現有應用程式使用。

1. 針對需要大量讀取或爆量的工作負載，DAX 會降低過度佈建讀取容量單位的需求，以此增加輸送量以及節省可能的操作成本。這對需要重複讀取個別索引鍵的應用程式特別有利。

DAX 支援伺服器端加密。使用靜態加密功能時，DAX 在磁碟上保留的資料會受到加密。DAX 將資料寫入磁碟，做為自主節點到僅供讀取複本的變更環節之一。如需更多詳細資訊，請參閱 [DAX 靜態加密](DAXEncryptionAtRest.md)。

DAX 也支援傳輸中加密功能，確保應用程式與叢集之間的所有請求和回應都經由 Transport Layer Security (TLS) 加密，並透過驗證叢集 x509 憑證對叢集的連線進行身分驗證。如需更多詳細資訊，請參閱 [DAX 傳輸中加密](DAXEncryptionInTransit.md)。

**Topics**
+ [DAX 使用案例](#DAX.use-cases)
+ [DAX 使用須知](#DAX.usage-notes)
+ [DAX 的運作方式](DAX.concepts.md)
+ [DAX 叢集元件](DAX.concepts.cluster.md)
+ [建立 DAX 叢集](DAX.create-cluster.md)
+ [DAX 與 DynamoDB 一致性模式](DAX.consistency.md)
+ [使用 DynamoDB Accelerator (DAX) 用戶端開發](DAX.client.md)
+ [管理 DAX 叢集](DAX.cluster-management.md)
+ [監控 DynamoDB Accelerator](DAX.Monitoring.md)
+ [DAX T3/T2 爆量執行個體](DAX.Burstable.md)
+ [DAX 存取控制](DAX.access-control.md)
+ [DAX 靜態加密](DAXEncryptionAtRest.md)
+ [DAX 傳輸中加密](DAXEncryptionInTransit.md)
+ [使用 DAX 的服務連結 IAM 角色](using-service-linked-roles.md)
+ [跨 AWS 帳戶存取 DAX](DAX.cross-account-access.md)
+ [DAX 叢集調整大小指南](DAX.sizing-guide.md)

## DAX 使用案例
<a name="DAX.use-cases"></a>

DAX 可讓您以微秒延遲，存取 DynamoDB 資料表的最終一致資料。多可用區域 DAX 叢集每秒可處理數百萬個請求。

DAX 適合下列應用程式類型：
+ 需要盡可能最快讀取回應時間的應用程式。部分範例包括即時競標、社群遊戲與交易應用程式。DAX 為這些使用案例提供快速的記憶體內讀取效能。
+ 比其他應用程式更常讀取少量項目的應用程式。例如，假設有一部電子商務系統，正對某項熱門產品展開一日促銷。在促銷期間，與其他所有產品相比，針對該產品 (及其在 DynamoDB 中的資料) 的需求會驟增。若要減輕「熱」鍵與不一致流量分佈的影響，您可以將讀取活動卸載至 DAX 快取，直到一日促銷結束為止。
+ 需要大量讀取但對成本也很敏感的應用程式。透過 DynamoDB，您可以佈建應用程式所需的每秒讀取數目。如果讀取活動增加，您可以增加資料表的佈建讀取輸送量 (需額外付費)。或者，您可以將活動從應用程式卸載至 DAX 叢集，並減少需要額外購買的讀取容量單位數。
+ 需要對大型資料集重複讀取的應用程式。這類應用程式可能會從其他應用程式重新分配資料庫資源。例如，長時間執行的區域天氣資料分析可能會暫時使用 DynamoDB 資料表中的所有讀取容量。這種情況會對其他需要存取相同資料的應用程式造成負面影響。透過 DAX，可改為對快取資料執行天氣分析。

 DAX *不*適合下列應用程式類型：
+ 需要高度一致性讀取 (或無法容忍最終一致讀取) 的應用程式。
+ 讀取回應時間不需要到微秒，或不需從基礎資料表卸載重複讀取活動的應用程式。
+ 寫入密集型的應用程式。大量寫入會導致叢集中 DAX 節點的複寫增加。這會造成增加消耗資源，並產生可用性問題風險。
+ 沒有許多重複讀取的應用程式。快取命中率超過 90% 時，DAX 可達到最佳效能。較低的快取命中率會增加快取遺漏，導致整個 DAX 叢集耗用更多資源。

## DAX 使用須知
<a name="DAX.usage-notes"></a>
+ 如需可使用 DAX AWS 的區域清單，請參閱 [Amazon DynamoDB 定價](https://aws.amazon.com/dynamodb/pricing)。
+ DAX 支援以 Go、Java、Node.js、Python 和 .NET 撰寫的應用程式，並使用 AWS這些程式設計語言提供的用戶端。
+ DAX 僅適用於 EC2-VPC 平台。
+ DAX 叢集服務角色政策必須允許 `dynamodb:DescribeTable` 動作，才能維護有關 DynamoDB 資料表的中繼資料。
+ 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"
  }
  ```