¿Incrementando cientos de contadores a la vez, redis o mongodb?

Fondo / Intención:

Así que voy a crear un rastreador de eventos desde cero y tendré un par de ideas sobre cómo hacer esto, pero no estoy seguro de cuál es la mejor manera de proceder con el lado de la base de datos. Una cosa que me interesa es permitir que estos eventos sean completamente dinámicos, pero al mismo tiempo permitir la presentación de informes sobre contadores de eventos relacionales.

Por ejemplo, todos los países desglosados ​​por sistemas operativos. El efecto deseado sería:

US # de eventosiOS - # de eventos que ocurrieron en los Estados UnidosAndroid - # de eventos que ocurrieron en los Estados UnidosCA # de eventosiOS - # de eventos que ocurrieron en CAAndroid - # de eventos que ocurrieron en CAetc.

Mi intención es poder aceptar estos nombres de eventos de esta manera:

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

Lo que significa que para hacer los contadores relacionales para algo como lo anterior, potencialmente estaría incrementando más de 100 contadores por solicitud.

Supongamos que habrá más de 10 millones de las solicitudes anteriores por día.

Quiero mantener las cosas completamente dinámicas en términos de los nombres de eventos que se rastrean y también quiero hacerlo de tal manera que las búsquedas en los datos sigan siendo muy rápidas. Como tal he estado buscando usar redis o mongodb para esto.

Preguntas:

¿Hay una mejor manera de hacer esto que contadores mientras se mantienen dinámicos los campos?

Si todo esto estuviera en un solo documento (estructurado como un árbol), ¿sería viable y no lento el uso del operador $ inc en mongodb para incrementar más de 100 contadores al mismo tiempo en una operación? La ventaja aquí es que puedo recuperar todas las estadísticas de una 'campaña' rápidamente en una sola consulta.

¿Sería esto más adecuado para volver a hacer y hacer un zincrby para todos los contadores aplicables para el evento?

Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta