JSON в SQL-базах данных
Коротко: Современные SQL-базы данных умеют хранить, запрашивать и индексировать документы JSON в столбцах. Так смешивают жёсткие таблицы с гибкими данными.
Подробнее: PostgreSQL (json, jsonb), MySQL (JSON) и SQLite (функции JSON) предлагают операторы для чтения и фильтрации полей документа.
Подробности
- PostgreSQL:
jsonbхранит в двоичном виде, быстрее запрашивается и индексируется (GIN).data->'name'возвращает JSON,data->>'name'— текст,data @> '{"type":"a"}'проверяет вхождение. - Когда уместно: Редко используемые или очень разнородные атрибуты, сырые данные интерфейсов, настройки, события с меняющимися полями.
- Когда нет: Для данных, по которым часто фильтруют, соединяют и которым нужна согласованность. Внешних ключей, проверки типов и ограничений в JSON нет.
- Компромисс: Важные поля — настоящие столбцы, остальное — JSON. Генерируемые столбцы или индексы по выражениям JSON ускоряют запросы.
- Ловушки: Изменение одного поля часто перезаписывает весь документ. Крупные значения JSON замедляют таблицы.
- Альтернатива: Документная база данных, см. обзор NoSQL.
См. также: индексы PostgreSQL