Обработка большого количества телеметрии

У меня есть проект, где мы читаем большое количество данных телеметрии. Телеметрия состоит из "каналов", канал часто значения от одного датчика. Например, датчик температуры.

Каждое чтение состоит из:
A: измеренное значение
B: идентификатор канала
C: время измерения

Мы получаем телеметрию с довольно высокой скоростью, до 500 Гц (500 выборок в секунду) и до 1 Гц для каждого канала. Количество одновременных каналов обычно составляет около 150.

Нельзя ожидать, что скорость каждого канала будет точной, она может варьироваться.

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

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

Короче говоря, мне нужна коллекция, которая может структурировать данные:
A: Должен быть в состоянии получить доступ к одному чтению по времени, как Значение (время).
B: Должен быть в состоянии прочитать значения последовательно от времени a до b.
C: Вставьте новые значения, либо в конце, либо в середине.

Я сделал реализацию, используя skiplist (http://en.wikipedia.org/wiki/Skiplist). Вроде бы отвечает всем требованиям, но кушает много памяти. Мои первоначальные расчеты показали где-то от 5 до 10 измеренных значений. На практике это выше, чем это.

Я также рассмотрел добавление значений в базу данных и считал их оттуда, но это кажется медленным - я не вижу, чтобы SQL-сервер вставлял так много значений так быстро.

Итак, есть какие-нибудь мысли о коллекции / алгоритме, которые могут это сделать?

1 ответ

Возможно, вы сможете использовать HDF5 для этого.

Приложение телеметрии для этого формата упоминается здесь.

Другие вопросы по тегам