O documento descreve uma abordagem para realizar análises de web em tempo real usando MongoDB. Ele discute como os documentos flexíveis e upserts rápidos do MongoDB são adequados para armazenar dados de análise, com cada item, data e hora armazenados em um documento separado. Ele também explica como map-reduce é usado para totalizar as métricas em cada documento.
3. Por que o MongoDB?
Upserts rápidos, flexibilidade de documentos
Tuesday, 25 October 2011
4. Conceito
Um documento por item, dia e hora,
contendo um mapa de ações e seus totais
Totalização feita com mapreduce
Tuesday, 25 October 2011
5. Estrutura do documento
duh.
{ “id” : identificador do item,
“date” : data ISO (yyyy-mm-dd),
granularidade “hour” : hora (0-23),
“actions” : { “access” : 1,
“clicks” : 2,
“show” : 1,
etc, etc. }}
a mágica de um document database
Tuesday, 25 October 2011
6. Índices
índice simples para busca de um item
{ “id” : ASC }
índice composto para busca de um range de data
{ “id” : ASC,
“date” : DESC,
“hour” : DESC }
Tuesday, 25 October 2011
7. Map Reduce
map reduce
function() { function(k, vals) {
for(i in this.actions) { total = {};
var action = {}; for (i in vals) {
action[i] = this.actions[i]; for (action_type in vals[i]) {
emit(this.date, action); if(!total[action_type]) {
} total[action_type] = 0;
} }
total[action_type] += vals[i][action_type];
}
}
return total;
}
Tuesday, 25 October 2011