Kinesis Data Streams를 사용하여 DynamoDB 변경 사항 캡처 - Amazon DynamoDB

Kinesis Data Streams를 사용하여 DynamoDB 변경 사항 캡처

Amazon Kinesis Data Streams를 사용하여 Amazon DynamoDB 변경 사항을 캡처할 수 있습니다.

Kinesis Data Streams는 모든 DynamoDB 테이블에서 항목 수준 수정 사항을 캡처하여 Kinesis 데이터 스트림에 복제합니다. 애플리케이션에서는 이 스트림에 액세스하고 항목 수준 변경 사항을 거의 실시간으로 볼 수 있습니다. 시간당 수 테라바이트의 데이터를 지속적으로 캡처하고 저장할 수 있습니다. 더 긴 데이터 보존 시간을 활용할 수 있으며, 향상된 팬아웃(fan-out) 기능을 통해 2개 이상의 다운스트림 애플리케이션에 동시에 액세스할 수 있습니다. 다른 이점으로는 추가적인 감사 및 보안 투명성이 있습니다.

Kinesis Data Streams는 Amazon Data FirehoseAmazon Managed Service for Apache Flink에 대한 액세스도 제공합니다. 이러한 서비스를 통해 실시간 대시보드를 지원하고, 알림을 생성하고, 동적 요금 및 광고를 구현하고, 정교한 데이터 분석 및 기계 학습 알고리즘을 구현하는 애플리케이션을 더 효과적으로 구축할 수 있습니다.

참고

DynamoDB용 Kinesis Data Streams를 사용하면 데이터 스트림의 Kinesis Data Streams 요금과 소스 테이블의 DynamoDB 요금이 모두 적용됩니다.

Kinesis Data Streams가 DynamoDB에서 작동하는 방식

DynamoDB 테이블에 대해 Kinesis 데이터 스트림이 활성화되면 테이블은 해당 테이블의 데이터에 대한 변경 사항을 캡처하는 데이터 레코드를 전송합니다. 이 데이터 레코드에는 다음이 포함됩니다.

  • 항목이 최근에 생성, 업데이트 또는 삭제된 특정 시간

  • 해당 항목의 기본 키

  • 수정 전 레코드의 스냅샷

  • 수정 후 레코드의 스냅샷

이러한 데이터 레코드는 거의 실시간으로 캡처되고 게시됩니다. 데이터가 Kinesis 데이터 스트림에 기록되면 다른 레코드와 마찬가지로 읽을 수 있습니다. Kinesis 클라이언트 라이브러리와 AWS Lambda를 사용하고 Kinesis Data Streams API 및 기타 연결된 서비스를 호출할 수 있습니다. 자세한 내용은 Amazon Kinesis Data Streams 개발자 안내서의 Amazon Kinesis Data Streams에서 데이터 읽기를 참조하세요.

이러한 데이터 변경 사항도 비동기적으로 캡처됩니다. Kinesis는 데이터가 스트리밍되는 테이블의 성능에 영향을 미치지 않습니다. 또한 Kinesis 데이터 스트림에 저장된 스트림 레코드는 유휴 시 암호화됩니다. 자세한 내용은 Amazon Kinesis Data Streams의 데이터 보호를 참조하세요.

Kinesis 데이터 스트림 레코드는 항목 변경 사항이 발생했을 때와 다른 순서로 표시될 수 있습니다. 동일한 항목 알림이 스트림에 두 번 이상 표시될 수도 있습니다. ApproximateCreationDateTime 속성을 확인하여 항목 수정이 발생한 순서를 식별하고 중복 레코드를 식별할 수 있습니다.

Kinesis 데이터 스트림을 DynamoDB 테이블의 스트리밍 대상으로 활성화하면 ApproximateCreationDateTime 값의 정밀도를 밀리초 또는 마이크로초 단위로 구성할 수 있습니다. 기본적으로 ApproximateCreationDateTime은 변경 시간(밀리초)을 나타냅니다. 또한 활성 스트리밍 대상에서 이 값을 변경할 수 있습니다. 이러한 업데이트 후 Kinesis에 기록된 스트림 레코드는 원하는 정밀도의 ApproximateCreationDateTime 값을 갖게 됩니다.

DynamoDB에 기록되는 바이너리 값은 base64 인코딩 형식으로 인코딩되어야 합니다. 그러나 데이터 레코드가 Kinesis 데이터 스트림에 기록될 때 이러한 인코딩된 바이너리 값은 base64 인코딩 형식으로 다시 한 번 인코딩됩니다. Kinesis 데이터 스트림에서 이러한 레코드를 읽을 때 원시 바이너리 값을 검색하려면 애플리케이션에서 이러한 값을 두 번 디코딩해야 합니다.

DynamoDB에서는 Kinesis Data Streams 사용에 대해 변경 데이터 캡처 단위로 요금을 부과합니다. 단일 항목당 변경 1KB가 변경 데이터 캡처 단위 하나로 계산됩니다. 각 항목의 변경 KB는 쓰기 작업에 대한 용량 단위 소비와 동일한 로직을 사용하여 스트림에 기록된 항목의 '이전' 및 '이후' 이미지 중 더 큰 이미지를 기준으로 계산됩니다. DynamoDB 온디맨드 모드의 작동 방식과 유사하게 변경 데이터 캡처 단위의 용량 처리량을 프로비저닝할 필요가 없습니다.

DynamoDB 테이블에 대한 Kinesis 데이터 스트림 켜기

AWS Management Console, AWS SDK 또는AWS Command Line Interface(AWS CLI)를 사용하여 기존 DynamoDB 테이블에서 Kinesis로의 스트리밍을 활성화하거나 비활성화할 수 있습니다.

  • 테이블과 동일한 AWS 계정 및 AWS 리전에서만 Amazon DynamoDB에서 Kinesis Data Streams으로 데이터를 스트리밍할 수 있습니다.

  • DynamoDB 테이블에서 하나의 Kinesis 데이터 스트림으로만 데이터를 스트리밍할 수 있습니다.

DynamoDB 테이블의 Kinesis Data Streams 대상 변경

기본적으로 모든 Kinesis 데이터 스트림 레코드에는 ApproximateCreationDateTime 속성이 포함됩니다. 이 속성은 각 레코드가 생성된 대략적인 시간을 밀리초 단위로 표시한 타임스탬프를 나타냅니다. https://console.aws.amazon.com/kinesis, SDK 또는 AWS CLI를 사용하여 이러한 값의 정밀도를 변경할 수 있습니다.