스노우플레이크가 포스트그레스 데이터베이스의 변경 데이터 캡처(CDC) 방식을 근본적으로 개선하는 '데이터 미러링' 기능을 공개 미리보기로 출시했습니다. 기존에는 외부 복제 도구가 맡던 CDC 역할을 포스트그레스 확장으로 내재화하여, 변경 데이터를 아파치 아이스버그 테이블로 직접 전송함으로써 운영 및 분석 데이터 동기화의 복잡성과 비용을 획기적으로 낮추는 것이 핵심입니다.
데이터 미러링은 'snowflake_cdc'라는 새로운 포스트그레스 확장 기능을 활용합니다. 이 확장은 데이터베이스 내부에서 실행되므로 스키마 변경(DDL) 및 데이터 변경(DML) 트랜잭션, 스냅샷과 변경분 정렬 등 기존 외부 CDC 도구가 처리하기 어려웠던 문제들을 데이터베이스의 실제 상태에 맞춰 조정할 수 있습니다. 변경분은 압축된 파케이(Parquet) 형식의 아이스버그 테이블로 트랜잭션 배치 단위로 직접 전송되며, 아마존 S3(Amazon S3)와 같은 객체 저장소를 통해 생산자와 소비자를 분리합니다. 스노우플레이크는 서버리스(serverless) 방식으로 이 변경분들을 적용하며, '라이브 뷰(Live Views)' 기능을 통해 적용 주기가 길어도 1분 미만의 낮은 지연 시간을 제공합니다.
이러한 푸시 기반(push-based) 구조는 기존 CDC 방식의 여러 한계를 극복합니다. 기존 포스트그레스의 논리 디코딩(logical decoding)은 WAL(Write-Ahead Log) 레코드를 행 단위 작업으로 변환하여 외부로 내보내지만, 이후의 백필, 스키마 변경 처리, 장애 복구, 트랜잭션 경계 보존 등은 외부 클라이언트의 몫이었습니다. 이로 인해 취약한 도구와 높은 비용, 복잡한 운영이 수반되었으나, 데이터 미러링은 포스트그레스 내부에서 이 모든 과정을 통합 처리하여 외부 커넥터나 추가 인프라 없이도 지속적인 동기화를 가능하게 합니다. 특히, 트랜잭션을 복제의 기본 단위로 사용하여 여러 테이블이 동일한 포스트그레스 트랜잭션 시점까지 함께 전진하며 외래 키(foreign key) 관계와 조인(join) 정확성을 보존합니다.
데이터 미러링은 비용이 큰 업서트(upsert) 작업을 피하고 정확히 한 번 적용되는 삭제-삽입 스트림을 생성하여 효율성을 높입니다. 이는 삽입 중심 워크로드에서 기존 행과 대조할 필요 없이 추가만 하면 되므로 빠르고 비용 효율적입니다. 또한, 라이브 뷰는 아직 적용되지 않은 변경 로그와 대상 테이블을 결합하여 쿼리 시점에 최신 데이터를 제공함으로써, 적용 빈도를 낮춰도 고성능 쿼리를 보장합니다.
이러한 접근 방식은 데이터 웨어하우스(Data Warehouse)와 운영 데이터베이스 간의 동기화 패러다임을 변화시킬 잠재력을 가집니다. 스노우플레이크는 데이터 미러링 외에도 개발자가 데이터 이동 시점과 방식을 제어하는 '포스트그레스 포 유어 데이터 레이크(Postgres for your data lake)'를 제공하며, 운영 및 분석 워크로드를 결합하는 두 가지 강력한 솔루션을 제시하고 있습니다. 이는 데이터 통합의 복잡성을 줄이고 실시간 분석 역량을 강화하려는 기업들에게 중요한 의미를 가집니다.