У меня есть два API, которые должны возвращать информацию из HBase:
- Все строки, связанные с определенным c ключом продукта (например,
"2KSL6-S4X56"
) - Все строки которые связаны с названием продукта (например,
"magic_mouse"
)
Таким образом, ключ строки может быть 2020-07-05_2KSL6-S4X56
или 2020-07-05_magic_mouse
. Когда продавец ищет информацию с использованием параметров (product key, date)
ИЛИ (product name, date)
, API должен получить все строки для заданной даты, а затем выполнить фильтр префикса, используя либо ключ, либо имя.
Теперь проблема в том, что мы обнаружили, что некоторые региональные серверы используются чаще, чем другие.
Мы думаем, что это из-за плохой конструкции rowkey, поэтому мы хотели бы изменить rowkey (например, 05-07-2020, чтобы поставить день перед месяцем и годом) , или добавить случайные буквы в начале.
У меня есть два вопроса по этой проблеме:
Я заметил, что хотя наш rowkey увеличивается на временную метку, область вновь разделенный не находится на том же сервере региона, что и последний. Зачем ? Если я правильно понимаю, когда начальная буква (например, 2020) остается прежней, она всегда должна писать на один и тот же региональный сервер. У нас нет предопределенного префикса разделения.
Если мы хотим отменить временную метку, как определить startRow
и endRow
? Потому что строки больше не увеличиваются.