Apache リクエスト ログによく似た、約 5,000 万行のリクエスト データの 1 つの大きなデータベース テーブルがあります。
request_url
user_agent
created
次のようなデータが含まれています。
/profile/Billy
Mozilla.....
2012-06-17...
/profile/Jane
Mozilla.....
2012-06-17...
次に、ユーザー名を含むすべてのユーザー データを含むユーザー データベース テーブルを作成します。
現在、毎晩、前日のリクエスト データを 1 行ずつ処理し、users テーブル内のユーザー名の 1 つに一致する URL が含まれているかどうかを確認しています。そうであれば、ユーザーが特定の日のページビュー数を確認できる統計を保存する別のテーブルの合計を増やします。
ただし、データセットが大きくなるにつれて、これはリソースを集中的に使用するようになり、要求データを URL でグループ化し、そのグループのカウントを取得する場合でも、完了するまでに長い時間がかかる可能性があります。
必要な最終結果を得るために、この情報を処理するより良い方法はありますか? いずれにせよ、リクエスト データはログに記録されるため、ページ ビューごとに合計をインクリメントするよりも、事後に統計を生成する方が望ましいでしょう。
これを 1 つのサーバーで実行しているため、複数のサーバーでデータを分散処理する必要はありません。