본문 바로가기

Programming/Cloud

[Redshift]PK를 보장하지 않는 레드시프트

안녕하세요. 잇킹 시도르입니다.

 

Redshift를 활용하면서 몇 가지 기존의 RDB와는 다른 점으로 인해서 문제가 종종 있습니다. 이번에는 제약조건 때문인데요. 바로 PK였습니다.

 

PK(기본키)는 Unique Key + NOT NULL입니다. 당연히 PK를 지정했으니, Redshift 테이블에서도 이를 보장할 거라고 생각했는데요. 단위 테스트를 진행하다 보니, PK를 만족하지는 중복된 Row들을 발견할 수 있었습니다.

 

또 PK를 잘못 지정했는지 재확인하고 PK컬럼이 중복이 아닌 건가? 하고 또 확인하고 했었는데요.

 

결론은 Redshift에서 제약조건은 참고용일 뿐 보장하지 않았습니다.

제약조건은 실행 계획의 힌트로 사용되며, PK를 처리를 위해서는 애플리케이션이나 프로시저에서 처리해야 한다는 거였죠.

 

Redshift 개발자 안내서에서 제약 조건에 관련된 링크입니다.

docs.aws.amazon.com/ko_kr/redshift/latest/dg/t_Defining_constraints.html

 

제약 조건 정의 - Amazon Redshift

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다. 제약 조건 정의 고유성, 기본 키 및 외래 키 제약 조건은 참고용일 뿐 Am

docs.aws.amazon.com

AWS의 DW 제품인 Redshift를 활용하면서 이런저런 상황을 겪고 있네요.ㅎㅎㅎ

 

이상입니다!!!