Увеличивая сотни счетчиков одновременно, Redis или Mongodb?
Background/Intent:
Поэтому я собираюсь создать трекер событий с нуля и дать пару идей о том, как это сделать, но я не уверен в том, как лучше поступить со стороной базы данных. Я заинтересован в том, чтобы эти события были полностью динамичными, но в то же время позволяли составлять отчеты по реляционным счетчикам событий.
Например, все страны в разбивке по операционным системам. Желаемый эффект будет:
US # of events iOS - # of events that occured in US Android - # of events that occured in US CA # of events iOS - # of events that occured in CA Android - # of events that occured in CA etc.Я намерен принять следующие имена событий:
/?country=US&os=iOS&device=iPhone&color=blue&carrier=Sprint&city=orlando&state=FL&randomParam=123&randomParam2=456&randomParam3=789
Это означает, что для создания реляционных счетчиков для чего-то подобного выше, я потенциально буду увеличивать более 100 счетчиков за запрос.
Предположим, что будет более 10 миллионов вышеуказанных запросов в день.
Я хочу, чтобы все было абсолютно динамично с точки зрения отслеживаемых имен событий, и я также хочу сделать это таким образом, чтобы поиск данных оставался очень быстрым. В связи с этим я пытался использовать Redis или Mongodb для этого.
Questions:
Is there a better way to do this then counters while keeping the fields dynamic?
Provided this was all in one document (structured like a tree), would using the $inc operator in mongodb to increment 100+ counters at the same time in one operation be viable and not slow? The upside here being I can retrieve all of the statistics for one 'campaign' quickly in a single query.
Would this be better suited to redis and to do a zincrby for all of the applicable counters for the event?
Спасибо