问候,

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

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

最后我的问题-您认为这是一个好方法吗?您能想到什么更好的选择吗?我曾尝试在SO和Google上进行搜索以增强其构想,但是我大部分时间都在讨论Web请求/内容缓存。

感谢您的任何反馈!

最佳答案

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

关于c# - 从数据记录器缓存数据的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2878128/

10-17 00:04
查看更多