Конструкция ключа строки HBase: точка доступа в зависимости от местоположения
Рассмотрим гипотетическую таблицу HBase.
- Ключ должен кодировать 3-кортеж
(k, m, n)
целых чисел от 0 до 1000. - Типичное чтение - это запрос диапазона
m
а такжеn
, фиксируя значениеk
, - Нагрузка чтения экспоненциально распределяется по отношению к
k
, Другими словами, несколько значенийk
несут ответственность за большую часть прочитанной нагрузки.
Алиса утверждает, что ключ должен выглядеть так "k-m-n"
для того, чтобы использовать местность ссылки. В идеале одна машина должна быть в состоянии обслуживать весь запрос.
Боб утверждает, что ключ должен выглядеть так "sha1(k-m)-n"
во избежание горячих точек: если k=1
доступ очень часто, то было бы мудрым для всех k=1
Записи не все должны быть на одних и тех же нескольких машинах.
Оба аргумента имеют смысл для меня. Как выяснить, какой вариант более масштабируемый / перспективный? Есть ли быстрый, практичный способ проверить это эмпирически?