1

クラスター化された環境で非常に大きなデータベーステーブルから読み取るための最良の方法は何ですか.

巨大な DB テーブルをできるだけ速く読み取り、このデータを jms キューに送信する必要があるとしましょう。また、処理が必要になるため、同じデータを読み取ることは避けたいので、交差しないことが望ましいです。そして、このアプリケーションは jboss クラスターにデプロイされるため、ノードは何らかの方法で通信する必要があります。

したがって、1 つのノードのケース (クラスター化されていない環境) では、テーブルを読み取るプロセスを 1 つだけ持つことができます。2 つのノードの場合 - この読み取りは、同じデータが両方のノードによって読み取られるのを避けるために、ある程度調整する必要があります... 3 つのノードなど...

ターゲット環境にあるノードの数に関する情報はありません。ノードは db テーブルまたは jboss キャッシュを使用して通信できます。

したがって、プロセスごとにブロックまたはページで読み取ると、最大のパフォーマンスが得られることは明らかです。

また、単純なJavaマルチスレッド環境では、読み取るスレッドの数がわかっているため、簡単な作業になります。ページを分割してページの読み取りを単一のスレッドに割り当てる方法は簡単に計算できます。

ただし、ノード数が不明なシナリオでは、通信して読み取りを最適化するために、ノード間に何らかのプロトコルが必要です。

4

1 に答える 1

0

巨大なDBデータを分散させておく必要があるので、ある種の分散ハッシュテーブルを調べることをお勧めします。同じ要件を持つエンタープライズプロジェクトの1つでGemFireを使用しましたが、これは十分に証明されています。ただし、DB接続の最大数には常に制限があるため、無制限に拡張することはできません。

于 2012-06-14T06:43:00.737 に答える