Sobes.tech
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 — хранит данные в бинарном формате, который оптимизирован для быстрого доступа и индексирования.

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

  1. Производительность

    • jsonb быстрее при поиске и фильтрации, так как данные уже проиндексированы и структурированы.
    • json медленнее, так как требует парсинга текста при каждом запросе.
  2. Хранение

    • jsonb занимает немного больше места из-за бинарного формата, но это компенсируется скоростью.
  3. Поддержка индексов

    • jsonb поддерживает GIN и GiST индексы, что позволяет эффективно выполнять запросы по ключам и значениям.
    • json не поддерживает такие индексы.
  4. Поведение при сохранении

    • jsonb нормализует данные: убирает пробелы, сортирует ключи, что может изменить исходный порядок.
    • json сохраняет данные как есть.

Пример использования jsonb:

CREATE TABLE example (
    data jsonb
);

INSERT INTO example VALUES ('{"name": "Alice", "age": 30}');

-- Поиск по ключу
SELECT * FROM example WHERE data->>'name' = 'Alice';

В большинстве случаев рекомендуется использовать jsonb из-за лучшей производительности и функциональности.