我的具体用例是什么?
我有一组表示概要文件的对象.对象可以修改(更新)、删除或添加。每个对象都有几个属性,但是对单个属性值的修改只是将整个对象标记为“修改”(因此从持久化层的角度来看,对象是原子的)。对象之间没有任何关系。
这种集合的大小介于10 - 50000之间(但理论上没有限制--用户可以附加其他对象)。单个对象的大小为,最高可达500 is (但通常要小一些,约为60 is)。
对象应尽可能快地读取和更新。还有一个关键的要求:它们应该被保存在硬盘上,有可能复制或移动它们。我的应用程序是用Java编写的,运行在Windows7-10操作系统上。
我最初的方法是什么?
我得出的结论是,每个对象都可以很容易地表示为单个JSON文件。问题在于将这么大的一组文件保存在磁盘上。Windows文件系统似乎不擅长处理太多(甚至是小的)文件。
然后我想我的文件可以存储在虚拟文件系统中。第一个明显的解决方案是以这样的方式将它们打包到ZIP归档中:
profiles.zip:
--- profile1.json
--- profile2.json
...
--- profile10000.json在可移植性和读取性能方面,这将是一个很好的解决方案。但是,新对象似乎不能附加到ZIP存档中,除非复制存储在存档中的所有文件.或者至少我没找到办法。
那我该怎么办.?
我一直在寻找其他的解决方案。我考虑使用:
你能根据经验提供任何想法或建议吗?我需要快速读取/更新的整体对象在大数据集与可移植性(这可以在JavaE 236和E 137WindowsE 238OS中实现)。
发布于 2018-01-19 10:27:56
除非我们知道内存中每个对象的大小,否则很难回答这个问题。我可以给出的一个建议是尝试支持内存访问和磁盘持久性的混合框架。
Ehcache是我认为适用于您的框架之一,它很容易支持内存中的50000个对象。即使Couchbase也支持类似的选项,并具有立即或最终持久性的灵活性。
https://stackoverflow.com/questions/48338784
复制相似问题