

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

# 變更資料擷取 (CDC) 串流如何在 Amazon Keyspaces 中運作
<a name="cdc_how-it-works"></a>

本節概述變更資料擷取 (CDC) 串流如何在 Amazon Keyspaces 中運作。

Amazon Keyspaces 變更資料擷取 (CDC) 會在 Amazon Keyspaces 資料表中記錄一系列列層級修改，並將此資訊存放在稱為*串流*的日誌中長達 24 小時。每個資料列層級修改都會產生新的 CDC 記錄，其中包含主索引鍵資料欄資訊，以及包含所有資料欄的資料列的「之前」和「之後」狀態。應用程式可以近乎即時地存取串流並檢視變動。

當您在資料表上啟用 CDC 時，Amazon Keyspaces 會建立新的 CDC 串流，並開始擷取資料表中每次修改的相關資訊。CDC 串流具有下列格式的 Amazon Resource Name (ARN)：

```
arn:${Partition}:cassandra:{Region}:${Account}:/keyspace/${keyspaceName}/table/${tableName}/stream/${streamLabel}
```

您可以在第一次啟用 CDC 串流時，選取 CDC 串流為每個記錄收集的資訊類型或*檢視類型*。您之後無法變更串流的檢視類型。Amazon Keyspaces 支援下列檢視類型：
+ `NEW_AND_OLD_IMAGES` – 擷取變動前後的資料列版本。這是預設值。
+ `NEW_IMAGE` – 擷取變動之後的資料列版本。
+ `OLD_IMAGE` – 擷取變動前的資料列版本。
+ `KEYS_ONLY` – 擷取已變動資料列的分割區和叢集索引鍵。

每個 CDC 串流都包含 記錄。每個記錄代表 Amazon Keyspaces 資料表中的單一資料列修改。記錄會以邏輯方式組織成稱為*碎片的*群組。這些群組會依主索引鍵的範圍 （分割區索引鍵的組合、叢集索引鍵範圍） 進行邏輯組織，並且是 Amazon Keyspaces 的內部建構。每個碎片都充當多個記錄的容器，並包含存取和逐一查看這些記錄所需的資訊。

