4

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

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

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

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

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

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

4

4 回答 4

1

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

另请查看 SQLite http://sqlite.phxsoftware.com/

CTree 更像是一个 ISAM,如果您可以省去 SQL 部分 google for ctree

抱歉,我会链接更多,所以不让我知道这是一个新帐户

于 2009-07-21T17:42:35.460 回答
1

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

您的表可以是分层的,方法是包含一个对于顶级节点可以为空的 [Parent] 字段。

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

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

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

这个建议对你有帮助吗?

于 2009-07-21T17:03:38.190 回答
0

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

于 2009-07-21T14:55:12.903 回答
0

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

然而,它并没有比 JSON 更轻量级——“{}”被替换为“()”。

((浣熊,熊),((海狮,海豹),((猴子,猫),黄鼠狼)),狗);

显然,作为二叉树,它的查询速度非常快,尽管可能也不比来自 JSON 对象的字典快,但是它没有需要担心的链表样式层次结构(对象图)。

不过,恐怕我找不到任何 .NET api,只有 Java 和 C。

于 2009-07-21T15:07:11.433 回答