1

mongodb を使用して、1 日 / 1 週間 / 1 か月あたりの最も訪問されたページ / エントリを取得する方法

このソリューションは統計には適していますが、最もアクセスされたエントリのリストには適していません 大量のメトリック/分析データを格納するための MongoDB アプローチ

map/reduce が遅すぎる...そうでないか?

ありがとう

4

1 に答える 1

2

参照した例に基づいて、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が私の選択です。

于 2012-12-31T08:27:33.180 に答える