Então BuddyMedia está usando um pouco disso. O Gilt Groupe fez algo muito legal com Hummingbird (node.js + MongoDB).
Tendo trabalhado para um grande anunciante on-line no espaço de mídia social, posso atestar que relatórios em tempo real são realmente uma dor. Tentar "acumular" 500 milhões de impressões por dia já é um desafio, mas tentar fazê-lo em tempo real funcionou, mas trouxe algumas limitações significativas. (como se estivesse realmente atrasado em 5 minutos :)
Francamente, esse tipo de problema é uma das razões pelas quais comecei a usar o MongoDB. E eu não sou o único. As pessoas estão usando o MongoDB para todos os tipos de análises em tempo real:monitoramento de servidor , registro centralizado , bem como relatórios do painel.
A chave real ao fazer esse tipo de relatório é entender que a estrutura de dados é completamente diferente com o MongoDB, você evitará consultas de "agregação", portanto, as consultas e os gráficos de saída serão diferentes. Há algum trabalho de codificação extra no lado do cliente.
Aqui está a chave que pode apontar na direção certa para fazer isso com o MongoDB. Observe a seguinte estrutura de dados:
{
date: "20110430",
gender: "M",
age: 1, // 1 is probably a bucket
impression_hour: [ 100, 50, ...], // 24 of these
impression_minute: [ 2, 5, 19, 8, ... ], // 1440 of these
clicks_hour: [ 10, 2, ... ],
...
}
Obviamente, existem alguns ajustes aqui, índices apropriados, talvez agrupando data+gender+age em um
_id
. Mas essa é a estrutura básica da análise de cliques com o MongoDB. É muito fácil atualizar impressões e cliques { $inc : { clicks_hour.0 : 1 } }
. Você pode atualizar todo o documento atomicamente. E é realmente muito natural relatar. Você já tem sua matriz contendo seus pontos de dados de hora ou minuto. Espero que isso o aponte na direção certa.