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;Связанные термины
Анекдоты по теме
JSONB в PostgreSQL говорит разработчику: — Хочешь гибкость документной базы? Я есть. — Хочешь индексы по полям внутри JSON? Я могу. — Хочешь JOIN с другими таблицами? Без проблем. — Ты... лучшее из двух миров? — Не рассказывай MongoDB.
NoSQL-разработчик стучится в дом к SQL-разработчику. — У тебя схемы нет? — Нет, зато у тебя каждый документ — сам себе сеньор.
— Что такое CAP теорема? — Consistency, Availability, Partition tolerance — выбери два из трёх. — Это значит распределённые базы ненадёжны? — Нет. Partition tolerance обязательна. Реальный выбор: CP (PostgreSQL, MongoDB) или AP (Cassandra, CouchDB). — А PACELC? — Более реалистичная модель. Но это уже другая история.