제약 조건, MATERIALIZED VIEW, JSONB 세 가지 전략으로 정형화 레이어 분리
PostgreSQL에서 데이터 정형화를 효율적으로 하기 위한 전략은 크게 세 가지를 씁니다. 첫째는 입력 단계에서 타입 강제입니다. NOT NULL과 CHECK 제약을 테이블에 걸어두면 잘못된 데이터가 들어오는 걸 막을 수 있습니다. 둘째는 뷰와 함수를 활용한 정규화 레이어입니다. 원본 테이블은 그대로 두고, 정형화 로직은 뷰나 MATERIALIZED VIEW로 분리하면 원본을 건드리지 않고 필요에 따라 갱신할 수 있습니다. 셋째는 비정형 데이터를 JSONB 컬럼에 받아두고 필요한 필드만 나중에 쪼개는 방식입니다. 한계는 매우 큰 테이블에서 정형화 작업이 락을 유발하는 경우를 겪은 적 없어서, 프로덕션 수준의 대용량 마이그레이션은 아직 경험이 없습니다.