在集群环境中从非常大的数据库表中读取的最佳方法是什么。
假设我们需要尽可能快地读取巨大的数据库表,然后将这些数据发送到 jms 队列。我们希望避免读取相同的数据,因为它需要处理,所以最好不要交叉。而且这个应用程序要部署在 jboss 集群中,所以节点应该如何通信。
所以在一个节点的情况下——非集群环境我只能让一个进程读取表。在两个节点的情况下 - 这种读取应该是如何协调以避免两个节点读取相同的数据......三个节点等......
不知道目标环境中有多少节点,节点可以使用 db 表或 jboss 缓存进行通信
因此很明显,每个进程读取块或页面将提供最大性能。
在简单的 java 多线程环境中这将是一件容易的事,因为我们知道有多少线程将被读取,并且很容易计算如何划分页面并将页面读取分配给单个线程。
但是在不知道有多少节点的情况下,节点之间应该有一些协议来通信和优化读取。