View a markdown version of this page

在 DynamoDB 中處理時間序列資料的最佳實務 - Amazon DynamoDB

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

在 DynamoDB 中處理時間序列資料的最佳實務

Amazon DynamoDB 中的一般設計原則會建議您盡量減少使用的資料表數量。對於大多數應用程式,您只需要一張資料表。不過,對於時間序列資料,您通常可以在每個期間針對每個應用程式使用一個資料表,這是最好的處理方式。

時間序列資料的設計模式

假設一個典型的時間序列情況,這時您想追蹤大量事件。您的寫入存取模式是所有正在記錄的事件都記有今天的日期。您的讀取存取模式可能是讀取今天最頻繁的活動,昨天的活動則較少讀存,然後更舊的活動則極少讀存。處理這種情況的一個方法,就是將目前的日期和時間內建到主索引鍵中。

以下設計模式通常能有效處理這種情況:

  • 每個期間建立一個資料表,並且佈建所需的讀取和寫入容量,以及必要的索引。

  • 在每個期間結束之前,先為下一個期間預先建立資料表。在目前時段結束時,將事件流量引導至新資料表。您可以為這些資料表指派名稱,來為其所記錄的期間命名。

  • 一旦資料表不再被寫入,會將其佈建的寫入容量減少到較低的值 (例如,1 個 WCU),並佈建適當的讀取容量。隨著舊資料表的存在時間拉長,逐漸地縮減其佈建的讀取容量。您可以針對內容極少用到或不再需要的資料表,選擇封存或刪除這些資料表。

這個概念是針對目前將會產生最高流量的期間,配置所需的資源,然後針對目前未經常使用的舊資料表,縮減佈建的容量,以節省成本。根據您的業務需求,您可能需要考慮寫入碎片的方法,來將流量平均地分配到邏輯分割區索引鍵。如需詳細資訊,請參閱使用寫入碎片以在 DynamoDB 資料表中平均分配工作負載

使用 Standard-IA 資料表類別最佳化儲存成本

DynamoDB 提供兩種資料表類別:DynamoDB Standard 和 DynamoDB Standard-Infrequent Access (DynamoDB Standard-IA)。Standard-IA 資料表類別可降低儲存成本,同時增加讀取和寫入輸送量的成本。當儲存體是資料表成本的主要部分,而且不常存取資料表時,這是很適合的做法。

此權衡自然映射到時間序列模式。目前期間的資料表會接收大部分的讀取和寫入流量,因此請將其保留在 DynamoDB 標準資料表類別上,其中輸送量較便宜。隨著資料表過時未使用,它會寫入很少 (或完全不) 且不常讀取,同時您繼續保留其資料。對於這些較舊的資料表,儲存體通常會成為最高成本,因此將它們切換到 Standard-IA 資料表類別可以降低您的整體成本。

當您將資料表類別套用至時間序列資料表時,請考慮下列事項:

  • 在 DynamoDB 標準資料表類別上保留目前 (作用中) 期間。標準 – IA 的較高輸送量成本會超過其為大量讀取和寫入提供服務的資料表節省的儲存成本。

  • 在不再主動寫入至 且不常存取,但您仍需要保留其資料 (例如,用於合規或偶爾的歷史查詢) 之後,將期間資料表切換到 Standard-IA。

  • 您可以在建立資料表時設定資料表類別,或稍後進行變更。在切換之前評估每個資料表的storage-to-throughput成本比率,並在變更後監控成本。

如需資料表類別及其選擇方式的詳細資訊,請參閱 DynamoDB 資料表類別評估您的 DynamoDB 資料表類別選擇

時間序列資料表範例

下列是時間序列資料的範例,其中針對目前的資料表佈建了較高的讀取/寫入容量,並縮減舊資料表的佈建容量,因為這些資料表不常存取。

高容量時間序列資料的資料表結構描述。