4

Avro スキーマを Cassandra データベースに保存する必要があるシステムに取り組んでいます。Cassandraでは、このようなものを保存します

SchemaId            AvroSchema

1                   some schema
2                   another schema

Cassandraの上記のテーブルに別の行を挿入するとすぐに、テーブルは次のようになります-

SchemaId            AvroSchema

1                   some schema
2                   another schema
3                   another new schema

上記のテーブルに新しい行を挿入したらすぐに、Java プログラムに新しいスキーマ ID と対応するスキーマをプルするように指示する必要があります。

この種の問題を解決する正しい方法は何ですか?

1 つの方法は、数分ごとにポーリングを行うことです。たとえば、5 分ごとに行って上記のテーブルからデータをプルするとしますが、これはこの問題を解決する正しい方法ではありません。5 分ごとにプルを行っているからです。新しいスキーマがあるかどうか..

しかし、これ以外に解決策はありますか?

Apache Zookeeper を使用できますか? または、Zookeeper はこの問題に適していませんか? または他の解決策はありますか?

Apache Cassandra 1.2.9 を実行しています

4

2 に答える 2

1

いくつかの解決策:

  • データベース トリガーの場合: Cassandra 2.0 にはいくつかのトリガー サポートがありますが、最終的なものではないようで、この記事によると 2.1 で少し変更される可能性があります: http://www.datastax.com/dev/blog/whats-new-in- cassandra-2-0-prototype-triggers-support . トリガーは一般的なソリューションです。
  • あなたはポーリングを持ち出しましたが、それは必ずしも悪い選択肢ではありません。特に、その行がまだプルされていないことを示す何かがある場合は、Cassandra から新しい行をプルするだけで済みます。5 分ごとに 1 回プルすることは、クエリのコストが高くない場合、Cassandra やその他のデータベースの負荷に関して賢明ではありません。新しい行が非常にまれに挿入される場合、このオプションは適切ではない可能性があります。

Zookeeper は完璧なソリューションではありません。次の引用を参照してください。

監視は 1 回限りのトリガーであり、イベントを取得してから監視を取得するための新しいリクエストを送信するまでの間に遅延があるため、ZooKeeper のノードに発生するすべての変更を確実に確認することはできません。イベントの取得とウォッチの再設定の間に znode が複数回変更されるケースに対処する準備をしてください。(気にしないかもしれませんが、少なくともそれが起こる可能性があることを認識してください。)

引用元: http://zookeeper.apache.org/doc/r3.4.2/zookeeperProgrammers.html#sc_WatchRememberThese

于 2013-10-24T18:04:10.843 に答える