私は、(タイプで) 作成、変更、および破棄できるさまざまな要素に関する使用イベントを (キューを使用して) 受け取る会計システムで作業しています。毎月最大 1000000 件のイベントを開催できます。
月末に、システムは情報を集計して、特定の要素が使用された回数を含むレポートを生成する必要があります。毎日の集計も実行する必要があると確信しています。
例でより明確です。これらは私が受け取るイベントの種類です:
{event: "create", date: "2013/01/01", element_id: 1, element_type: "L"}
{event: "modify", date: "2013/02/05", element_id: 1, element_type: "XL"}
{event: "modify", date: "2013/02/07", element_id: 1, element_type: "L"}
{event: "destroy", date: "2013/02/08", element_id: 1}
そして、これは「2月」の結果になるはずです:
-- from 2013/02/01 to 2013/02/05 + 2013/02/07 to 2013/02/08
{element: "1", element_type: "L", units: "6 days" }
-- from 2013/02/05 to 2013/02/07
{element: "1", element_type: "XL", units: "2 days" }
私の主な関心事は、以前の間隔(たとえば 2 年前)に作成され、まだ効率的な方法で破棄されていない要素を追跡する方法です。
この問題に適合するアルゴリズムを知っていますか? map-reduce プロセスについて考えていましたが、どのように適合するかわかりません (月ごとにフィルターする、前の月に作成された要素を追跡するなど)。どんなアイデアでも大歓迎です。
私は現在 nodejs と mongodb を使用してイベントを保存していますが、それが役立つ場合は java や mysql を使用できます。
ありがとうございました。