繁体   English   中英

处理大量永久数据的最佳方法

[英]Best way to handle large amount of permanent data

我正在Visual Studio中开发PC应用程序,其中显示了通过WiFi连接的数百个传感器的状态。 问题是即使关闭应用程序后也需要保留传感器数据,因此我正在考虑某种形式的永久存储。 这些是我考虑过的选项:

1)我的Sensor对象相对紧凑,只有几个属性。 我可以在关闭应用程序之前序列化所有对象,并在每次重新启动应用程序时加载它们。

2)我可以将所有属性(主要是字符串和双精度)放入一个简单的文本文件中,并创建用于存储和检索的自定义协议。

3)我可以将数据库与我的应用程序集成。 有人告诉我这是最好的解决方法,但是由于我对DB不熟悉,所以我有点犹豫。

哪种方法在资源使用和速度方面会产生最好的结果? 还是有其他更好的方法可以解决此问题?

您需要了解的第一件事就是您的问题。 例如,在程序运行时,您是否需要同时将所有内容存储在内存中?还是一次使用一个传感器?

什么是“大量数据”? 例如,对我来说,它永远不会少于百万(在某些情况下甚至是十亿)。

一旦您知道您不应该因为不熟悉而害怕使用某些东西。 否则,您不是在寻找解决问题的最佳解决方案,而是以一种自在的方式来解决它。

话虽这么说,您有几种方法可以做到这一点。 就像您说的那样,您可以序列化数据,使用json进行存储和其他一些选择,但是如果我们谈论的是“我们要保留的大量数据”,我总是会呼吁使用数据库(名称说了很多)。 如果您不需要同时存储所有内容,那么我相信这是您的最佳选择。

我个人不喜欢它们(再次是个人选择),但是在您仍然使用对象时不学习SQL(很多)的一种方法是使用像NHibernate这样的ORM(您还需要学习如何使用它,这样您才能不要让事情变慢)。

如果您需要同时加载所有内容(通常不是这样,请确保对此有所了解),则需要知道要保留的内容并对其进行序列化。 如果您希望其他工具可以读取该数据或以给定的方式组织该数据,请考虑使用XML或JSON之类的数据格式。

另外,您可以使用mmap文件。 文件是永久的,并在程序运行之间保持数据。 因此,您只需将数据结构保留在mmap-ed区域即可,仅此而已。

此处的MSDN手册: https : //msdn.microsoft.com/zh-CN/library/windows/desktop/aa366556%28v=vs.85%29.aspx

由于您需要在程序启动时一次加载所有数据,因此数据库的情况似乎令人怀疑。 需要多次加载少量数据时所需的DB。

因此,前两种情况似乎更可取。 我建议将特定的解决方案隐藏在界面后面,然后您可以稍后进行更改。

传感器阵列的标准.NET序列化可能更简单,并且更易于扩展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM