HBase · Apache HBase 2.6
Цена товара лежит в ячейке p:price, rowkey — sku. Аналитики просят историю цен за 90 дней, чтобы ловить ложные скидки.
Разработчик выставил семейству VERSIONS => 10000. Через месяц у части товаров с автоматическим репрайсингом (до 50 изменений в день) get по sku возвращает сотни килобайт, а из 10 тыс. версий видно только последние.
В работе: Хранение истории значений в HBase: когда хватает версий, а когда нужна отдельная таблица.
Как проверяем
Движка HBase в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
Источник: на данных маркетплейса: цены и скидки. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Как хранить историю цен?
- Текущая цена — ячейка с VERSIONS => 1, история — отдельная таблица с rowkey = sku + (Long.MAX_VALUE − ts) и TTL 90 дней
- Оставить VERSIONS => 10000
- VERSIONS => 1 и писать историю в ту же ячейку как JSON-массив
- Хранить историю в версиях, но поставить MIN_VERSIONS => 0