View a markdown version of this page

데이터 캡처 스트림 변경(프리뷰) - Amazon Aurora DSQL

데이터 캡처 스트림 변경(프리뷰)

중요

이 기능은 AWS 프리뷰로 제공되며 변경될 수 있습니다. 자세한 내용은 AWS 서비스 약관의 섹션 2, 베타 및 프리뷰를 참조하세요. CDC 스트림 가격에 대한 자세한 내용은 Aurora DSQL 가격 페이지를 참조하세요.

정식 출시 전에 스트림 페이로드에 새 작업 유형(업데이트를 위한 "op": "u")을 추가합니다. 애플리케이션이 이러한 변경 사항을 수정하지 않고 처리하도록 하려면 after 페이로드를 적용하여 인식할 수 없는 op 값을 업서트로 취급합니다. 세부 정보는 CDC 레코드 이해 섹션을 참조하세요.

Amazon Aurora DSQL 변경 데이터 캡처(CDC)는 Amazon Kinesis Data Streams로 거의 실시간으로 커밋된 데이터베이스 변경 사항을 스트리밍합니다. Aurora DSQL은 구성한 Kinesis 데이터 스트림에 각 커밋된 행 수준 변경을 구조화된 JSON 레코드로 전달합니다.

CDC는 다음과 같은 경우에 유용합니다.

  • 다운스트림 시스템을 동기화된 상태로 유지 - 배치 작업 없이 검색 인덱스, 캐시, 데이터 웨어하우스 또는 분석 시스템에 변경 사항을 복제합니다.

  • 이벤트 기반 아키텍처 구축 - 데이터베이스 변경에 대한 응답으로 워크플로, 알림 또는 마이크로서비스 작업을 트리거합니다.

  • 감사 추적 유지 관리 - 규정 준수, 디버깅 또는 기록 분석을 위해 커밋된 모든 변경 사항을 캡처합니다.

  • 소비자와 생산자 분리 - 다운스트림 시스템이 원하는 속도로 변경을 처리하는 동안 데이터베이스가 트랜잭션에 집중할 수 있도록 합니다.

작동 방식

Aurora DSQL은 커밋된 트랜잭션을 읽고 각 행 변경의 형식을 구조화된 JSON 레코드로 지정한 다음 구성한 Kinesis 데이터 스트림으로 전송합니다. CDC는 클러스터의 모든 사용자 테이블에서 모든 INSERT, UPDATEDELETE를 자동으로 캡처합니다. 각 CDC 레코드의 source.schemasource.table 필드를 사용하여 테이블에 초점을 맞추거나 앱 요구 사항을 변경하여 다운스트림 앱에 필터링 로직을 적용합니다.

CDC 스트림은 완전히 관리됩니다. Aurora DSQL은 변경 이벤트를 캡처하고 스트림 상태를 모니터링하며 GetStream API 작업 및 CloudWatch 지표를 통해 상태를 보고하는 데 필요한 모든 인프라를 관리합니다.

CDC 스트림은 자체 대상 가져오기를 사용합니다. 계정에서 Kinesis 데이터 스트림을 생성하고 관리하며, Aurora DSQL은 사용자를 대신하여 CDC 레코드를 작성하도록 구성하는 IAM 역할을 수임합니다. 대상의 용량, 암호화 및 보존 설정은 사용자의 책임입니다. 지원되는 최신 대상은 Amazon Aurora DSQL API 참조의 CreateStream에서 TargetDefinition 파라미터를 참조하세요. CDC 스트림 API 작업의 전체 목록은 Amazon Aurora DSQL API 참조를 참조하십세요.

이 페이지의 주제

순서 지정 및 전송 의미 체계

전송 보증

Aurora DSQL CDC는 커밋된 모든 변경 사항이 한 번 이상 대상에 도달하도록 보장합니다. Aurora DSQL은 레코드를 두 번 이상 전송할 수 있습니다. 중복을 처리하도록 앱을 설계합니다. source.ts_ns 및 프라이머리 키 값을 비교하여 중복을 식별할 수 있습니다. 중복은 원래 전송과 동일한 값을 갖습니다.

순서 지정

