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