2017-04-27 10 views
0

私はカサンドラクラスターに2つのキースペースを持っています.2つ目のキースペースは、最初のもの(sstableloaderを使用)のコピー(スキーマとデータ)として作成されています。2つのcassandraキースペースの内容を比較する方法

最初のキースペースのすべてのデータも効率的に第2キースペースに格納されている場合はどうすれば比較できますか?

備考(疑問):これらkeyspaces内のデータの多くは、それゆえ、両方のkeyspacesからすべての行をスキャンし、それらを比較し、ある

  1. は、私は避けたいものです。
  2. sstableファイル(* Data.db)をどういう形で比較できますか? Keyspacesは全く同じ構造をしているので、おそらく* Data.dbファイルは同じ(またはほぼ同じ)でしょうか?
  3. もう1つの効率的な方法がありますか?

答えて

0

それぞれのキーを比較する以外に、あなたが避けたいと思っている他のキーは、本当に別の方法ではありません。データファイルは同じではありません。なぜなら、フラッシュと圧縮は、常に同じファイルに同じパーティションキーを書き込むことはありません。

パーティション・キーでテーブルを照会することはcol1がある指定の表のように非常に高速な操作である、と述べたあなたは鍵の推定数を比較するnodetool cfstatsを使用することができますが、それだけであなたに

を指示を与えるだろう鍵は、SELECT col1 from MYTABLE where col1=<key to check>は非常に速く実行する必要があります。ドライバの1つを使用する場合、ページング機能を利用して結果セットを管理可能なチャンクに制限することができます。一例として、

は(私はこれをテストしていませんでした注意してください!)あなたはこのような何かを行うことができpython driverのために言う

from cassandra.query import SimpleStatement 
query1 = "SELECT key FROM keyspace1.table1" 
statement1 = SimpleStatement(query1, fetch_size=1000) 
for row1 in session.execute(statement1): 
    # search second table here 

それは少し再帰的であり、あなたはおそらくこれを行うために、いくつかのドライバの設定を微調整することができより効率的ですが、私はちょうどドライバがこの方法でページングをどのようにしているかを示したかったのです。

希望する

+0

しかし、行はクラスタリングキーに基づいてファイルに並べられます。したがって、すべてのデータをフラッシュして圧縮したと仮定すると、データファイルはほぼ同じでなければなりません。たぶん、ファイルの関連部分だけをチェックする方法がありますか? – pWoz

+0

@pWoz試してみることもできますが、私が見たことはありません。 'sstable2json'(以前のバージョン)または' sstabledump'(後のバージョン3.0のバージョン)を使ってファイルを解読する必要があります。ファイルの名前も同じではありません – markc

関連する問題