2

squid インスタンスを mongodb にログ記録することを計画していますが、実際の問題は、ログに記録する膨大なトラフィックがあり、すべてのアクセスがユーザー/パスで認証されることです。最終的には、ログに基づいていくつかのレポートを作成する必要があります。月ごと、ユーザーごとに配布されたログを挿入することを考えていたので、コレクションは次のようになります。

{month: 'april', users: [{user: 'loop0', logs: [{timestamp: 12345678.9, url: 'http://stackoverflow.com/question/ask', ... }]}]

したがって、4 月に基づいてレポートを生成したい場合は、4 月 1 日と 4 月 30 日のタイムスタンプが一致する行を取得するために無数の行を調べるのではなく、適切な月を取得する必要があります。

もちろん、このタイプの挿入は、ログ行を直接挿入するよりも遅くなります。だから私の質問は:これを行うための最良の方法はありますか?

現在、1 日あたり約 1,200 万行のログがあります。

4

2 に答える 2

0

毎月新しいコレクションを作成することもできます。または、データを 2 回保存します。ディスク容量は安価です。

于 2010-04-26T09:31:33.470 に答える
0

詳細を知らずに判断するのは難しいですが、間違った問題について心配している可能性が高いと言えます。レポートの計算速度ではなく、挿入速度について考えているのです。

Mongo はこれらの 1,200 万のエントリを 1 日中格納する必要がありますが、おそらく 5 億エントリ (~= 1 か月分のデータ) にまたがるレポートをリアルタイム (数秒から 1 分) でレンダリングしたい場合があります。その観点から、書き込みよりも読み取りに最適化することをお勧めします。

于 2010-04-25T15:56:18.093 に答える