Бревна кальмаров на mongodb - PullRequest
2 голосов
/ 25 апреля 2010

Я планирую зарегистрировать мои экземпляры squid на mongodb, но реальная проблема заключается в том, что у нас есть огромный трафик для регистрации, каждый доступ аутентифицируется с помощью user / pass. В конце концов мы должны сделать несколько отчетов на основе журналов. Я думал вставить журналы, распределенные по месяцам и пользователям, поэтому моя коллекция будет выглядеть так:

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

Так что, если я хочу генерировать свои отчеты на основе месяца апреля, мне просто нужно выбрать правильный месяц, а не просматривать миллионы строк, чтобы выбрать строки, которые соответствуют отметке времени между 1 и 30 апреля. *

Конечно, этот тип вставки будет медленнее, чем просто вставка строки журнала напрямую. Поэтому мой вопрос: есть ли лучший способ сделать это?

В настоящее время у нас около 12 миллионов строк журнала в день.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2010

Вы также можете создавать новую коллекцию каждый месяц. Или сохраните данные дважды. Дисковое пространство дешево.

0 голосов
/ 25 апреля 2010

Трудно сказать, не зная деталей, но я бы сказал, что, скорее всего, вы беспокоитесь о неправильной проблеме: вы думаете о скорости вставки, а не о скорости вычисления отчета.

У Mongo есть целый день для хранения этих 12 миллионов записей, но вы можете захотеть, чтобы отчет, охватывающий, возможно, полмиллиарда записей (~ = 1 месяц данных), отображался в реальном времени (секунды, может быть, минута). С этой точки зрения, вероятно, лучше оптимизировать для чтения, а не для письма.

...