HBASE Последовательный ключ строки (ГГГГММДДЧЧММСС), детерминированная неслучайная соль
Начальная начальная часть моего ключа строки выглядит как "ГГГГММДДччммсс", где "ss" всегда равно 00. Пример: 20170603162100, что соответствует 16:21 06 июня 2017 г. (Не спрашивайте меня, почему, но отметка времени должна быть на начало ключа!)
Это, очевидно, каждая минута (и, очевидно, каждая минута уникальна) данных.
Это страдает от горячих точек региона. Ключи строк будут такими на сервере региона:
Мои шаблоны чтения: получение данных за уникальную минуту (не за час, за день, за месяц, за год)
Скажем, у меня есть 10 региональных серверов.
Вот решение, о котором я думаю, которое выглядит как соль (но является детерминированным, а не случайным):
Я вижу мм Part - минуты и назначаю соль на основе этого. 00 минут: префикс A к клавише строки 01 минута: префикс B к клавише строки. 09 минута: префикс J к клавише строки 10 минута: префикс A к клавише строки
Таким образом, все ключи "А" должны распространяться на первый сервер региона и т. Д. Преимущества могут быть: все одноминутные запросы на один и тот же региональный сервер, что для меня терпимо. И уже в следующую минуту все запросы к какому-то другому серверу региона.
Кроме того, при извлечении мне не нужно выполнять параллельное чтение, потому что я действительно знаю соль.
Может кто-нибудь объяснить, если я где-то не так?
1 ответ
Ну, у вас есть только 27 минут, покрытых английским алфавитом, вероятно, я бы посоветовал использовать двухбуквенную соль, она все равно должна распределяться правильно. (Сколько у вас узлов?).
Кроме того, вы можете просто удалить секунды из вашего ключа строки и повернуть его вспять.