我最感兴趣的是针对大量变异的面向对象数据的进程内(单用户)解决方案,其中数据的任何部分都可能发生变化。这种系统通常会遇到这些问题:
那你怎么做的?
答案 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。