JSONB란 무엇인가?

OneTwo·2026년 1월 15일

📦 JSONB란 무엇인가?

PostgreSQL을 사용하다 보면 컬럼 타입으로
JSONJSONB가 따로 존재하는 걸 보게 된다.

처음에는
“JSON이면 JSON이지, 왜 B가 붙은 게 따로 있지?”
라는 생각이 들었고,
실제로는 대부분 JSONB를 사용한다고 해서 정리해보게 되었다.


JSONB 한 줄로 정리하면

JSONB는 JSON 데이터를 이진(Binary) 형태로 저장하는 PostgreSQL의 데이터 타입이다.

JSONB는 단순히 JSON 문자열을 저장하는 것이 아니라,
PostgreSQL이 내부적으로 파싱해서 구조화된 형태로 저장한다.


JSON과 JSONB의 차이

PostgreSQL에는 JSONJSONB 두 가지 타입이 있다.

구분JSONJSONB
저장 방식문자열 그대로 저장이진(Binary) 형태로 저장
검색 속도느림빠름
인덱스불가능가능
사용 빈도낮음높음

JSONB는 왜 더 많이 쓰일까?

JSONB는 데이터를 저장할 때 한 번 파싱해서
이진 형태로 저장한다.

그래서:

  • 특정 키 값 조회가 빠르고
  • 인덱스를 사용할 수 있고
  • 연산에 유리하다

반면 JSON 타입은
문자열 그대로 저장되기 때문에
조회할 때마다 파싱이 필요하다.


JSONB 사용 예시

JSONB 컬럼을 가진 테이블 예시다.

CREATE TABLE orders (
    id SERIAL,
    info JSONB
);

데이터를 JSON 형태로 저장할 수 있다.

INSERT INTO orders (info)
VALUES ('{"product": "book", "price": 10000}');

JSONB 내부 값 조회도 가능하다.

SELECT info->>'product'
FROM orders;

이렇게 JSON 구조 안의 값에 바로 접근할 수 있다.


JSONB는 언제 사용하면 좋을까?

JSONB는 다음과 같은 경우에 유용하다.

  • 구조가 자주 바뀌는 데이터
  • 외부 API 응답을 그대로 저장해야 하는 경우
  • 설정 정보나 옵션 값 저장
  • 모든 필드를 컬럼으로 만들기 애매한 경우

예를 들면:

  • 결제 정보
  • 로그 데이터
  • 사용자 설정 값

JSONB를 사용할 때 주의할 점

JSONB가 편리하다고 해서
모든 데이터를 JSONB로 저장하는 것은 좋지 않다.

  • 자주 조회되는 값
  • 정형화된 데이터
  • 관계가 중요한 데이터

이런 경우에는
일반 컬럼으로 분리하는 것이 더 좋다.

JSONB는 보조적인 용도로 사용하는 게 적절하다.


정리해보면

JSONB는 PostgreSQL에서
유연한 구조의 데이터를 효율적으로 저장하고 조회할 수 있는 데이터 타입이다.

구조가 자주 바뀌거나
모든 필드를 컬럼으로 만들기 애매한 경우에
특히 강점을 가진다.

profile
매일 성장하는 개발자

0개의 댓글