我有一组代表e的对象。 G。配置文件。可以修改(更新),删除或添加对象。每个对象都有几个属性,但单个属性值的修改只是将整个对象标记为" modified" (所以从持久层的角度来看,一个对象是原子的)。对象之间没有关系。
此类设置的大小介于 10 - 50000 之间(但理论上没有限制 - 用户可以附加其他对象)。单个对象大小高达500KB (但通常会更小,大约 60KB )。
应尽快读取和更新对象。还有一个关键要求:它们应该保存在硬盘上,可以复制或移动它们。我的应用程序是用Java编写的,可以在Windows 7-10操作系统上运行。
我得出结论,每个对象都可以很容易地表示为单个JSON文件。问题在于将大量文件保存在磁盘上。 Windows文件系统似乎不擅长处理太多(甚至很小的)文件。
然后我认为我的文件可以存储在虚拟文件系统中。第一个明显的解决方案是以这种方式将它们打包成 ZIP存档:
profiles.zip:
--- profile1.json
--- profile2.json
...
--- profile10000.json
在便携性方面它将是一个很好的解决方案,读取性能也可以。但是,似乎新的对象无法复制到ZIP存档中,而无需复制存档中存储的所有文件......或者至少我没有找到办法。
我已经搜索了其他解决方案。我考虑使用:
您能根据经验提出任何想法或建议吗?我需要可移植性 大型数据集中的快速读取/更新 整个对象(可以在 Java 和 Windows OS)。
答案 0 :(得分:0)
除非我们知道内存中每个对象的大小,否则很难回答这个问题。我可以提出的一个建议是尝试混合框架,它支持内存访问以及磁盘持久性。
Ehcache是我认为适合您的框架之一,它可以轻松支持内存中的50000个对象。甚至Couchbase也支持类似的选项以及即时或最终持久性的灵活性。