您的应用程序使用什么文件格式?为什么?

时间:2009-01-14 13:28:38

标签: storage desktop-application blob file-format

我最感兴趣的是针对大量变异的面向对象数据的进程内(单用户)解决方案,其中数据的任何部分都可能发生变化。这种系统通常会遇到这些问题:

  • 从头开始编写大文件效率低下
  • xml太冗长了
  • SQL blob不是一个很好的匹配

那你怎么做的?

8 个答案:

答案 0 :(得分:2)

OR使用现有的几种现成解决方案中的一种进行映射。

答案 1 :(得分:1)

这取决于您的要求。您是否诚实地使用XML或SQL blob来获得高分辨率图片或音频?

我再次阅读你的问题:如果你想要存储在文件图像中的一堆任意对象,那么进入/退出它们的方法就是复制和重定位。副本可以从GC获得帮助。副本非常简单,主要取决于重定位程序。

如果需要使用非常大的文件,我会在该系统中提供一些方法来标记对象的“脏”,并标记它们实际位于文件图像中的位置。

除非您从未删除过任何内容,否则还需要在删除的对象中进行标记。

答案 2 :(得分:0)

我们主要使用二进制数据。除非它必须是人类可读的(如设置和用户首选项)。

如果您认为xml过于冗长,请查看JSON。我认为这是一个非常好的选择。

答案 3 :(得分:0)

“从头开始编写大文件效率低下”“什么?很少有东西和文件I / O一样快。请提供一些示例或数据来备份文件I / O效率低下的断言。

大多数OO系统都可以将对象序列化或挑选到文件中。这是最快的I / O.

此外,大多数OO系统都可以将对象转换为标准表示,如XML或JSON或YAML。

JSON / YAML比XML更简洁,更容易解析。

答案 4 :(得分:0)

我将YAML用于中小型文件,非常易于解析和保存。 JSON是一个值得替代的选择。

答案 5 :(得分:0)

您可以尝试序列化为XAML,而不是XML。  这可以创建更小的文件,并且读取和写入更快(序列化/反序列化)。

显然,依赖于XAML是一种选择。

答案 6 :(得分:0)

您需要O / R映射或像db4o这样的对象数据库。

如果它是一组相对独立的对象的问题,也可以将每个对象存储到它自己的文件中,并且只在对象脏时才写入。但显然在更复杂的情况下,保持引用直接并避免无法使用的目录结构可能需要做很多工作,而这正是O / R映射器和对象db带来的结果。

对于XML过于冗长,通常可以通过压缩解决(例如zip中的xml)。

答案 7 :(得分:0)

对于大型数据集,我使用结构化二进制文件,没有什么比空间和时间更有效。

对于结构化文本数据,我会使用s表达式(即LAML)或 减少用在i表达式中实现的括号LAML。