1

セカンダリ インデックス 'ポインター' を持つ列ファミリーがあります。同じ「ポインター」値 (abc など) を持つ複数の行を削除するにはどうすればよいですか?

私が知っている唯一のオプションは次のとおりです。

expr = create_index_expression('pointer', 'abc')
clause = create_index_clause([expr])
for key, user in cassandra_cf.get_indexed_slices(clause):
    cassandra_cf.remove(key)

しかし、これは非常に非効率的であり、同じ「ポインター」値を持つ行が何千もある場合、時間がかかることはわかっています。他のオプションはありますか?

4

1 に答える 1

0

一度に複数の行を削除できます。

expr = create_index_expression('pointer', 'abc')
clause = create_index_clause([expr])
with cassandra_cf.batch() as b:
    for key, user in cassandra_cf.get_indexed_slices(clause):
        b.remove(key)

これにより、削除が 100 個のバッチにグループ化されます (デフォルト)。withバッチ オブジェクトがここにあるようにコンテキスト マネージャーとして使用される場合、ブロックが残されると、残りのミューテーションの送信が自動的に処理されます。

詳細については、pycassa.batchAPI ドキュメントを参照してください。

于 2012-12-31T20:55:35.350 に答える