Войти Регистрация
Data base

176. История цен товара: версии ячейки или строки

Средняя

HBase · Apache HBase 2.6

Цена товара лежит в ячейке p:price, rowkey — sku. Аналитики просят историю цен за 90 дней, чтобы ловить ложные скидки.

Разработчик выставил семейству VERSIONS => 10000. Через месяц у части товаров с автоматическим репрайсингом (до 50 изменений в день) get по sku возвращает сотни килобайт, а из 10 тыс. версий видно только последние.

В работе: Хранение истории значений в HBase: когда хватает версий, а когда нужна отдельная таблица.

Как проверяем Движка HBase в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
версииrowkeyобратная метка времени

Источник: на данных маркетплейса: цены и скидки. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.

Как хранить историю цен?

  • Текущая цена — ячейка с VERSIONS => 1, история — отдельная таблица с rowkey = sku + (Long.MAX_VALUE − ts) и TTL 90 дней
  • Оставить VERSIONS => 10000
  • VERSIONS => 1 и писать историю в ту же ячейку как JSON-массив
  • Хранить историю в версиях, но поставить MIN_VERSIONS => 0