2011-01-13 6 views
0

Ich habe ein Projekt, wo wir große Menge an Telemetriedaten lesen. Die Telemetrie besteht aus "Kanälen", ein Kanal besteht oft aus Werten von einem einzelnen Sensor. Zum Beispiel ein Temperatursensor.Umgang mit großen Mengen Telemetrie

Jede Lese besteht aus:
A: Der Messwert
B: die Kanal-ID
C: Die Zeit der Messung

Wir die Telemetrie eine ziemlich hohe Geschwindigkeit zu erhalten, bis zu 500 Hz (500 Abtastungen pro Sekunde) und so niedrig wie 1 Hz für jeden Kanal. Die Anzahl gleichzeitiger Kanäle ist in der Regel etwa 150.

Die Raten jeden Kanals können nicht präzise sein, zu erwarten, es kann variieren.

Ich suche eine Sammlung/Algorithmus also die Daten zu verarbeiten und später die Werte angezeigt werden, besteht die Anzeigen von Grafiken und numerischen Ablesungen.

Normalerweise erhalten wir die Daten sequentiell, aber es können Ausfälle von längerer Dauer sein. Auch die fehlenden Daten aus den Ausfällen können später empfangen werden.

So lange Geschichte kurz, ich brauche eine Sammlung, die die Daten strukturieren kann:
A: Muss in der Lage sein, auf eine einzelne Lesung nach Zeit wie Wert (Zeit) zuzugreifen.
B: Muss in der Lage sein, die Werte sequentiell von Zeit a bis b zu lesen.
C: Neue Werte entweder am Ende oder in der Mitte einfügen.

Ich habe eine Implementierung mit skiplist gemacht (http://en.wikipedia.org/wiki/Skiplist). Es scheint alle Anforderungen zu erfüllen, aber es isst viel Speicher. My initial calculations zeigte irgendwo zwischen einem Faktor 5 bis 10 der gemessenen Werte. In der Praxis ist es höher als das.

Ich dachte auch darüber nach, die Werte zu einer Datenbank hinzuzufügen und sie von dort zu lesen, aber es scheint langsam - ich sehe nicht, dass ein SQL-Server so viele Werte so schnell einfügt.

Also, irgendwelche Gedanken über eine Sammlung/Algorithmus, die das tun können?

Antwort

0

Sie könnten in der Lage sein HDF5 für diesen Einsatz. Eine Telemetrieanwendung für dieses Format wird here erwähnt.

+0

Nicht schlecht, ich werde es sicher ansehen. –