

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

# 變更資料擷取串流 （預覽）
<a name="cdc-streams"></a>

**重要**  
此功能以 AWS 預覽版形式提供，可能會有所變更。如需詳細資訊，請參閱 [AWS 服務條款](https://aws.amazon.com/service-terms/)中的第 2 節 Beta 版和預覽版。若要進一步了解 CDC 串流的定價，請參閱 [Aurora DSQL 定價頁面](https://aws.amazon.com/rds/aurora/dsql/pricing/)。  
在一般可用性之前，我們會將新的操作類型 (`"op": "u"` 用於更新） 新增至串流承載。為了確保您的應用程式在不修改的情況下處理這些變更，請套用`after`承載，將任何無法辨識`op`的值視為 upsert。如需詳細資訊，請參閱 [了解 CDC 記錄](cdc-record-format.md)。

Amazon Aurora DSQL 變更資料擷取 (CDC) 會近乎即時地將遞交的資料庫變更直接串流到 Amazon Kinesis Data Streams。Aurora DSQL 會將每個遞交的資料列層級變更作為結構化 JSON 記錄交付至您設定的 Kinesis 資料串流。

當您想要：
+ **保持下游系統同步** – 將變更複寫至搜尋索引、快取、資料倉儲或分析系統，無需批次工作。
+ **建置事件驅動型架構** – 觸發工作流程、通知或微服務動作，以回應資料庫變更。
+ **維護稽核線索** – 擷取每個遞交的變更以進行合規、偵錯或歷史分析。
+ 將**生產者與消費者分離** – 讓資料庫專注於交易，同時下游系統以自己的步調處理變更。

## 運作方式
<a name="cdc-how-it-works"></a>

Aurora DSQL 會讀取遞交的交易、將每一列變更格式化為結構化 JSON 記錄，並將其交付至您設定的 Kinesis 資料串流。CDC 會自動擷取叢集中`DELETE`所有使用者資料表的每個 `INSERT``UPDATE`、 和 。使用每個 CDC 記錄中的 `source.schema`和 `source.table` 欄位，在下游應用程式中套用篩選邏輯，以專注於資料表或變更您的應用程式需求。

CDC 串流受到完整管理。Aurora DSQL 會管理擷取變更事件、監控串流運作狀態，以及透過 `GetStream` API 操作和 CloudWatch 指標報告狀態所需的所有基礎設施。

CDC 串流使用bring-your-own-target模型。您會在帳戶中建立和管理 Kinesis 資料串流，而 Aurora DSQL 會擔任您設定為代您撰寫 CDC 記錄的 IAM 角色。您要負責目標的容量、加密和保留設定。如需最新支援的目標，請參閱《Amazon Aurora DSQL API 參考》中 [CreateStream](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_CreateStream.html) 中的 `TargetDefinition` 參數。如需 CDC 串流 API 操作的完整清單，請參閱 [Amazon Aurora DSQL API 參考](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/CHAP_api_reference.html)。

## 本頁主題
<a name="cdc-topics-on-page"></a>
+ [訂購和交付語意](#cdc-ordering-delivery)
+ [多區域 CDC 串流組態](#cdc-multi-region)
+ [處理下游的 CDC 記錄](#cdc-downstream-processing)

## 相關主題
<a name="cdc-related-topics"></a>
+ [CDC 串流入門](cdc-setup.md)
+ [設定 IAM](cdc-iam.md)
+ [了解 CDC 記錄](cdc-record-format.md)
+ [監控串流](cdc-monitoring.md)

## 訂購和交付語意
<a name="cdc-ordering-delivery"></a>

### 交付保證
<a name="cdc-delivery-guarantees"></a>

Aurora DSQL CDC 保證每個遞交的變更至少達到目標一次。Aurora DSQL 可以多次交付記錄。設計您的應用程式來處理重複項目。您可以比較 `source.ts_ns`和主索引鍵值來識別重複項目 - 重複項目的值與原始交付項目的值相同。

### 排序
<a name="cdc-ordering"></a>

CDC 串流使用 `UNORDERED` 模式。實際上，記錄會以大致遞交順序抵達，因為 Aurora DSQL 會循序讀取和發佈變更。不過，Aurora DSQL 不保證嚴格排序。具體而言：
+ Aurora DSQL 可以按任何順序交付來自不同交易的記錄。
+ 來自不同交易的相同主索引鍵的記錄可能會脫離遞交順序。
+ 來自單一交易的記錄可以與其他交易的記錄互斥。當您的工作流程需要記錄時，使用 `source.txId` 欄位依交易分組記錄。

每個 CDC 記錄都包含一個`source.ts_ns`欄位，其中包含以奈秒為單位的交易遞交時間戳記。使用此欄位在接收端建立遞交順序。

### 消費者策略
<a name="cdc-consumer-strategies"></a>

由於記錄可能無法按遞交順序送達，並且可以出現超過一次，因此您的應用程式必須考慮這兩種條件。

**重要**  
在參與 CDC 的所有資料表上定義主索引鍵。如果沒有主索引鍵，您的應用程式就無法刪除重複記錄，或將刪除與受影響的資料列建立關聯。

**Last-writer-wins （材料化檢視、快取）**  
追蹤每個主索引鍵的最高`source.ts_ns`值。捨棄`source.ts_ns`任何小於或等於追蹤值的記錄。這會同時篩選重複和out-of-order的記錄，保持每個金鑰的最新狀態。當您處理刪除 (`op: "d"`) 時，請存放主索引鍵的 tombstone，以保留`source.ts_ns`值，而不是移除項目。tombstone 可確保在刪除後到達`source.ts_ns`的 插入或更新不會錯誤地還原資料列。

**每次變更處理 （稽核記錄、事件來源）**  
透過比較與主索引鍵值`source.ts_ns`的組合來移除重複項目。緩衝傳入記錄並在處理`source.ts_ns`之前依 排序，以重建遞交順序。

## 多區域 CDC 串流組態
<a name="cdc-multi-region"></a>

CDC 串流是區域資源。每個串流都屬於單一 AWS 區域，並將變更交付至相同區域中的 Kinesis 資料串流。在多區域叢集上，任何一個區域中的 CDC 串流都會擷取叢集中**所有區域的**遞交寫入。這表示無論寫入來源為何，您只需要一個串流來擷取每個變更。若要在多個區域中交付 CDC 記錄，請在每個區域中建立個別的串流。每個串流會獨立擷取整個叢集的整組遞交變更。

所有資源—Aurora DSQL 叢集、Kinesis 資料串流、IAM 服務角色和呼叫委託人—都必須位於相同的 AWS 帳戶和區域。

## 處理下游的 CDC 記錄
<a name="cdc-downstream-processing"></a>

CDC 記錄送達 Kinesis 資料串流後，您可以使用 AWS 整合服務直接處理它們或將其路由到其他目的地。下表摘要說明常見的處理模式。


**CDC 記錄的常見處理模式**  

| 模式 | 運作方式 | 
| --- |--- |
| 直接耗用 | Read records from Kinesis by using the Amazon Kinesis Client Library (KCL), the AWS SDK, or a Kinesis Data Streams consumer. See [開發 KCL 消費者](https://docs.aws.amazon.com/streams/latest/dev/shared-throughput-kcl-consumers.html) in the Amazon Kinesis Data Streams 開發人員指南. | 
| AWS Lambda | Configure a Lambda function as an event source for your Kinesis data stream to process each batch of CDC records as they arrive. See [搭配 Amazon Kinesis 使用 AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html) in the AWS Lambda 開發人員指南. | 
| Amazon Data Firehose | Deliver CDC records from Kinesis to Amazon S3, Amazon Redshift, Amazon OpenSearch Service, or other destinations for analytics and archival. See [將資料傳送至交付串流](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html) in the Amazon Data Firehose 開發人員指南. | 
| 自我管理的消費者 | Run Apache Kafka Connect with the Kinesis source connector, Apache Flink, or other stream processing frameworks to transform and route records. For Apache Flink on AWS, see [設定應用程式輸入](https://docs.aws.amazon.com/managed-flink/latest/java/how-it-works-input.html) in the Amazon Managed Service for Apache Flink 開發人員指南. | 

每個 CDC 記錄都包含 `source.schema`、 `source.table`和 等欄位`op`，您可以用來在處理邏輯中路由和篩選記錄。如需完整的記錄結構描述，請參閱 [了解 CDC 記錄](cdc-record-format.md)。