HBase · Apache HBase 2.6
Команда Сбертеха пробовала HBase как оперативное хранилище и упёрлась в типичную проблему: ключи сравниваются как массивы байт, последовательные номера ложатся в один регион.
В нашей версии задачи: профили клиентов пишутся в таблицу с rowkey = client_id (восьмизначный номер, растёт). Ночная загрузка 40 млн обновлений идёт по возрастанию номера. Из 16 регион-серверов работает один, загрузка длится 6 часов.
Обращения к профилю — всегда get по client_id, сканов по диапазону номеров нет.
В работе: Проектирование rowkey для таблиц с монотонными id: заказы, клиенты, события.
Как проверяем
Движка HBase в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
Источник: Блог Сбера на Хабре: HBase как оперативное хранилище, 2018. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Какой rowkey выбрать?
- Детерминированный префикс из хеша: первые 2 байта CRC32(client_id) + client_id, таблица предразбита по префиксу
- Случайная соль 0–15 перед client_id
- client_id + текущее время
- Оставить ключ, увеличить размер региона до 50 ГБ