Типы данныхСредний
JSONB
Бинарное хранение JSON в PostgreSQL с поддержкой индексов и операторов поиска.
Синтаксис
col JSONB
col->'key' -- вложенный объект
col->>'key' -- текстовое значение
col @> '{"key":val}' -- содержитОбъяснение
JSONB парсит JSON и хранит в бинарном виде — быстрее читать и индексировать.
JSON хранит оригинальный текст — медленнее, зато сохраняет порядок ключей.
JSONB поддерживает GIN-индексы для поиска по вложенным полям. Операторы: -> (объект), ->> (текст), @> (содержит), ? (ключ существует).
Пример
-- Создать 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;Связанные термины
Анекдоты по теме
— NoSQL — это база без SQL? — Нет. NoSQL — Not Only SQL. Многие NoSQL базы теперь поддерживают SQL-подобный синтаксис. — Тогда зачем NoSQL? — Горизонтальное масштабирование, гибкая схема, специализированные структуры данных.
NoSQL-разработчик стучится в дом к SQL-разработчику. — У тебя схемы нет? — Нет, зато у тебя каждый документ — сам себе сеньор.
— Когда использовать Redis? — Кэш, сессии, очереди, рейт-лимитинг, лидерборды. — А как основную базу данных? — Только если данные можно потерять при рестарте, или у вас RDB/AOF настроен. И это осознанный выбор.