JSONB
Бинарное хранение JSON в PostgreSQL с поддержкой индексов и операторов поиска.
col JSONB
col->'key' -- вложенный объект
col->>'key' -- текстовое значение
col @> '{"key":val}' -- содержитОбъяснение
Пример
-- Создать GIN индекс на JSONB
CREATE INDEX ON products USING GIN (attributes);
-- Найти продукты с цветом 'red'
SELECT * FROM products
WHERE attributes @> '{"color": "red"}';
-- Извлечь поле
SELECT name, attributes->>'brand' AS brand FROM products;Связанные термины
Анекдоты по теме
Разработчик переходит с SQL на MongoDB. Первый день: — Свобода! Никакой схемы! Первый месяц: — Хм, данные немного непоследовательны. Первый год: — Мне нужна схема. Где схема?! МонгoDB 4.0: — У нас теперь есть JSON Schema validation.
NoSQL-разработчик стучится в дом к SQL-разработчику. — У тебя схемы нет? — Нет, зато у тебя каждый документ — сам себе сеньор.
— Что такое eventual consistency? — Данные станут согласованными «в конечном счёте». — Когда это приемлемо? — Лайки в соцсетях, счётчики просмотров — небольшая задержка не критична. — Когда неприемлемо? — Банковские переводы, инвентарь товаров. Там нужен ACID. — Один размер не подходит всем. — В этом вся суть NoSQL vs SQL дискуссии.