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

180. Соль на 16 корзин: сколько стоит чтение последнего часа

Сложная

HBase · Apache HBase 2.6

Поток событий показов (около 400 тыс. в секунду) пишется в HBase. Ключ timestamp + event_id давал один горячий регион, поэтому добавили соль: bucket = event_id % 16, rowkey = bucket + timestamp + event_id, таблица предразбита на 16 регионов.

Отчёту нужны все события за последний час, отсортированные по времени.

В работе: Временные ряды в HBase: компромисс между равномерной записью и чтением по времени.

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

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

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

Как теперь читать события за час и во что это обходится?

  • 16 параллельных сканов — по одному на корзину с границами [bucket + t−1ч, bucket + t) — и слияние 16 упорядоченных потоков на клиенте
  • Один скан от t−1ч до t по всей таблице
  • Один полный скан таблицы с фильтром по времени
  • Убрать соль, но включить предразбиение на 16 регионов по времени