MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Estatísticas em tempo real:MySQL(/Drizzle) ou MongoDB?


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.