JSON을 저장하면서도 질의한다
JSONB는 JSON을 넣을 때 이진 형태로 해석해 저장해. 원문 텍스트를 그대로 보존하는 JSON과 달리 키 순서나 공백보다 값의 구조를 다루며 GIN 색인과 풍부한 연산자를 쓸 수 있어.
자주 쓰는 연산자
->는data->'user'처럼 JSONB 값을,->>는data->>'name'처럼 텍스트를 꺼내.data @> '{"type":"click"}'는@>포함 관계를,data ? 'email'은?로 키 존재를 검사해.jsonb_path_exists(data, '$.orders[*] ? (@.total > 100)')처럼 SQL/JSON 경로로 중첩 구조를 찾을 수 있어.
유연함과 무규칙은 달라
이벤트 payload나 외부 API 응답처럼 모양이 정말 달라지는 부분에는 JSONB가 좋아. 모든 행에 같은 필드가 있다면 자료형과 제약을 가진 실제 열로 올려. JSONB는 스키마를 피하는 면허가 아니지만, 정말 가변적인 문서라면 많은 경우 MongoDB를 별도로 두지 않고도 다룰 수 있어.
모든 행에 같은 5개 필드가 반복된다면 JSONB가 아니라 실제 열로 승격할 신호야.