HBase · Apache HBase 2.6
Поток событий показов (около 400 тыс. в секунду) пишется в HBase. Ключ timestamp + event_id давал один горячий регион, поэтому добавили соль: bucket = event_id % 16, rowkey = bucket + timestamp + event_id, таблица предразбита на 16 регионов.
Отчёту нужны все события за последний час, отсортированные по времени.
В работе: Временные ряды в HBase: компромисс между равномерной записью и чтением по времени.
Как проверяем
Движка HBase в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
Источник: на данных соцсети: поток событий по времени. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Как теперь читать события за час и во что это обходится?
- 16 параллельных сканов — по одному на корзину с границами [bucket + t−1ч, bucket + t) — и слияние 16 упорядоченных потоков на клиенте
- Один скан от t−1ч до t по всей таблице
- Один полный скан таблицы с фильтром по времени
- Убрать соль, но включить предразбиение на 16 регионов по времени