Cassandra に列ファミリーがあり、このようなものを保存します。
BundleName | Version
----------------------------
FrameworkBundle 1.0.0
BundleA 1.0.0
BundleB 1.0.0
BundleC 1.0.0
BundleD 1.0.0
Astyanax クライアントを使用して、Cassandra データベースからデータを取得しています。Cassandra からデータを取得するメソッドを用意します。
public Map<String, String> getFromDatabase() {
// 1) For the first time, return me everything in the map
// 2) Second time, it should return me only the the change if there is any bundle version change
}
これで、このメソッドはすべてを Map として返すはずです。次のようなものです。
Key as FrameworkBundle and Value as 1.0.0
Key as BundleA and Value as 1.0.0
Key as BundleB and Value as 1.0.0
....
And for other Bundles like above
今、私に必要なのは-
- アプリケーションを初めて実行すると、上記のようにマップ内のすべてが返されます。
- また、15 分ごとに Cassandra データベースをチェックして、新しいバージョンのバンドルがあるかどうかを確認するバックグラウンド スレッドがあります。また、バンドルの新しいバージョンがある場合は、そのバンドル名とその新しいバージョンを返してください。どのバージョンにも変更がない場合は、2 回目は何も返さないでください。そして、これと同じプロセスが 15 分ごとに発生します。
つまり、最初だけを意味します。それ以外の場合はすべてを返したいです。バンドル バージョンに変更がない限り、何も返したくありません。
必要な情報を取得するための何らかのロジックを記述せずに、Cassandra がこれに関する情報を直接提供できるかどうかはわかりません。
Cassandra でこれを行うための最善かつ効率的な方法は何ですか? Cassandraデータベースから15分ごとにすべてのデータを取得してから、何らかのロジックを実行して、どのバンドルバージョンが変更されたかを調べたくありません..