동작 및 사용 사례
Datastream을 사용하면 관계형 데이터베이스 관리 시스템(RDBMS) 및 기타 소스의 소스 데이터를 BigQuery 및 Cloud Storage와 같은 대상으로 거의 실시간으로 가져올 수 있습니다. 이는 데이터 웨어하우징 및 분석을 위해 데이터를 BigQuery에 로드하거나 인공지능 및 머신러닝 사용 사례를 위해 데이터로 Spark 작업을 실행하는 등의 다운스트림 사용 사례를 제공합니다.
개념
변경 데이터 캡처
변경 데이터 캡처(CDC)는 변경된 데이터를 사용하여 작업을 실행할 수 있도록 변경된 데이터를 확인하고 추적하는 데 사용되는 소프트웨어 설계 패턴의 집합입니다. 또한 CDC는 기업 데이터 소스에 대한 변경사항의 식별, 캡처, 배포를 기반으로 하는 데이터 통합 접근 방식입니다.
이벤트 소싱
2005년에 도입된 이벤트 소싱은 애플리케이션 상태의 모든 변경사항이 이벤트 객체에 캡처되는 설계 패턴입니다. 애플리케이션은 이벤트 소싱을 활용하여 상태를 쉽게 다시 빌드하고 해당 지점까지 이벤트를 처리하여 PITR(point-in-time recovery)을 수행하고, 로직이 변경될 경우 상태를 다시 계산하거나 CQRS(Command Query Responsibility Segregation) 설계를 사용 설정할 수 있습니다. 실시간 이벤트 처리를 위한 도구가 발전함에 따라 많은 애플리케이션이 이벤트 소싱 모델로 전환되고 있습니다. 지금까지 트랜잭션 데이터베이스는 원자성, 일관성, 격리성, 내구성(ACID) 요구사항으로 인해 항상 이벤트 중심이었습니다.
트랜잭션 데이터베이스
트랜잭션 데이터베이스에서 데이터베이스가 수행할 작업 집합은 일반적으로 스토리지 엔진에서 작업이 실행되기 전에 WAL(미리 쓰기 로그)에 기록됩니다. 스토리지 엔진에서 작업이 실행되고 WAL에 커밋되면 작업이 성공한 것으로 간주됩니다. WAL을 사용하면 원자성 및 내구성을 사용 설정하고 데이터베이스를 고품질로 복제할 수 있습니다. 일부 데이터베이스는 스토리지 수준에서 발생할 정확한 작업(예: write 0x41 on location 20
)을 로그에 기록하므로 이러한 작업은 동일한 스토리지 엔진에서만 복제(또는 다시 실행)할 수 있습니다. 다른 데이터베이스는 다른 스토리지 엔진에서 다시 실행할 수 있는 완전한 논리 문(또는 행)을 로깅합니다.
이벤트 및 스트림
Datastream은 다양한 소스에서 거의 실시간으로 많은 양의 데이터를 수집하여 대상에서 사용할 수 있도록 합니다. Datastream에서 저장하는 데이터 단위는 이벤트입니다. 스트림은 소스에서 이벤트를 지속적으로 수집하여 대상에 쓰는 것을 나타냅니다.
통합 유형
데이터 소스에는 데이터베이스 자체와 관련된 고유한 유형 및 일반적이고 데이터베이스 간에 공유되는 일부 유형이 있습니다. 통합 대상에 스트림을 생성하는 다양한 소스가 있으므로 모든 소스에서 원본 소스 유형을 나타내는 표준화된 통합 방법이 있어야 합니다. 통합 유형은 모든 소스에서 데이터 유형을 통일된 방식으로 사용할 수 있게 해주는 일반적인 무손실 유형입니다. Datastream에서 지원되는 통합 유형은 모든 지원되는 소스 시스템에서 모든 정규 유형의 상위 집합을 나타내므로 모든 유형이 손실 없이 지원될 수 있습니다.
항목 컨텍스트
Datastream에는 다음 5개 항목이 있습니다.
- 비공개 연결 구성을 사용하면 Datastream이 안전한 비공개 네트워크 연결을 통해 데이터 소스와 통신할 수 있습니다. 이 통신은 Virtual Private Cloud(VPC) 피어링을 통해 수행됩니다.
- 연결 프로필은 특정 소스 또는 대상 데이터베이스에 대한 연결 정보를 나타냅니다.
- 스트림은 스트림별 설정과 함께 소스 및 대상 연결 프로필 쌍을 나타냅니다.
- 객체는 스트림의 하위 부분을 나타냅니다. 예를 들어 데이터베이스 스트림에는 스트리밍되는 모든 테이블의 데이터 객체가 포함됩니다.
- 이벤트는 지정된 객체의 모든 데이터 조작 언어(DML) 변경을 나타냅니다.
비공개 연결 구성을 만든 후 비공개 통신 채널을 통해 Google Cloud 또는 다른 위치에서 호스팅되는 소스에 연결할 수 있습니다. 비공개 연결은 선택사항이며 DataStream은 공개 네트워크를 통한 다른 연결 모드도 지원합니다.
소스와 대상의 연결 프로필을 만든 후 연결 프로필에 저장된 정보를 사용하여 소스에서 대상으로 데이터를 전송하는 스트림을 만들 수 있습니다.
스트림을 만들면 Datastream이 소스에 직접 연결하고, 콘텐츠를 사용한 다음, 이벤트 구조에 따라 이벤트를 처리하고 대상에 씁니다.
비공개 연결 구성과 연결 프로필은 쉽게 재사용할 수 있도록 스트림과 별도로 관리할 수 있습니다. 기업에서는 소스 또는 대상에 대한 연결을 설정할 수 있는 사람이 스트림을 만드는 사람과 동일하지 않는 경우가 많기 때문입니다.
기능
Datastream 기능은 다음과 같습니다.
- 서버리스: 스트림을 구성할 수 있으며 데이터가 이동하기 시작합니다. 설치, 리소스 할당 또는 유지보수 오버헤드가 없습니다. 데이터 볼륨이 증가하거나 축소됨에 따라 Datastream의 자동 확장 기능은 리소스를 할당하여 데이터가 거의 실시간으로 자동으로 이동할 수 있도록 합니다.
- 통합 Avro 기반 유형 스키마: Datastream은 모든 소스별 데이터 유형을 Avro 유형을 기준으로 통합된 Datastream 유형 스키마로 변환하여 소스에 독립적인 간단한 처리를 지원합니다.
- 이전 데이터 및 CDC 데이터 스트리밍: Datastream은 이전 및 CDC 소스 데이터를 모두 거의 실시간으로 동시에 스트리밍합니다.
추가 라이선스가 없는 Oracle CDC: Datastream은 추가 라이선스나 소프트웨어 설치 비용을 지불할 필요 없이 모든 Oracle 소스 버전 11.2g 이상에서 LogMiner 기반 CDC 스트리밍을 제공합니다.
BigQuery 대상: 소스의 변경사항이 거의 실시간으로 BigQuery 테이블에 지속적으로 복제됩니다. BigQuery의 데이터는 분석에 거의 즉시 사용할 수 있습니다.
Cloud Storage 대상: CDC 데이터는 지속적으로 자기 기술형인 Avro 또는 JSON 파일에 기록됩니다. 이 정보는 직접 적용하거나 Spanner와 같은 다른 대상에 다운스트림으로 로드하여 추가 처리에 쉽게 사용할 수 있습니다.
사용 사례
Datastream 사용에는 세 가지 주요 시나리오가 있습니다.
- 데이터 통합: 데이터베이스 및 SaaS(Software-as-a-Service) 클라우드 서비스의 데이터 스트림은 BigQuery에 데이터를 로드하여 실시간에 가까운 데이터 통합 파이프라인을 제공할 수 있습니다.
- 스트리밍 분석: 데이터베이스 변경사항은 사기 감지, 보안 관련 활동 처리, 이상 감지를 위해 Dataflow와 같은 스트리밍 파이프라인으로 수집됩니다.
- 데이터 변경사항에 대한 실시간에 가까운 가용성: 마케팅 활동을 사용하거나 프로덕션 시스템에 다시 피드하는 방식으로 이탈을 방지하거나 참여도를 높이기 위해 거의 실시간으로 데이터 변경을 지원하여 인공지능 및 머신러닝 애플리케이션을 구동합니다.
행동 개요
Datastream을 사용하면 고객이 여러 데이터 소스의 진행 중인 변경사항을 Google Cloud로 직접 스트리밍할 수 있습니다.
소스
- 인증 및 추가 구성 옵션을 포함하여 소스를 Datastream과 함께 사용하려면 설정 작업이 필요합니다.
- 각 소스는 모든 데이터 조작 언어(DML) 변경사항을 반영하는 이벤트를 생성합니다.
- 각 스트림은 이전 데이터를 백필하고 진행 중인 변경사항을 대상으로 스트리밍할 수 있습니다.
대상
Datastream은 BigQuery 및 Cloud Storage를 대상으로 지원합니다. 스트림을 만들면 원하는 BigQuery 데이터 세트 또는 Cloud Storage 버킷이 정의됩니다.
이벤트 전송
- 이벤트 순서는 보장되지 않습니다. 이벤트 메타데이터에는 이벤트의 순서를 지정하는 데 사용할 수 있는 정보가 포함됩니다.
- 이벤트 전송은 한 번 이상 발생합니다. 이벤트 메타데이터에는 대상에서 중복 데이터를 제거하는 데 사용할 수 있는 데이터가 포함됩니다.
- 이벤트 크기는 BigQuery 대상의 경우 이벤트당 20MB, Cloud Storage 대상의 경우 이벤트당 30MB로 제한됩니다.
이벤트에 대한 자세한 내용은 이벤트 및 스트림을 참조하세요.
고가용성 및 재해 복구
이 섹션에는 Datastream에서 고가용성 및 재해 복구와 관련된 시나리오를 처리하는 방법에 대한 정보가 포함되어 있습니다.
- 고가용성: Datastream은 리전 서비스이며 각 리전의 여러 영역에서 실행됩니다. 한 리전의 단일 영역에서 장애가 발생해도 다른 영역에 있는 서비스의 가용성 또는 품질에는 영향을 미치지 않습니다.
- 재해 복구: 리전에 장애가 발생하면 서비스 중단 기간 동안 해당 리전에서 실행 중인 모든 스트림이 중단됩니다. 서비스 중단이 해결되면 Datastream은 중단된 지점부터 계속 진행되며, 대상 위치에 기록되지 않은 모든 데이터는 소스에서 다시 검색됩니다. 이 경우 대상에 데이터 중복이 있을 수 있습니다. 중복 데이터 삭제에 대한 자세한 내용은 이벤트 전송을 참조하세요.
초기 데이터 및 CDC 데이터
데이터 소스에는 소스가 스트림에 연결되기 전에 존재했던 데이터(이전 데이터)가 있으므로 Datastream은 이전 데이터 및 실시간으로 발생하는 데이터 변경사항 모두의 이벤트를 생성합니다.
빠른 데이터 액세스를 보장하기 위해 이전 데이터와 실시간 데이터 변경사항이 대상에 동시에 복제됩니다. 이벤트 메타데이터는 이벤트가 백필 또는 CDC에서 발생했는지 여부를 나타냅니다.