1

さまざまなリンクのクリック ストリームをリアルタイムで処理しようとしています。クリックするたびにデータベースに記録されます。ほとんどのリンクでは、1 分あたりのクリック数はほぼ一定です (たとえば、< 50)。ただし、ほんの一握りの人が 1000 ~ 2000/min を取得しますが、これは短時間だけです。

リアルタイムで実行するのではなく、これらのストリームのデータベース更新を延期してバッチ処理したいので、このようなトラフィックの多いクリック ストリームを見始めた時期を検出したいと考えています。

私は多くのアプローチで遊んでいますが、良い結果はありません。これは、標準的な数学の問題またはキュー管理の問題のように見えます。

助言がありますか?

4

1 に答える 1

0

各クリックを挿入するときに、過去1分間のクリック数も計算して挿入します。次に、レートが十分に高いイベントをクエリできます。

例(擬似コード):

proc record_click
    insert into click_log (current_time, event_info)
    insert into click_rates (current_time, 
        (select count(*) from click_log where time > current_time - 1 minute))

クリックの挿入時にそれを実行したくない場合は、後でその値を計算できますが、クリックごとに最大50のレコードだけでなく、大量のデータセットになる可能性があります。

create view click_rates as
    select event_time, count(*) as rate
    from click_events e1, click_events e2
    where e2.event_time between e1.event_time - interval '1 minute' and e1.event_time
    group by e1.event_time
于 2013-03-08T22:18:37.753 に答える