【问题标题】:Large Memory (Data Size) Collection大内存(数据大小)集合
【发布时间】:2012-10-24 05:17:18
【问题描述】:

我经常不得不使用 java.util.collection 包中的对象,这些对象符合 Map 和 Set 接口。

当我在这些对象(HashMap、TreeMap 等)中插入几百万个元组或实体时,它们的性能、插入和查找速度都慢得像爬行。

我设计了派生类,它们本质上是 java.util.collection 中的类的组合,可以更好地扩展性能。

我想知道是否有 java.util.collections 包的开源等效包,它针对处理大量数据进行了优化。

【问题讨论】:

  • 为什么要在内存中创建包含数百万个元素的地图和集合?关系数据库不能用索引吗?
  • @Maciej Ziarko,在 RDBMS、NoSQL Dbs 中存储数百万个元素会有很多案例/好处,但是有时在内存中处理大对象是有意义的,并且比 RDBMS 更受欢迎, NoSQL DB 方法。一位响应者发布了一个项目 Trove,我认为它可以满足这一需求。谢谢

标签: java data-structures collections bigdata


【解决方案1】:

为了更好地执行集合库,请尝试trove。但是,一般来说,您希望通过流式处理或其他形式的延迟加载来解决这类问题,这样您就可以在不将整个数据集加载到内存的情况下执行聚合等操作。

您还可以使用 Redis 或 CouchDB 等键值存储来存储这些数据。

【讨论】:

  • 感谢您的回复,1+。 trove 是免费使用还是必须先购买?
  • 它是免费的,你可以去我附上的链接下载它。
  • 非常感谢@PaulSanwald 的回复,这正是我想要的——虽然 Redis/CouchDB 的用户不是我想的那样,但 Trove 似乎符合要求。会对其他类似项目感兴趣。
  • 有帮助的时候别忘了写。我个人怀疑。
  • 取决于您期望的使用模式。 Trove 似乎使用开放地址表,当您需要执行大量删除操作时,或者您执行大量 containsget 查询,结果分别为 falsenull,或如果您需要遍历集合的条目。
猜你喜欢
  • 2013-07-30
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 2013-03-27
  • 2011-03-09
  • 2023-03-09
  • 1970-01-01
相关资源
最近更新 更多