分层.Net文件格式?

时间:2009-07-21 14:46:32

标签: c# filesystems hierarchical-data hdf5

我们公司一直在寻找一种文件格式来保存大量的实验室传感器数据。每次他们运行检测时,它都会生成一个文件,我们使用该文件并将其存储在数据库中以进行趋势分析等。首选分层格式,因为它允许我们“分组”数据。在将数据放入数据库之前,这是一种中间文件格式。由于我们的开发环境,这是我们的优先列表:

1).Net兼容。 API将用于Web服务和客户端应用程序。我们无法控制客户的环境,因此最好使用pure.Net解决方案。

2)读取速度。我们的读取是随机的,而不是顺序的越快越好。如果我们不是C#开发商店,我会说速度是#1。

3)文件大小。如果文件本身很大,则需要良好的压缩比(86%和更高)。

4)读取的内存占用。由于数据量大,我们不能简单地阅读它。每个传感器都有一个时间/值对。这可以产生超过400万对。这为我们消除了XML。

我们目前已查看HDF5并发现API在.NET领域非常缺乏,无法提供Web服务,但具有我们正在寻找的大小/速度。我也看了JSON,看起来很有希望,但我还没有尝试过回读一段数据。我搜索过网络,但没有发现很多文件格式可以满足我们的需要。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:1)

我认为您最好将此信息存储在数据库的表中,如果您使用的是SQL Server,则VARBINARY应该可以完成这项工作。

您的表可以通过包含[Parent]字段来分层,该字段对于顶级节点可以为null。

如果索引查找值(文件的ID),则应该快速随机访问。如果您需要压缩,可以尝试使用GZip类来格式化原始字节[],然后再将其粘贴到数据库中。

使用数据库获取此信息使您能够:

1)运行疯狂的查询,连接等 2)您可以索引多列,以便通过不同的键值更快地查找 3).Net肯定有多个API 4)如果不太严重地影响速度,可以添加压缩 5)备份数据应该是一个简单的

这个建议可以帮助你吗?

答案 1 :(得分:1)

您需要一个b-tree数据库,例如: Sql Server Compact

另请参阅SQLite http://sqlite.phxsoftware.com/

如果你可以免除SQL部分,CTree更像是一个ISAM google for ctree

对不起,我会链接更多,所以不要告诉我这是一个新的帐户

答案 2 :(得分:0)

我认为特殊读取要求对任何格式都是一个问题,在这种情况下,您需要实现自己的解析器。

答案 3 :(得分:0)

如果二元树/平衡树格式不是太费力,您可以考虑将其存储在Newick Format中。它还可以支持像JSON一样的键/值对格式。

它实际上不比JSON重量轻 - “{}”被替换为“()”。

  

((浣熊,   熊),((sea_lion,密封),((猴,猫),   黄鼠狼)),狗);

显然,作为一个二叉树,它的查询速度非常快,但可能并不比JSON对象的字典快,但它没有担心的链表风格层次(对象图)。

我担心我找不到任何.NET apis,只有Java和C.