생성 컬럼의 문제점
-
pgoutput를 통해 게시되지 않음: 생성 컬럼은pgoutput논리적 복제 플러그인을 통해 게시되지 않습니다. 즉, PostgreSQL에서 다른 시스템으로 데이터를 복제할 때 생성 컬럼의 값은 복제 스트림에 포함되지 않습니다. - 기본 키 관련 문제: 생성 컬럼이 기본 키의 일부인 경우, 대상에서 중복 제거 문제가 발생할 수 있습니다. 생성 컬럼 값은 복제되지 않으므로, 대상 시스템에는 행을 올바르게 식별하고 중복 제거하는 데 필요한 정보가 없게 됩니다.
- 스키마 변경 관련 문제: 이미 복제 중인 테이블에 생성 컬럼을 추가하면 Postgres가 새 컬럼에 대한 RelationMessage를 제공하지 않기 때문에, 새 컬럼 값이 대상에 채워지지 않습니다. 이후 같은 테이블에 새 비생성 컬럼을 추가하면 ClickPipe가 스키마를 동기화하는 과정에서 대상에 생성 컬럼이 없다는 사실을 확인하게 되고, 그 결과 복제 프로세스가 실패합니다.
모범 사례
-
대상에서 생성 컬럼 다시 생성하기: 생성 컬럼 처리를 복제 프로세스에 맡기기보다는,
dbt(data build tool) 또는 기타 데이터 변환 메커니즘을 사용해 대상에서 해당 컬럼을 다시 생성하는 것이 좋습니다. - 기본 키(primary key)에서 생성 컬럼 사용 피하기: 복제될 테이블을 설계할 때는 생성 컬럼을 기본 키의 일부로 포함하지 않는 것이 가장 좋습니다.
UI의 향후 개선 사항
- 생성 컬럼이 있는 테이블 식별: UI에는 생성 컬럼이 포함된 테이블을 식별하는 기능이 추가될 예정입니다. 이를 통해 이 문제의 영향을 받는 테이블을 파악할 수 있습니다.
- 문서 및 모범 사례: UI에는 복제된 테이블(Replicated Table)에서 생성 컬럼을 사용할 때의 모범 사례와 함께, 흔한 실수를 피하는 방법에 대한 안내가 포함될 예정입니다.