请为单用户应用程序建议数据存储

时间:2013-02-05 07:54:14

标签: .net sqlite storage hdf5

我正在寻找一种数据存储选项,用于存储心电图(1000个样本/秒)和其他患者数据(例如血压,体温等 - 以低得多的采样率采样)在我的c#.net应用程序的可查询存储中。

我已经评估了SQLite(这本身就是一个很好的选择),但我正在寻找一些符合以下要求的选项:

  1. 小存储空间 - ECG通常以1000个样本/秒进行采样,我需要存储24-48小时的ECG数据(~82到约1.62亿个数据样本)。在SQLite上,它占用了大量的空间。

  2. 我应该能够快速阅读部分数据(从 - 到时间戳)。

  3. 我应该能够修改部分数据而无需从该点开始写入所有数据。

  4. 我也看过HDF5,但还没有真正了解如何在C#.net中使用它。

    寻找实用的建议。

    谢谢,

    维克拉姆

1 个答案:

答案 0 :(得分:2)

您的使用案例似乎非常适合HDF5。

  
      
  1. 小存储空间 - 心电图通常以1000个样本/秒采样,我需要存储心电图数据24 - 48小时(~82到约1.62亿)   数据样本)。在SQLite上,它占用了大量的空间。
  2.   

HDF5可实现高效,紧凑的存储。此外,您可以启用不同的压缩算法/过滤器(gzip,bzip等),而不会影响性能。

  
      
  1. 我应该能够快速阅读这部分数据(从 - 到时间戳)。
  2.   

这实际上是HDF5中的主要用例。从数据集中切片数据可以非常快速地完成。

  
      
  1. 我应该能够修改部分数据而无需从该点开始写入所有数据。
  2.   

可以扩展数据集并修改数据(很难说它不像SQLite中的UPDATE语句那样方便)。但是有一些关于删除数据的警告。 (有关更多信息,请参阅here

如果你有很多元信息,你可以考虑将它们存储在SQLite中,并将这些recod连接到包含原始数据的HDF5文件。或者,您也可以将这些元信息作为属性存储在HDF5中的节点/数据集上,并避免一起使用SQLite。

关于HDF5的唯一重大问题/挑战是并发写操作。因此,如果您需要对单个HDF5文件进行并发写入操作,则会变得更加复杂。

要在.NET中使用HDF5,您可以查看此thread