保存并处理大量测量数据

时间:2013-11-09 16:59:19

标签: c# database

我即将制作一个C#程序,它将记录振动并对其进行分析,以确定是否存在在一个频率范围内增加振幅的趋势。这显然包括保存和处理大量数据,因为我是这种编程的新手,我不知道应该怎么做,并且会深深体会到一些提示!我将有一些传感器,所以如果程序可以自动为每个传感器创建一个新的数据库。

数据显然是某种向量,在C#中可能意味着列表(我将使用采样频率为60 kHz的DAQ单元收集数据)。为了找到频率变化的趋势,人们当然希望在保存新读数之前阅读所有旧数据并与新读数进行比较,但我知道很快就不可能。有没有人知道如何实际做到这一点?

非常感谢提前!

阿克塞尔

2 个答案:

答案 0 :(得分:2)

如果这是大规模的大量机器,我建议看看OPC或PI。否则你可能只想选择一个数据库:MySQL? SQL Express?别的......?

考虑一下你真正需要多少数据。您是否每秒保留60,000个测量点,或者您是平均读数还是每秒输入一次?或者您是否跟踪时间间隔内的最小值/最大值?您是否每周/每月/每天批量清理旧读数?只是思考的一些起点...

我正在盯着添加另一条评论,但时间太长了,所以这里有:

我知道在reddit / r /编程(我喜欢阅读)上经常会提到MariaDB。它似乎是新的“性感”之一(我的意思是很多人都在谈论它)技术。这是一个有趣的搜索,显示许多大公司从MySQL切换到MariaDB。这是一个值得思考的问题。 http://www.reddit.com/r/programming/search?q=mariadb Reddit / r /编程是一个很好的网站,可以偶尔看一下,以获得有关技术的想法。

您可能无法使用这些数据库,您可以随时从一个数据库开始,然后再转移到其他数据库。就像我说的那样,如果事情开始变得越来越沉重,你可能会想要看看OPC或Pi。谷歌“Data Historian”或OPC或Pi :)但是现在,从这些数据库中的一个开始并进行编程。使用谷歌,尝试找到有关数据历史记录,振动分析等的论坛。

答案 1 :(得分:1)

根据您的描述,在我看来,您需要更多地考虑解决方案的布局。在掌握算法本身之前,您无法考虑存储。

我将尝试为您提供有关存储策略的一些指导原则,您可以将其考虑在内:

  1. 如果你在内存中进行所有计算并且只需要DB来保持持久性,你可以简单地将它们存储为BLOB。
  2. 如果向量随时间变化,或者计算足够简单,则可以以在DB中保留其结构的方式存储向量,并使用存储过程或支持的脚本语言在DB中执行计算。这样,您就不需要在数据库和应用程序之间来回拉取数据。当然这有点困难,因为编写或维护存储过程并不是很有趣。
  3. 你真的需要自己保留载体吗?如果您的算法最终会消化它们并对结果起作用 - 这就是实际需要存储的所有内容。