mongodb を使用して、1 日 / 1 週間 / 1 か月あたりの最も訪問されたページ / エントリを取得する方法
このソリューションは統計には適していますが、最もアクセスされたエントリのリストには適していません 大量のメトリック/分析データを格納するための MongoDB アプローチ
map/reduce が遅すぎる...そうでないか?
ありがとう
mongodb を使用して、1 日 / 1 週間 / 1 か月あたりの最も訪問されたページ / エントリを取得する方法
このソリューションは統計には適していますが、最もアクセスされたエントリのリストには適していません 大量のメトリック/分析データを格納するための MongoDB アプローチ
map/reduce が遅すぎる...そうでないか?
ありがとう
参照した例に基づいて、URLヒットが1時間ごとに存在するコレクションが作成されています。
このようなサンプルドキュメントを想定しています
{page: "/index.html", time: Date( "Mon Apr 18 07:49:28 2011"), views: 53, tweets: 2}
Mongodbの集約フレームワークを使用できます。以下は、月ごとにビューを集約するためのsudoコードです。
db.pagestats.aggregate( { $project : { month_hits : { $month : "$time" } } },
{ $group:{_id : {$month_hits:"$month_hits"},hits: { $sum: "$views" } } },
{ $sort : { "_id.hits" : 1 }} } );
集計の詳細については、このリンクを参照してください。
Map-Reduceは、リアルタイムクエリを対象としていません。したがって、同様の集計を実行し、結果を一時コレクションに保存して、リアルタイムのクエリに使用できます。インクリメンタルMapReduceを実行できるため、コレクション全体に対してMapReduceを再度実行する必要はありません。詳細については、こちらをお読みください。
このシナリオでは、インクリメンタルMapReduceが私の選択です。