Я думаю о том, чтобы попытаться использовать MongoDB для хранения нашей статистики, но у меня есть несколько общих вопросов о том, правильно ли я понимаю, прежде чем я действительно начну изучать это.
Я понимаю концепцию использования документов, но мне не очень понятно, сколько данных может храниться внутри каждого документа. Следующая диаграмма объясняет макет, о котором я думаю:
Website (document)
- some keys/values about the particular document
- statistics (tree)
- millions of rows where each record is inserted from a pageview (key/value array containing data such as timestamp, ip, browser, etc)
Что меня поразило в mongodb, так это функции группировки, такие как:
http://www.mongodb.org/display/DOCS/Aggregation
db.test.group(
{ cond: {"invoked_at.d": {$gte: "2009-11", $lt: "2009-12"}}
, key: {http_action: true}
, initial: {count: 0, total_time:0}
, reduce: function(doc, out){ out.count++; out.total_time+=doc.response_time }
, finalize: function(out){ out.avg_time = out.total_time / out.count }
} );
Но моя главная проблема в том, насколько трудной будет, например, эта команда на сервере, если, скажем, десятки миллионов записей в десятках документов на оперативном сервере 512-1 Гбайт на стойке, например? Будет ли он работать при низкой нагрузке?
Есть ли ограничения на количество документов, которые может иметь MongoDB (отдельные базы данных)? Кроме того, есть ли ограничение на количество записей в дереве, которое я объяснил выше? Кроме того, этот запрос, который я показывал выше, выполняется мгновенно или это какой-то запрос типа карты / уменьшения? Не уверен, смогу ли я выполнить это при загрузке страницы в нашей панели управления, чтобы мгновенно получить эту статистику.
Спасибо!