从数据记录器中缓存数据的方法

问题描述:

问候,从数据记录器中缓存数据的方法

我一直在研究与数据记录器交互的C#.NET应用程序。用户可以查询和获取指定时间段的日志,并查看数据图。通常,每分钟创建一个新的数据日志,并存储少量参数的测量值。为了从记录器中获得有意义的信息,需要获取合理数量的日志 - 数据至少需要几天。硬件接口是设备上的UART到USB模块,它将传输限制在最大约30个记录/秒。在读取数天/数周的数据时,这会变得非常缓慢。

我想要做的是提高用户的感知性能。我意识到,在硬件速度限制的情况下,用户至少第一次获得更大的数据集时必须等待完整的下载周期。我的目标是缓存应用程序看到的所有数据,以便在再次请求时可以更快地获得数据。我一直在考虑的方法是使用像SqlServerCe这样的轻量数据库,它可以在收到数据日志时存储它们。然后我希望在查询设备的日志之前先搜索缓存。缓存将随请求获取的任何尚未缓存的日志进行更新。

最后我的问题 - 你会认为这是一个很好的方法吗?你能想到更好的选择吗?我试图搜索SO和Google来强化这个想法,但我主要讨论Web请求/内容缓存。

感谢您的任何反馈!

似乎是一个非常合理的方法。就我个人而言,我会使用SQL CE进行存储,确保您索引包含记录日期时间的列,然后在索引上使用TableDirect获取和插入数据,以便快速实现。由于您的数据已按时间顺序排列,因此不需要涉及任何缓慢的SQL查询处理器,只需查找日期(或结束)并使用SqlCeResultSet进行前滚即可。您最终只能通过I/O限制速度。我在一个项目中进行了真正非常类似的工作,并发现使用SQLCE的TableDirect与平面二进制文件一样快。

我想你是在正确的轨道上想要本地存储在一些可查询的形式。

我强烈推荐SQLite。有一个.NET类here