首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用有效的更新/追加操作存储大量对象的最佳方法

使用有效的更新/追加操作存储大量对象的最佳方法
EN

Stack Overflow用户
提问于 2018-01-19 10:19:53
回答 1查看 323关注 0票数 1

我的具体用例是什么?

我有一组表示概要文件的对象.对象可以修改(更新)、删除或添加。每个对象都有几个属性,但是对单个属性值的修改只是将整个对象标记为“修改”(因此从持久化层的角度来看,对象是原子的)。对象之间没有任何关系。

这种集合的大小介于10 - 50000之间(但理论上没有限制--用户可以附加其他对象)。单个对象的大小为,最高可达500 is (但通常要小一些,约为60 is)。

对象应尽可能快地读取和更新。还有一个关键的要求:它们应该被保存在硬盘上,有可能复制或移动它们。我的应用程序是用Java编写的,运行在Windows7-10操作系统上。

我最初的方法是什么?

我得出的结论是,每个对象都可以很容易地表示为单个JSON文件。问题在于将这么大的一组文件保存在磁盘上。Windows文件系统似乎不擅长处理太多(甚至是小的)文件。

然后我想我的文件可以存储在虚拟文件系统中。第一个明显的解决方案是以这样的方式将它们打包到ZIP归档中:

代码语言:javascript
复制
profiles.zip:
--- profile1.json
--- profile2.json
...
--- profile10000.json

在可移植性和读取性能方面,这将是一个很好的解决方案。但是,新对象似乎不能附加到ZIP存档中,除非复制存储在存档中的所有文件.或者至少我没找到办法。

那我该怎么办.?

我一直在寻找其他的解决方案。我考虑使用:

  • 快速关系数据库--但我觉得这就像用一把大锤敲碎一个螺母一样。特别是我不需要处理关系或事务(我甚至不需要服务器,它只适用于一个本地用户)。
  • NoSQL object数据库,例如MapDb--听起来不错,但我找不到任何可靠的比较或受欢迎程度。对我来说,选择一个可信的解决办法是很重要的。
  • 其他一些可以在Java中管理的虚拟文件系统?也许我漏掉了什么?

你能根据经验提供任何想法或建议吗?我需要快速读取/更新的整体对象在大数据集与可移植性(这可以在JavaE 236E 137WindowsE 238OS中实现)。

EN

回答 1

Stack Overflow用户

发布于 2018-01-19 10:27:56

除非我们知道内存中每个对象的大小,否则很难回答这个问题。我可以给出的一个建议是尝试支持内存访问和磁盘持久性的混合框架。

Ehcache是我认为适用于您的框架之一,它很容易支持内存中的50000个对象。即使Couchbase也支持类似的选项,并具有立即或最终持久性的灵活性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48338784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档