В чем разница между JSON и JSONB в PostgreSQL

«В чем разница между JSON и JSONB в PostgreSQL» — вопрос из категории Базы данных, который задают на 24% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

JSON хранится как текст с сохранением пробелов, порядка ключей и дубликатов, а JSONB — в бинарном формате, оптимизированном для обработки.

Основные отличия:

  • Производительность: JSONB быстрее для запросов (индексируется)
  • Хранение: JSONB занимает больше места из-за оптимизации
  • Сравнение: JSONB поддерживает операторы (@>, <@ и т.д.), JSON — только текстовое сравнение

Пример запроса:

-- Создание таблицы с JSON и JSONB
CREATE TABLE test (id SERIAL, data_json JSON, data_jsonb JSONB);

-- Вставка данных
INSERT INTO test (data_json, data_jsonb) 
VALUES ('{"key": "value"}', '{"key": "value"}');

-- Запрос с использованием JSONB оператора
SELECT * FROM test WHERE data_jsonb @> '{"key": "value"}';

Когда использовать:

  • JSON — если важен исходный формат (например, для логов)
  • JSONB — для частых запросов и модификаций данных