전체 용어 목록

JSONB 타입

PostgreSQL의 JSONB란 무엇이며 JSON과 어떻게 다른가요?

jsonb는 JSON을 분해된 바이너리 형식으로 저장하므로 빠르게 쿼리할 수 있고 인덱스를 만들 수 있습니다. 대부분의 애플리케이션이 사용해야 할 JSON 타입입니다.

PostgreSQL에는 두 가지 JSON 타입이 있습니다. json은 입력 텍스트를 그대로 복사해 저장하고, jsonb는 분해된 바이너리 형태로 저장합니다. jsonb는 변환 때문에 쓰기가 약간 느리지만 처리 속도가 훨씬 빠르며 인덱싱을 지원합니다.

jsonb는 공백, 키 순서, 중복 키를 보존하지 않습니다. 키가 두 번 나타나면 마지막 값만 유지됩니다. JSON 값을 가져오려면 ->, 텍스트를 가져오려면 ->>를 사용하고, 한 문서가 다른 문서를 포함하는지 확인하려면 @>를 사용하세요. jsonb 열에 GIN 인덱스를 만들면 포함 쿼리와 키 존재 쿼리가 빨라집니다.

예제

이 예제는 @> 연산자로 city가 Osaka인 프로필을 찾고, 다른 프로필의 문서를 보기 좋게 출력합니다.

CREATE TABLE profiles (id int PRIMARY KEY, data jsonb NOT NULL);
INSERT INTO profiles VALUES
  (1, '{"name": "Ana", "city": "Lisbon", "tags": ["admin"]}'),
  (2, '{"name": "Ben", "city": "Osaka"}');

SELECT data->>'name' AS name FROM profiles WHERE data @> '{"city": "Osaka"}';
SELECT jsonb_pretty(data) FROM profiles WHERE id = 1;

확장 없이 기본 PostgreSQL 16 또는 17에서 실행되는 일반 SQL입니다. 버려도 되는 빈 데이터베이스에서 실행하세요.

출처

PostgreSQL 공식 문서(영문)입니다.

관련 용어