我有一个项目,我们在其中读取大量遥测数据。遥测由“通道”组成,通道通常是来自单个传感器的值。例如温度传感器。
每个读数包括:
A:测量值
B:通道 ID
C:测量时间
我们以相当高的速率接收遥测数据,最高可达 500 Hz(每秒 500 个样本),每个通道低至 1 Hz。同时通道的数量通常约为 150 个。
不能期望每个通道的速率是精确的,它可能会有所不同。
所以我正在寻找一个集合/算法来处理数据并稍后显示值,显示由图表和数字读数组成。
通常我们会按顺序接收数据,但可能会出现更长时间的中断。也可以稍后接收来自中断的丢失数据。
长话短说,我需要一个可以结构化数据的集合:
A:必须能够按时间访问单个读数,例如 Value(time)。
B:必须能够从时间 a 到 b 顺序读取值。
C:在末尾或中间插入新值。
我已经使用跳过列表(http://en.wikipedia.org/wiki/Skiplist)进行了实现。它似乎满足了所有要求,但它吃掉了很多内存。我最初的计算显示在测量值的 5 到 10 倍之间。在实践中,它会更高。
我还考虑将值添加到数据库中,并从那里读取它们,但它似乎很慢 - 我没有看到 SQL 服务器快速插入那么多值。
那么,对可以做到这一点的集合/算法有什么想法吗?