Bigtable: избегание горячих точек при использовании меток времени на ключах строк - PullRequest
0 голосов
/ 27 февраля 2019

Облачные документы Bigtable по разработке схемы для временных рядов говорят:

В подавляющем большинстве случаев запросы временных рядов обращаются к заданному набору данных за определенный период времени.,Поэтому убедитесь, что все данные за определенный период времени хранятся в смежных строках, если только это не приведет к горячей точке.

Кроме того, вот что они рекомендуют избегать горячей точки :

Если вы храните информацию о состоянии батареи сотового телефона, а ключ строки состоит из слова «БАТАРЕЯ» плюс метка времени, ключ строки всегда будет последовательно увеличиваться.Поскольку Cloud Bigtable хранит смежные ключи строк на одном и том же узле сервера, все записи будут сосредоточены только на одном узле, пока этот узел не будет заполнен, и в этот момент записи будут перемещены на следующий узел в кластере.

Рекомендуется продвижение полей:

Переместите поля из данных столбца в ключ строки, чтобы сделать записи несмежными.

Например:

BATTERY#20150301124501001 --> BATTERY#Corrie#20150301124501001

Вопросы:

  1. Промоушен в поле может решить проблему хотспоттинга.Тем не менее, не затруднит ли это запрос по временному диапазону?
  2. С другой стороны, можно ли избежать горячей точки, если вы хотите запросить диапазон ТОЛЬКО по TIMESTAMP?Не думай так, правда?

Спасибо!

1 Ответ

0 голосов
/ 28 февраля 2019
  1. Продвижение по месту может решить проблему горячей точки.Тем не менее, не затруднит ли это запрос по временному диапазону?

Это зависит от того, как выглядит ваш запрос.Например, если вы хотите запросить состояние батареи Корри от T1 до T2, вы можете легко построить диапазон строк: [BATTERY#Corrie#T1, BATTERY#Corrie#T2].Однако, если вы хотите запросить информацию о состоянии батареи всех пользователей, тогда будут отсканированы все строки с префиксом BATTERY.

Итак, самые важные запросы, которые у вас есть, должны определять, какие поля вы продвигаете к ключу строки.Кроме того, поля с высокой мощностью кардинально помогают при повышении до ключа строки, поскольку они распределяют нагрузку на большее количество планшетов.

С другой стороны, можно ли избежать «горячих точек», если вы хотите запросить диапазон ТОЛЬКО по TIMESTAMP?Не думайте так, верно?

Я не совсем уверен, что вы подразумеваете под "запросом диапазона только к временной метке", можете ли вы привести пример?

Многое будет зависеть от того, что означает «TIMESTAMP».Если вы всегда хотите делать запросы в течение последних 10 минут, то все ваши запросы будут отправляться на один сервер в любой момент времени, и у вас возникнет горячая точка.

Еще одна вещь, о которой следует помнить, это то, что, если вы не спроектируете ключ строки правильно, записи встретятся с горячей точкой, и вы не получите хорошую пропускную способность записи.Рекомендуется создавать ключи строк, чтобы избежать появления горячих точек.

...