イベント ストリームと key-val ストレージがあります。値のサイズは 4Kb に制限されています。イベント レートはそれほど高くありません。1 日に最大数百です。
この値には、データ構造のシリアル化された表現を格納する必要があります。これは、3 か月間にわたって集計されたイベント数を読み取り、格納、および更新するための効率的なメカニズムを提供し、日次および週次の集計と 1/2 時間のスライディング ウィンドウを使用します。
このソリューションでは、単純なイベント数の集計とイベント数の標準偏差の両方に対して、次のタスクを効率的に実行する必要があります。(下記のすべてのタスクの最大期間は3 か月です):
- 一定の更新 (怠惰な方法で - 対応するイベントが到着すると) - 最新の計算された集計が古すぎる場合 - 古いデータをスローして新しい集計を作成します
- 最新の計算された集計が古すぎる場合に備えて、読み取り要求 (ユーザーが特定のユーザーのイベント数、単一ユーザーのイベント数の標準偏差などの情報を要求する) によってトリガーされる更新 - それらをスローする
上記の実装を支援できるJavaオープンソースフレームワークはありますか?
また、デザインの推奨事項もいただければ幸いです: デザイン パターンなど。
このソリューションは、標準の Java API を使用してゼロから実装することは難しくありませんが、実行する前に、オープン ソース フレームワークの提案 (あれば) をいただければ幸いです。
ソリューションのグーグル検索は、いくつかの理論的な記事、SQL ベースのソリューション、および IBM ( SPLと呼ばれる非オープン ソース ツールキット) を除いて、どこにも私を導きませんでした。