【发布时间】:2010-03-29 20:33:11
【问题描述】:
在我目前正在进行的项目中,需要将相当大的数据结构保存到磁盘(编辑:想想几十 MB)。作为一个乐观主义者,我认为这样的问题必须有一个标准的解决方案;但是,到目前为止,我还没有找到满足以下要求的解决方案:
- .NET 2.0 支持,最好使用 FOSS 实现
- 版本友好(这应该解释为:如果底层数据结构的变化很简单,比如添加/删除字段,读取旧版本的格式应该相对简单)
- 能够进行某种形式的随机访问,其中可以在初始创建后扩展部分数据,而无需反序列化到目前为止创建的集合(将其视为扩展中间结果)
- 节省空间和时间(鉴于此要求,XML 已被排除在选项之外)
目前考虑的选项:
- XmlSerializer: 被拒绝,因为 xml 序列化不满足要求 3 和 4。
- SerializableAttribute:不支持要求 2 和 3。
- Protocol Buffers:被关于 Large Data Sets 的文档的判决拒绝了 - 因为此评论建议在顶部添加另一层,这将需要额外的复杂性,我希望由文件格式本身处理。
- HDF5,EXI: 好像没有.net 实现
- SQLite/SQL Server Compact edition: 手头的数据结构会导致一个相当复杂的表结构,对于预期用途来说似乎太重了
- BSON: 似乎不支持要求 3。
- Fast Infoset:似乎只付费了.NET实现。
非常感谢任何建议或指示。此外,如果您认为上述任何信息不正确,请提供指针/示例以证明我错了。
【问题讨论】:
-
HDF5 确实有一些 .NET 支持:hdfgroup.org/projects/hdf.net
-
@Richard Morgan 到目前为止,我只在 hdfgroup.org 上找到了关于 .NET 的死链接,谢谢。
-
查看了 hdf.net 提供的示例,.net 的想法是使用不安全和自定义编组,没有乐趣。
-
是的,我应该强调一些。
标签: .net binary file-format