1

在集群环境中从非常大的数据库表中读取的最佳方法是什么。

假设我们需要尽可能快地读取巨大的数据库表,然后将这些数据发送到 jms 队列。我们希望避免读取相同的数据,因为它需要处理,所以最好不要交叉。而且这个应用程序要部署在 jboss 集群中,所以节点应该如何通信。

所以在一个节点的情况下——非集群环境我只能让一个进程读取表。在两个节点的情况下 - 这种读取应该是如何协调以避免两个节点读取相同的数据......三个节点等......

不知道目标环境中有多少节点,节点可以使用 db 表或 jboss 缓存进行通信

因此很明显,每个进程读取块或页面将提供最大性能。

在简单的 java 多线程环境中这将是一件容易的事,因为我们知道有多少线程将被读取,并且很容易计算如何划分页面并将页面读取分配给单个线程。

但是在不知道有多少节点的情况下,节点之间应该有一些协议来通信和优化读取。

4

1 回答 1

0

由于您必须保持庞大的数据库数据分布,我建议您查看某种分布式哈希表。我在一个具有相同要求的企业项目中使用了GemFire ,它已经得到了充分证明。但是你总是有最大数据库连接的限制,所以你不能无限增长。

于 2012-06-14T06:43:00.737 回答