Pinterest의 차세대 DB 수집 프레임워크에서의 ... 노트

Pinterest의 차세대 DB 수집 프레임워크에서의 자동 스키마 진화

Pinterest는 Kafka 기반 CDC 수집 플랫폼을 위해 강력하고 자동화된 스키마 진화 프레임워크를 개발했습니다. 스키마 변경은 중요한 시스템 간 계약이며, 검증되지 않은 진화는 파이프라인 실패와 데이터 불일치를 초래할 수 있습니다. 이들의 솔루션은 스키마 진화를 다단계 수렴 프로세스로 취급하여 안전하고 반복 가능하며 확장 가능하게 만드는 데 중점을 둡니다. 아키텍처는 CDC 소스, Kafka, 변환을 위한 Flink, Iceberg 테이블로의 upsert를 위한 Spark를 포함합니다.핵심 구성 요소는 안정적인 숫자 식별자를 가진 스키마 정의 파일을 진실의 원천으로 사용하는 신뢰할 수 있는 온보딩 모델입니다. 업데이트는 버전 관리 및 감사 기능이 있는 PR 기반 롤아웃을 통해 Kafka, Flink, Spark 및 Iceberg 전반에 걸쳐 자동으로 전파됩니다. 이 시스템은 주로 후방 호환성을 유지하고 복잡성을 최소화하기 위해 추가적인 스키마 변경을 지원합니다. 타입 변경은 숫자 정밀도 확장과 같이 의미론적 의미를 보존하는 것으로 엄격히 제한됩니다.스키마 진화는 파이프라인 가용성을 유지하기 위해 3단계 수렴 모델을 통해 관리됩니다. 1단계는 Iceberg 스키마를 업데이트하고, 2단계는 업데이트된 Flink 및 Spark 코드를 배포하며, 3단계는 데이터 수렴을 보장합니다. 이 단계적 접근 방식은 스키마 전파와 데이터 정확성을 분리하여 정의된 SLA 내에서 일시적인 편차를 허용합니다. Pinterest는 예측 가능성과 운영 안전을 우선시하는 SLA 기반 모델을 스키마 진화에 사용합니다.데이터 손실을 방지하기 위해 배포 전략, 특히 Flink의 배포 전략은 신중하게 관리됩니다. 기본값 또는 기본 키 변경과 같이 지원되지 않거나 모호한 경우는 특정 수동 복구 경로를 가집니다. 모호한 CREATE TABLE diff는 텍스트 변경에서 의도를 추론하는 대신 데이터베이스의 실제 DDL 기록과 비교하여 해결됩니다. 동시 스키마 변경은 경쟁 조건을 방지하기 위해 순차적으로 처리되어 직렬화된 수렴을 보장합니다. 열 변환은 필요한 변환으로 스키마를 주석 처리하여 관리되며, 이는 수집 파이프라인에 주입됩니다. 오류 처리 및 복구 메커니즘, 특히 Spark 실패의 경우, 마지막 성공한 워터마크부터 처리가 재개되도록 합니다.
CdXz5zHNQW_srAU1TSiiq.png