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 подскажет развёрнутый ответ в реальном времени.