2

私はdatastaxドライバでCassandraデータベースを使用しています。私は何かのカサンドラから2000行の順序に一括読み込みを行う必要があります。私のユースケースは、私の要求でIDのリストを取得し、それらのIDはCassandraの私のパーティションキーです。 2000スレッドを生成し、Cassandraから並列にデータを取得することをお勧めします(その場合、データを読み取ることはただ1つのノードに効率的に行われます)。または、idをグループ化する方法を見つけることが可能です。同じノードに住んでいるので、読み込みを最適化することができます(この場合、Cassandraではスレッド数を少なくし、オーバーヘッドを少なくする必要があります)。複数のスレッドを生成することとは別に効率的な方法でバッチを読み取ることができますか教えてください。ありがとう! PS:カッサンドラから戻ってくるデータは、OOMを引き起こすほど巨大ではありません。cassandraパーティションノードを見つける

答えて

1

それははい、それはあなたがカサンドラクラスタと範囲のあなたのIDのcheck occurrence for tokensためget Token Rangesし、グループができ、ある同じノードに

を生きるグループIDへの道を把握することが可能ですノードごとのID。追加で

多くのスレッドを生成する必要はありません、datastaxドライバがasynchronous apiを提供し、私たちは並列でクエリの多くを実行するために私たちのプロジェクトでそれを使用し、それが十分に動作しますが、パフォーマンスの優れません視点。

データを読み取るために何千もの要求を行う必要があることは、不適切なデータモデルであることを示します。クエリの回りにデータモデルを実装して、パフォーマンスの良い要求数を最小限に抑える必要があります。

更新日:

私が思う、あなたが与えられたパーティション・キーのためMetadata.getReplicasでレプリカを運転席側にトークンを計算したり、直接取得する方法 Metadata.newTokenを使用することができます。 しかしその前にの種類とプロトコルのバージョンに応じて

+0

ありがとうございました! dataStaxドライバを使用して、特定のパーティション化キーのトークンを計算する方法を知っていますか。現在、私は、 'decotableからkeym = 1231を選択する'のようなことをして、与えられた分割キーのトークン値を計算しています。そして、私はこの方法をやっていることが、カサンドラのサーバーに何度も行くようになるにつれて悪いと思います。私は右のハッシュアルゴリズムをデータスタックスを介して公開して仕事を終わらせる方法があるはずだと思います。 – Coder

+0

@コーダー、私はドライバー側のトークン計算の詳細については私の答えを更新しました –

関連する問題