CDC 스트림은 UNORDERED 모드를 사용합니다. 실제로 Aurora DSQL은 변경 사항을 순차적으로 읽고 게시하기 때문에 레코드는 대략적인 커밋 순서로 도착합니다. 그러나 Aurora DSQL은 엄격한 순서를 보장하지 않습니다. 구체적으로 설명하면 다음과 같습니다.

  • Aurora DSQL은 다양한 트랜잭션의 레코드를 어떤 순서로든 전송할 수 있습니다.

  • 서로 다른 트랜잭션의 동일한 프라이머리 키에 대한 레코드는 커밋 순서에서 벗어날 수 있습니다.

  • 단일 트랜잭션의 레코드는 다른 트랜잭션의 레코드와 인터리브될 수 있습니다. 워크플로에 필요할 때 source.txId 필드를 사용하여 트랜잭션별로 레코드를 그룹화합니다.

각 CDC 레코드에는 나노초 단위의 트랜잭션 커밋 타임스탬프가 포함된 source.ts_ns 필드가 포함됩니다. 이 필드를 사용하여 수신 측에서 커밋 순서를 설정합니다.

소비자 전략

레코드는 커밋 순서에 따라 도착할 수 있고 두 번 이상 나타날 수 있으므로 앱이 두 조건을 모두 고려해야 합니다.

중요

CDC에 참여하는 모든 테이블에서 프라이머리 키를 정의합니다. 프라이머리 키가 없으면 앱이 레코드를 중복 제거하거나 삭제를 영향을 받는 행과 연관시킬 수 없습니다.

마지막 쓰기 우선(구체화된 뷰, 캐시)

프라이머리 키당 가장 높은 source.ts_ns 값을 추적합니다. 추적된 값보다 작거나 같은 source.ts_ns가 있는 레코드는 모두 폐기합니다. 이렇게 하면 중복 레코드와 순서가 맞지 않는 레코드가 모두 필터링되어 각 키의 최신 상태가 유지됩니다. 삭제(op: "d")를 처리할 때 항목을 제거하는 대신 source.ts_ns 값을 보존하는 프라이머리 키의 톰스톤을 저장합니다. 톰스톤은 삭제 후 도착하는 이전 source.ts_ns로 삽입 또는 업데이트가 행을 잘못 복원하지 않도록 합니다.

모든 변경 처리(감사 로깅, 이벤트 소싱)

프라이머리 키 값과 함께 source.ts_ns를 비교하여 중복을 제거합니다. 커밋 순서를 재구성하기 위해 처리하기 전에 수신 레코드를 버퍼링하고 source.ts_ns를 기준으로 정렬합니다.

다중 리전 CDC 스트림 구성

CDC 스트림은 리전 리소스입니다. 각 스트림은 단일 AWS 리전에 속하며 동일한 리전의 Kinesis 데이터 스트림에 변경 사항을 전달합니다. 다중 리전 클러스터에서 한 리전의 CDC 스트림은 클러스터의 모든 리전에서 커밋된 쓰기를 캡처합니다. 즉, 쓰기가 시작된 위치에 관계없이 모든 변경 사항을 캡처하는 데 스트림이 하나만 필요합니다. 두 개 이상의 리전에 CDC 레코드를 전송하려면 각 리전에 별도의 스트림을 생성합니다. 각 스트림은 클러스터 전체에서 커밋된 변경 사항의 전체 세트를 독립적으로 캡처합니다.

Aurora DSQL 클러스터, Kinesis 데이터 스트림, IAM 서비스 역할, 직접 호출 위탁자 등 모든 리소스는 동일한 AWS 계정 및 리전에 있어야 합니다.

다운스트림 CDC 레코드 처리

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 소비자 개발 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 사용 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 전송 스트림에 데이터 전송 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 앱 입력 구성 in the Amazon Managed Service for Apache Flink 개발자 안내서.

각 CDC 레코드에는 처리 로직에서 레코드를 라우팅하고 필터링하는 데 사용할 수 있는 source.schema, source.tableop와 같은 필드가 포함되어 있습니다. 전체 레코드 스키마는 CDC 레코드 이해 섹션을 참조하세요.