Обработка большого количества телеметрии
У меня есть проект, где мы читаем большое количество данных телеметрии. Телеметрия состоит из "каналов", канал часто значения от одного датчика. Например, датчик температуры.
Каждое чтение состоит из:
A: измеренное значение
B: идентификатор канала
C: время измерения
Мы получаем телеметрию с довольно высокой скоростью, до 500 Гц (500 выборок в секунду) и до 1 Гц для каждого канала. Количество одновременных каналов обычно составляет около 150.
Нельзя ожидать, что скорость каждого канала будет точной, она может варьироваться.
Поэтому я ищу коллекцию / алгоритм для обработки данных и последующего отображения значений, отображение состоит из графиков и числовых показаний.
Обычно мы получаем данные последовательно, но могут быть перебои с более длительным периодом. Также недостающие данные от отключений могут быть получены позже.
Короче говоря, мне нужна коллекция, которая может структурировать данные:
A: Должен быть в состоянии получить доступ к одному чтению по времени, как Значение (время).
B: Должен быть в состоянии прочитать значения последовательно от времени a до b.
C: Вставьте новые значения, либо в конце, либо в середине.
Я сделал реализацию, используя skiplist (http://en.wikipedia.org/wiki/Skiplist). Вроде бы отвечает всем требованиям, но кушает много памяти. Мои первоначальные расчеты показали где-то от 5 до 10 измеренных значений. На практике это выше, чем это.
Я также рассмотрел добавление значений в базу данных и считал их оттуда, но это кажется медленным - я не вижу, чтобы SQL-сервер вставлял так много значений так быстро.
Итак, есть какие-нибудь мысли о коллекции / алгоритме, которые могут это сделать?