![\[Amazon Keyspaces CDC 串流包含碎片，代表資料列變動集合的 CDC 記錄。\]](http://docs.aws.amazon.com/zh_tw/keyspaces/latest/devguide/images/keyspaces_cdc.png)


每個 CDC 記錄都會獲指派序號，以反映記錄在碎片中發佈的順序。序列號保證在每個碎片中增加且是唯一的。

Amazon Keyspaces 會自動建立和刪除碎片。根據流量負載，Amazon Keyspaces 也可以隨著時間分割或合併碎片。例如，Amazon Keyspaces 可以將一個碎片分割成多個新碎片，或將碎片合併成新的單一碎片。Amazon Keyspaces APIs 會發佈碎片和 CDC 串流資訊，以允許取用應用程式存取碎片的整個譜系圖，以正確的順序處理記錄。

Amazon Keyspaces CDC 是以下列原則為基礎，您可以在建置應用程式時倚賴這些原則：
+ 每個資料列層級變動記錄只會在 CDC 串流中出現一次。
+ 當您依歷程順序使用碎片時，每個資料列層級變動記錄會以與主索引鍵上實際變動順序相同的順序顯示。

**Topics**
+ [資料保留](#CDC_how-it-works-data-retention)
+ [TTL 資料過期](#CDC_how-it-works-ttl)
+ [批次操作](#CDC_how-it-works-batch-operations)
+ [靜態資料欄](#CDC_how-it-works-static)
+ [靜態加密](#CDC_how-it-works-encryption)
+ [多區域複製](#CDC_how-it-works-mrr)
+ [與 AWS 服務的整合](#howitworks_integration)

## Amazon Keyspaces 中 CDC 串流的資料保留運作方式
<a name="CDC_how-it-works-data-retention"></a>

Amazon Keyspaces 會將 CDC 串流中的記錄保留 24 小時。您無法變更保留期間。如果您在資料表上停用 CDC，串流中的資料會繼續讀取 24 小時。在此期間之後，資料會過期，並自動刪除記錄。

## 存留時間 (TTL) 資料過期如何與 Amazon Keyspaces 中的 CDC 串流搭配使用
<a name="CDC_how-it-works-ttl"></a>

Amazon Keyspaces 會顯示資料欄/儲存格層級的過期時間，以及 CDC 變更記錄中稱為 `expirationTime`的中繼資料欄位中的資料列層級。當 Amazon Keyspaces TTL 偵測到儲存格過期時，CDC 會建立新的變更記錄，顯示 TTL 作為變更的來源。如需 TTL 的詳細資訊，請參閱 [使用 Amazon Keyspaces 的存留時間 (TTL) 過期資料 （適用於 Apache Cassandra)](TTL.md)。

## Amazon Keyspaces 中 CDC 串流的批次操作運作方式
<a name="CDC_how-it-works-batch-operations"></a>

批次操作在內部分為個別的資料列層級修改。Amazon Keyspaces 會在資料列層級保留 CDC 串流中的所有記錄，即使修改發生在批次操作中。Amazon Keyspaces 會以與資料列層級或主索引鍵上發生的變動順序相同的順序，維護 CDC 串流內的記錄順序。

## 靜態資料欄如何在 Amazon Keyspaces 的 CDC 串流中運作
<a name="CDC_how-it-works-static"></a>

靜態資料欄值會在 Cassandra 中分割區中的所有資料列之間共用。由於此行為，Amazon Keyspaces 會將靜態資料欄的任何更新擷取為 CDC 串流中的個別記錄。下列範例摘要說明靜態資料欄變動的行為：
+ 當僅更新靜態資料欄時，CDC 串流包含靜態資料欄的資料列修改作為資料列中的唯一資料欄。
+ 更新資料列而不變更靜態資料欄時，CDC 串流會包含資料列修改，其中包含靜態資料欄以外的所有資料欄。
+ 當資料列與靜態資料欄一起更新時，CDC 串流包含兩個不同的資料列修改，一個用於靜態資料欄，另一個用於其餘的資料列。

## 靜態加密如何適用於 Amazon Keyspaces 中的 CDC 串流
<a name="CDC_how-it-works-encryption"></a>

若要加密 CDC 排序日誌中的靜態資料，Amazon Keyspaces 會使用已用於資料表的相同加密金鑰。如需靜態加密的詳細資訊，請參閱 [Amazon Keyspaces 中的靜態加密](EncryptionAtRest.md)。

## 多區域複寫如何適用於 Amazon Keyspaces 中的 CDC 串流
<a name="CDC_how-it-works-mrr"></a>

您可以使用 `update-table` API 或 `ALTER TABLE` CQL 命令，為多區域資料表的個別複本啟用和停用 CDC 串流。由於非同步複寫和衝突解決，多區域資料表的 CDC 串流跨區域不一致 AWS 區域。因此，Amazon Keyspaces 在串流中擷取的記錄可能會在不同的區域中以不同的順序顯示。

如需多區域複寫的詳細資訊，請參閱 [適用於 Amazon Keyspaces 的多區域複寫 （適用於 Apache Cassandra)](multiRegion-replication.md)。

## CDC 串流和與 AWS 服務的整合
<a name="howitworks_integration"></a>

### 如何在 Amazon Keyspaces 中使用 CDC 串流的 VPC 端點
<a name="CDC_how-it-works-vpc"></a>

您可以使用 VPC 端點來存取 Amazon Keyspaces CDC 串流。如需如何建立和存取串流 VPC 端點的詳細資訊，請參閱 [搭配介面 VPC 端點使用 Amazon Keyspaces CDC 串流](vpc-endpoints-streams.md)。

### 使用 CloudWatch 監控 如何在 Amazon Keyspaces 中用於 CDC 串流
<a name="CDC_how-it-works-monitoring"></a>

您可以使用 Amazon CloudWatch 來監控對 Amazon Keyspaces CDC 端點發出的 API 呼叫。如需可用指標的詳細資訊，請參閱 [Amazon Keyspaces 變更資料擷取 (CDC) 的指標](metrics-dimensions.md#keyspaces-cdc-metrics)。

### 使用 CloudTrail 記錄日誌如何在 Amazon Keyspaces 中用於 CDC 串流
<a name="CDC_how-it-works-logging"></a>

Amazon Keyspaces CDC 已與 服務整合 AWS CloudTrail，此服務提供由 Amazon Keyspaces AWS 中的使用者、角色或服務所採取之動作的記錄。CloudTrail 會將 Amazon Keyspaces 的 Data Definition Language (DDL) API 呼叫和 Data Manipulation Language (DML) API 呼叫擷取為事件。擷取的呼叫包括來自 Amazon Keyspaces 主控台的呼叫，以及對 Amazon Keyspaces API 操作的程式設計呼叫。

如需 CloudTrail 擷取之 CDC 事件的詳細資訊，請參閱 [使用 記錄 Amazon Keyspaces API 呼叫 AWS CloudTrail](logging-using-cloudtrail.md)。

### 標記在 Amazon Keyspaces 中如何適用於 CDC 串流
<a name="CDC_how-it-works-tagging"></a>

Amazon Keyspaces CDC 串流是可標記的資源。您可以在使用 CQL、 AWS SDK 或 以程式設計方式建立資料表時標記串流 AWS CLI。您也可以標記現有的串流、刪除標籤或檢視串流的標籤。如需詳細資訊，請參閱[在 Amazon Keyspaces 中標記金鑰空間、資料表和串流](Tagging.Operations.md)。