2017-02-04 9 views
1

У меня есть временные ряды данных, передаваемых по точкам, скажем каждые 5 секунд. И точки могут выйти из строя. Я хочу объединить в реальном времени до более высоких временных интервалов, скажем, 5 м, 30 м, 60 м. Моя главная задача - быстро прочитать.Данные агрегирования временных рядов «на лету»

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

Это предпочтительный способ хранения их в кеше памяти (Redis), а затем задание, которое запускается периодически, которое вычисляет совокупность и сбрасывается на диск? Если да, то что, если я получу очко, которое прибудет после выполнения периодической работы? Вернусь ли я назад и выброшу эту точку и снова вычислим этот период?

Я, вероятно, отвечаю на свои вопросы здесь, но я ловляюсь любыми альтернативами там.

Заранее спасибо. Chris :-)

ответ

1

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

Всегда есть компромисс. Как я вижу у вас есть 2 варианта:

  1. Использование обычно используется TSDB - большинство из них предположим, ваши данные упорядоченные. Возможно, вам потребуется заказывать ваши данные. для этого вам нужно будет решить, каково ваше максимальное время, в которое должен прибыть неупорядоченный образец.

  2. Если вы не можете потерять какие-либо данные, вы должны искать инструменты, которые могут постоянно обновлять существующие данные.

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

Если вы ищете структуру временных рядов для redis, я начал работать над модулем (его еще не тестировали в процессе разработки, API могли бы измениться). https://github.com/danni-m/redis-tsdb

1

Существует много вариантов, которые будут использоваться в зависимости от того, насколько точны вам полные числа.

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

Есть также целый ряд открытых баз данных коммерческих временных рядов источника и, как InfluxDB, Druid и т.д. (Поиск Google для «Time Series Database»)