Hardjsonb
Что такое JSONB в PostgreSQL?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
JSONB — бинарное представление JSON в PostgreSQL: распарсенное, индексируемое и эффективно запрашиваемое (в отличие от текстового JSON).
CREATE TABLE products (
id SERIAL PRIMARY KEY,
metadata JSONB
);
INSERT INTO products (metadata)
VALUES ('{"color": "red", "price": 100, "tags": ["new", "sale"]}');
-- ->> возвращает text, -> возвращает JSONB
SELECT * FROM products WHERE metadata->>'color' = 'red';
-- @> — containment (содержит ли объект)
SELECT * FROM products WHERE metadata @> '{"color": "red"}';
-- GIN-индекс для быстрого поиска по любым ключам
CREATE INDEX idx_meta ON products USING GIN (metadata);Применяют для гибкой схемы (user-defined атрибуты), API-payload, полуструктурированных данных. Заменяет антипаттерн EAV (entity-attribute-value).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.