Выбор ответа Middle NoSQL и выбор хранилища обновлено
jsonb вместо документной базы
Вопрос
У товаров разные наборы характеристик (у ноутбука одни, у платья другие). Команда работает на PostgreSQL. Что разумнее всего?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Характеристики в колонке jsonb с GIN-индексом, остальное в колонках. jsonb хранит документ в разобранном бинарном виде, поддерживает операторы вхождения и индексы GIN, и при этом заказы, цены и остатки остаются в нормальных таблицах с транзакциями.
Варианты ответа
- Перенести каталог в MongoDB: реляционная база не умеет гибкие поля
- Характеристики в колонке
jsonbс GIN-индексом, остальное в колонкахправильный ответ - Сделать отдельную колонку под каждую возможную характеристику
- Хранить характеристики строкой JSON в колонке text и парсить в коде
Разбор
jsonb хранит документ в разобранном бинарном виде, поддерживает операторы вхождения и индексы GIN, и при этом заказы, цены и остатки остаются в нормальных таблицах с транзакциями. Отдельная база ради одной гибкой части добавляет эксплуатацию и синхронизацию. Сотни колонок под все характеристики почти все пустые и неудобны. Текст вместо jsonb лишает индексов и проверки формата.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.