Bigtable дизайн Rowkey для данных датчиков в режиме реального времени? - PullRequest
0 голосов
/ 07 января 2019

Ваша компания передает данные датчиков в реальном времени со своего завода в Bigtable, и они заметили крайне низкую производительность. Как изменить ключ строки, чтобы повысить производительность Bigtable для запросов, которые заполняют информационные панели в реальном времени?

a) Use a row key of the form <timestamp>
b) Use a row key of the form <sensorid>
c) Use a row key of the form <timestamp>#<sensorid>
d) Use a row key of the form >#<sensorid>#<timestamp>

Исходя из документации, какой будет идеальный ключ строки в этом случае? Я думаю, что это должен быть ключ строки сенсорида и метки времени, но я видел некоторую онлайн-статью, в которой упоминается только «метка времени» для вышеуказанного домашнего задания. Пожалуйста, помогите.

У меня есть противоречивые теории относительно приведенного выше конкретного варианта использования, как показано ниже: - Поскольку строки отсортированы по лексикографическому признаку, не просто целесообразно использовать метку времени в качестве ключа строки. (Из Документа - использование временной метки само по себе в качестве ключа строки не рекомендуется, так как большинство записей будет помещено на один узел.) - В этом случае использования, поскольку требование представляет собой панель мониторинга в режиме реального времени, это также может означать, что все данные датчика могут храниться только для одной временной метки, поэтому запросы в реальном времени можно выполнять только на основе временной метки.

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

Ответы [ 2 ]

0 голосов
/ 08 августа 2019

Согласно Bigtable Схема проектной документации :

  • «Использование метки времени отдельно в качестве ключа строки не рекомендуется, так как большинство записей будет перенесено на один узел». Так что это исключает вариант A
  • «По той же причине не помещайте отметку времени в начале ключа строки». Там идет вариант C

Кроме того, на странице сказано: «Ваш ключ строки для этих данных может объединять идентификатор для машины с отметкой времени для данных (например, machine_4223421 # 1425330757685).». Это приводит нас к выбору варианта D в качестве лучшего.

Теоретически, вариант B также будет действителен, но вариант D выглядит лучше.

0 голосов
/ 08 января 2019

Проблема в том, что он не указывает, какой запрос показывает панель мониторинга в реальном времени, а также не слишком много информации о производительности. Пожалуйста, обратитесь к схеме для документации данных временных рядов , в которой есть несколько примеров сценариев. Если у вас есть только временная метка в качестве ключа, вы можете страдать от горячей точки. Идеальным ключом будет ## (вариант D), но он всегда зависит от варианта использования, который не очень понятен в вопросе.

...