Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据记录器缓存数据的方法_C#_Logging_Caching_Sql Server Ce - Fatal编程技术网

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

C# 从数据记录器缓存数据的方法,c#,logging,caching,sql-server-ce,C#,Logging,Caching,Sql Server Ce,您好 我一直在开发一个与数据记录器交互的C#NET应用程序。用户可以查询和获取指定时间段的日志,并查看数据图。通常每分钟创建一个新的数据日志,并存储一些参数的测量值。为了从记录器中获得有意义的信息,需要获取合理数量的日志——至少几天的数据。硬件接口是设备上的UART-to-USB模块,它将传输限制在每秒最多30个日志。当读取在数天/数周内采集的数据时,这会变得非常缓慢 我想做的是提高用户的感知性能。我意识到,在硬件速度限制下,用户必须等待整个下载周期,至少在第一次获取更大的数据集时是这样。我的目

您好

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

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

最后,我的问题——你认为这是一个好办法吗?你能想出更好的选择吗?我曾尝试搜索SO和Google来强化这个想法,但我经常会遇到关于web请求/内容缓存的讨论


谢谢你的反馈

我认为您希望以某种可查询的形式在本地存储它是正确的


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

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