13

Cassandra クラスターと Zookeeper サーバーがインストールされています。今、Zookeeper を使用して cassandra でトランザクションをサポートしたいと考えています。それ、どうやったら出来るの。

Zookeeper は、読み取りおよび書き込み操作を実行するための znode を作成し、Zookeeper の znode を行き来するデータをやり取りします。Zookeeper を使用して cassandra でロールバックとコミット機能をサポートする方法を知りたいです。Zookeeper で cassandra 構成を指定したり、cassandra で Zookeeper 構成を指定したりする方法はありますか。

Cassandra と Zookeeper のデータの読み取りと書き込みの方法は個別に知っていますが、Java を使用して両方を統合する方法はわかりません。

Zookeeper を使用して Cassandra でトランザクションを行うにはどうすればよいでしょうか。

ありがとう。

4

4 に答える 4

23

Cassandra クラスターと Zookeeper サーバーがインストールされています。今、Zookeeper を使用して cassandra でトランザクションをサポートしたいと考えています。それ、どうやったら出来るの。

非常に困難です。Cassandra はトランザクション システムとしてはうまく機能しません。複数の行への書き込みはアトミックではなく、一部の書き込みが失敗した場合に書き込みをロールバックする方法がなく、読み取り時にリーダーが一貫したビューを読み取ることを保証する方法がありません。

Zookeeper を使用して cassandra でロールバックとコミット機能をサポートする方法を知りたいです。

Zookeeper は、特にコミット機能については役に立ちません。失敗した場合にロールバックするのに十分な情報を Zookeeper に書き込むことができる場合がありますが、そうする場合は、ロールバック情報を cassandra に保存することもできます。

Zookeeper をロック サービスとして使用すると、Zookeeper と Cassandra はうまく連携します。Cagesライブラリを見てください。Zookeeper を使用して、cassandra への読み取り/書き込みを調整します。

複数の行へのアトミック コミットとロールバックを備えたトランザクション システムとして cassandra を使用しようとすると、非常にイライラすることになります。

于 2011-03-14T02:08:08.187 に答える
2

ZooKeeper を使用せずに Cassandra でトランザクションを実装するために使用できる方法があります。

Cassandra 自体には、軽量トランザクションと呼ばれる機能があり、キーごとの線形化と比較と設定を提供します。このようなプリミティブを使用すると、シリアライズ可能なトランザクションをアプリケーション レベルで自分で実装できます。

詳細と段階的な視覚化については、シリアライズ可能なクロス シャード クライアント側トランザクションの視覚化の投稿を参照してください。

このアプローチの変種は、Google のPercolatorシステムとCockroachDBで使用されています。

ところで、Read Committed 分離レベルに問題がない場合は、Peter Bailis によるRAMP トランザクションペーパーを参照することをお勧めします。

于 2016-03-04T07:06:52.107 に答える
0

まあ、私はこれの専門家ではありませんが(実際にはそうではありません)、探している特定のプロパティを保証するために自分で作成したミドルウェアを展開するか、Cassandraに書かせることができます。 Javaのコピー機能はアトミック操作として機能するため、データを補助ファイルにコピーしてからファイルシステムを介してコピーします。

あなたが検討しているデータファイルのサイズについては何も知らないので、実行可能かどうかはわかりませんが、このプロパティをより小さな情報で使用し、それらを全体として組み合わせる方法があるかもしれません.

ちょうど私の2セント...

于 2013-11-12T01:26:30.597 に答える