一种方法是使用文件和文件系统——大部分是——并提供某种内存缓存或映射。
如果您正在处理大量或相当大的文件-那么您无法真正将其与内存大小相匹配(或解压缩内存中的完整存档)-除非我们谈论的是额外的硬件、RAM。
具体来说,我个人会选择......
class MemoryArchive {}
...它冒充文件的前端,在后端存档。
您解压缩磁盘上的存档文件,临时文件夹 - 与大多数解压缩工具一样,然后处理“较小单元”的访问,即文件。
你MemoryArchive
的行为基本上就像所有都在内存中,所以你需要有一些映射来代替内存流(或者你决定用于直接访问对象级别的任何东西)到磁盘上的临时文件,文件流。
并且可能是一些处理同步的强大方法 - 和/或错误,问题 - 因为您需要确保内存中的内容与磁盘上的内容同步 - 并保持“集成”完好无损。
那时(并且取决于系统的性质等),主要任务可能是编写某种事务 - 围绕文件系统存储 - 这是您开始类似于数据库管理系统的地方。但那将是“规模的另一端”——如果你可以没有它生活,并保持简单,它可能不会有那么大的问题。
只是一个想法,尽管这完全取决于您的具体细节 -
即事物的规模(可能会有很大差异 - 即如果内存允许在某些情况下您可以加载,并且处理速度足够快),“小变化”如何' 档案内与档案的大小、更改的频率和性质。
在最简单的情况下,我几乎会将内容存储为临时文件并根据需要处理较小的增量更改。
并且拥有某种方式MemoryArchive
会给你未来的事情提供一个围栏 - 所以你可以改变它,或者根据档案的大小等混合几种方法。实际上,在这些情况下,一些“混合方法”通常是最好的,因为在处理不同的文件、大小时,您几乎无法做出“一刀切”的解决方案。
希望这可以帮助,