Incrementando centenas de contadores de uma só vez, redis ou mongodb?

Contexto / Intenção:

Então, vou criar um rastreador de eventos do zero e ter algumas idéias sobre como fazer isso, mas não tenho certeza da melhor maneira de continuar com o lado do banco de dados. Uma coisa que eu estou interessado em fazer é permitir que esses eventos sejam completamente dinâmicos, mas ao mesmo tempo permitir relatórios sobre contadores de eventos relacionais.

Por exemplo, todos os países divididos por sistemas operacionais. O efeito desejado seria:

EUA # de eventosiOS - # de eventos que ocorreram nos EUAAndroid - # de eventos que ocorreram nos EUACA # de eventosiOS - # de eventos ocorridos na CAAndroid - # de eventos ocorridos na CAetc.

Minha intenção é poder aceitar esses nomes de eventos da seguinte forma:

/?country=US&os=iOS&device=iPhone&color=blue&carrier=Sprint&city=orlando&state=FL&randomParam=123&randomParam2=456&randomParam3=789

O que significa que, para fazer os contadores relacionais para algo como o acima, eu estaria potencialmente incrementando mais de 100 contadores por solicitação.

Suponha que haverá mais de 10 milhões de solicitações acima por dia.

Eu quero manter as coisas completamente dinâmicas em termos dos nomes dos eventos que estão sendo rastreados e também quero fazê-lo de tal maneira que as buscas nos dados permaneçam super rápidas. Como tal, tenho procurado usar o redis ou o mongodb para isso.

Questões:

Existe uma maneira melhor de fazer isso, então contadores, mantendo os campos dinâmicos?

Contanto que tudo isso estivesse em um documento (estruturado como uma árvore), usar o operador $ inc no mongodb para incrementar 100+ contadores ao mesmo tempo em uma operação seria viável e não lento? O lado positivo aqui é que posso recuperar todas as estatísticas de uma "campanha" rapidamente em uma única consulta.

Isso seria mais adequado para os redis e para fazer um zincrby para todos os contadores aplicáveis ​​para o evento?

obrigado

questionAnswers(4)

yourAnswerToTheQuestion