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

时间:2010-05-20 21:52:51

标签: c# logging caching sql-server-ce

问候,

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

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

最后我的问题 - 您认为这是一个好方法吗?你能想到更好的替代方案吗?我试图搜索SO和Google以加强这个想法,但我主要讨论Web请求/内容缓存。

感谢您的反馈!

2 个答案:

答案 0 :(得分:2)

似乎是一种非常合理的方法。我个人会使用SQL CE进行存储,确保索引保存记录日期时间的列,然后在索引上使用TableDirect来获取和插入数据,这样它的速度非常快。由于您的数据已按时间顺序排列,因此无需使用任何慢速SQL查询处理器,只需查找日期(或结束)并使用SqlCeResultSet前滚即可。你最终只能受到I / O的速度限制。我在一个项目上做了非常相似的事情,发现带有SQLCE的TableDirect和平面二进制文件一样快。

答案 1 :(得分:1)

我认为你正在想要以某种可查询的形式在本地存储它。

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