mongodb - 处理 100+ 百万条记录的最佳 NoSQL 方法

我正在做一个项目,我们在 Oracle 数据库中批量加载和存储大量数据,这些数据不断通过 Hibernate 查询这个 100+ 百万条记录表(读取比写入频繁得多)。 为了加快速度,我们将 Lucene 用于一些查询(尤其是地理边界框查询)和 Hibernate 二级缓存,但这还不够。我们在针对 Oracle 的 Hibernate 查询中仍然存在瓶颈(由于缺少那么多内存,我们没有在 Hibernate 二级缓存中缓存 100+ 百万个表实体)。

在这种情况下,我可以利用哪些其他 NoSQL 解决方案(Lucene 除外)?

我正在考虑的一些选项是:

  1. 对 Hibernate 二级使用分布式 ehcache (Terracotta),以在机器之间利用更多内存并减少重复缓存(现在每个 VM 都有自己的缓存)。

  2. 要完全在内存中使用像 H2 这样的 SQL 数据库,但不幸的是,这些解决方案需要将 100 多个表加载到单个 VM 中。

  3. 使用 Lucene 进行查询,使用 BigTable(或分布式 HashMap )通过 id 进行实体查找。 什么样的 BigTable 实现适合这个?我正在考虑 HBase。

  4. 使用 MongoDB 存储数据以及通过 id 进行查询和查找。

最佳答案

推荐 Cassandra 和 ElasticSearch 用于可扩展系统(1 亿对他们来说不算什么)。使用 cassandra 处理所有数据,使用 ES 进行临时和地理查询。然后你可以杀死你的整个遗留堆栈。你可能需要一个像 rabbitmq 这样的 MQ 系统来实现 Cass 之间的数据同步。和 ES。

https://stackoverflow.com/questions/6458407/

相关文章:

c# - 如何通过使用 MongoDB C# 驱动程序调用 obj.ToBsonDocument()

javascript - Meteor.js 使用 X509 证书身份验证连接到 Mongo

javascript - MongoDB/ Mongoose : MarkModified a ne

node.js - 如何更新 Mongoose 中的特定字段?

mongodb - MongoError : The $subtract accumulator i

ruby-on-rails-3 - 使用 MongoID 在 Rails 中进行标记的良好解决方案

mongodb - 当数据库大小大于 RAM 时,MongoDB 可以工作吗?

arrays - 如何遍历 Reactjs 中的表格行和单元格

java - 如何使用 $ne 运算符查询 mongodb?

java - 哪个是 mongodb 访问的最佳 java 驱动程序?