2009-07-21 92 views
4

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

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

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

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

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

我们目前看到HDF5,发现.NET在.NET领域的应用极其缺乏,不能做网络服务,但是我们正在寻找的速度和速度。我也看到了JSON,它看起来很有希望,但我还没有尝试读取一段数据。我搜索了网页,没有找到很多文件格式来做我们需要的。任何帮助表示赞赏。

回答

1

你需要一个B-tree数据库,如: 的SQL Server Compact

也期待在SQLite的 http://sqlite.phxsoftware.com/

CTree更多的是一种ISAM的,如果你可以用SQL部分 谷歌免除对于ctree

对不起,我想更多的链接,所以不让我BC,这是一个新的ACCT

0

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

0

如果二进制树/平衡树格式没有太多的努力,你可以考虑将它存储在Newick Format。它也可以支持像JSON这样的键/值对格式。

这实际上并不比JSON更轻,但“{}”替换为“()”。

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

显然是一个二叉树,查询速度非常快,虽然可能不会比来自JSON对象的字典快,但它没有链接列表样式层次(对象图)担心。

我怕我找不到任何.NET API的它虽然只是Java和C.

1

我想你可能会更好在表中存储这些信息在数据库中,如果你是使用SQL Server,VARBINARY应该完成这项工作。

通过在顶级节点中包含一个[Parent]字段,您的表可以是等级的。

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

使用数据库这个信息给你的能力:运行疯狂的查询

1),加入等。 2)您可以索引多个列以便通过不同的键值更快速地查找。 3).Net肯定有多个API 4)如果压缩速度不会太快影响速度,可以添加压缩 5)备份数据应该当心很大

这个建议能帮助你吗?

+0

以及我们这样做是存储在数据库中,但我们需要的东西作为中间体T o包含信息。我们不能只从传感器 - >数据库。它会传感器 - >文件 - >数据库。当我说我想直接去DB的时候相信我。 – mcauthorn 2009-07-23 00:08:11

+0

您仍然可以将传感器写入临时文件并将其加载到VARBINARY列中。如果速度是可以接受的,我通常会尝试在每种情况下使用数据库 - 事后管理维护更容易。 – jonathanpeppers 2009-07-23 12:58:07