EMZETT.
Увійти

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