갱신 가능 구체화 뷰 사용
갱신 가능 구체화 뷰 없이 사용자 지정 순서 지정 키 정의
특정 행에서 변경되지 않는 순서 지정 키 컬럼을 선택합니다
tenant_id, id)를 순서 지정 키로 사용하는 것이 좋은 선택입니다. 이 컬럼들은 각 행을 고유하게 식별하며, 다른 컬럼이 변경되더라도 tenant_id는 특정 id에 대해 변하지 않습니다. id 기준 중복 제거가 (tenant_id, id) 기준 중복 제거와 일치하므로, tenant_id가 변경될 때 발생할 수 있는 데이터 중복 제거 문제를 피하는 데 도움이 됩니다.
Postgres 테이블의 Replica Identity를 사용자 지정 순서 지정 키로 설정하기
REPLICA IDENTITY를 수정해 순서 지정 키 컬럼이 포함되도록 해야 합니다. 이는 DELETE를 정확하게 처리하는 데 필수적입니다.
REPLICA IDENTITY에 순서 지정 키 컬럼이 포함되지 않으면 Postgres CDC는 프라이머리 키를 제외한 다른 컬럼의 값을 캡처하지 못합니다. 이는 Postgres logical decoding의 한계입니다. 이 경우 Postgres에서 프라이머리 키를 제외한 모든 순서 지정 키 컬럼은 null이 됩니다. 이는 중복 제거에 영향을 미치므로, 행의 이전 버전이 최신 삭제 버전(_peerdb_is_deleted가 1로 설정된 버전)과 중복 제거되지 않을 수 있습니다.
위의 owneruserid와 id 예시에서 프라이머리 키에 owneruserid가 아직 포함되어 있지 않다면, (owneruserid, id)에 UNIQUE INDEX를 생성하고 이를 해당 테이블의 REPLICA IDENTITY로 설정해야 합니다. 이렇게 하면 정확한 복제와 중복 제거에 필요한 컬럼 값을 Postgres CDC가 캡처할 수 있습니다.
아래는 events 테이블에서 이를 수행하는 예시입니다. 순서 지정 키를 수정한 모든 테이블에 동일하게 적용해야 합니다.