Back to questions
Middle+
6
Чем отличается JSON от JSONB в PostgreSQL?
Companies where asked
Magnit Tech
Answer from AI
sobes.tech AI
В PostgreSQL типы данных json и jsonb используются для хранения JSON-данных, но имеют важные отличия:
- json — хранит данные в виде текстовой строки, как они были переданы. При каждом запросе данные парсятся заново.
- jsonb — хранит данные в бинарном формате, который оптимизирован для быстрого доступа и индексирования.
Основные отличия:
-
Производительность
jsonbбыстрее при поиске и фильтрации, так как данные уже проиндексированы и структурированы.jsonмедленнее, так как требует парсинга текста при каждом запросе.
-
Хранение
jsonbзанимает немного больше места из-за бинарного формата, но это компенсируется скоростью.
-
Поддержка индексов
jsonbподдерживает GIN и GiST индексы, что позволяет эффективно выполнять запросы по ключам и значениям.jsonне поддерживает такие индексы.
-
Поведение при сохранении
jsonbнормализует данные: убирает пробелы, сортирует ключи, что может изменить исходный порядок.jsonсохраняет данные как есть.
Пример использования jsonb:
CREATE TABLE example (
data jsonb
);
INSERT INTO example VALUES ('{"name": "Alice", "age": 30}');
-- Поиск по ключу
SELECT * FROM example WHERE data->>'name' = 'Alice';
В большинстве случаев рекомендуется использовать jsonb из-за лучшей производительности и функциональности.