JSONB 잡는 좋은 이유 셋
- 진짜 가변 모양: 여러 소스에서 오는 이벤트 payload, audit log, 외부 API 스냅샷.
- 희소, 선택 필드: 가능한 50 속성, 어떤 행이든 5-10 개 사용.
- 설정 또는 flag bag: 키 집합이 시간에 따라 진화하는 유저 설정.
나쁜 이유 셋 (하지 마)
- "스키마 마이그레이션 회피." 마이그레이션 비용은 진짜지만 schema-less 비용이 더 큼 — 데이터 모든 소비자에게 검증 문제 떠넘김.
- "유연하니까." 유연성은 OK; 제어 안 된 유연성이 기술 부채.
- "ORM 이 쉽게 해서." ORM 이 데이터에 쿼리 안 함 — 미래 자기가 함.
하이브리드 접근
맞는 패턴은 보통: 안정 필드 진짜 컬럼에 (NOT NULL, CHECK, FK 와), 가변 부분 JSONB sidecar 에. Relational 정합성 + JSON 유연성 둘 다, 어느 쪽도 타협 없이.