- Published on
Apache Iceberg 포맷 v3는 모든 행에 안정적인 식별자를 부여하는 로우 리니지를 스펙에 넣었고, 이건 옵션이 아니라 v3 테이블이면 무조건 켜집니다. 그런데 이 값은 데이터 파일에 저장되지 않습니다 — 테이블의 next-row-id에서 스냅샷, 매니페스트, 데이터 파일로 내려오는 상속 체인을 통해 읽는 시점에 계산됩니다. 낙관적 커밋이 재시도될 때 데이터 파일을 다시 쓰지 않기 위한 설계인데, 대신 리니지를 지켜야 할 책임이 모든 writer에게 넘어갑니다. 이 글은 상속 체인이 실제로 어떻게 동작하는지 스펙 원문으로 따라가고, 컴팩션·equality delete·업그레이드된 테이블·브랜치에서 리니지가 끊기는 지점을 짚은 뒤, 2026년 7월 현재 엔진별 구현 실태를 소스 코드 수준에서 확인합니다. 스펙의 "must"와 구현의 거리가 생각보다 멉니다.