Slide 1

Slide 1 text

Atomic Modifiers Access Stats Study Case at SciELO Project

Slide 2

Slide 2 text

Sobre SciELO Publicação de Periódicos Científicos no contexto Open Access. Atuando na América Latina, Caribe, Portugal, Espanha e Africa do Sul O SciELO Brasil representa a maior coleção da Rede SciELO com: 32 milhões de acessos mensal • • • •

Slide 3

Slide 3 text

Analytics SciELO Projeto criado para atender a demanda de obter uma ferramenta confiável para contabilizar acessos ao site SciELO Periódicos. MongoDB foi inserido no contexto em novembro de 2011com o objetivo de realizar uma prova de conceito. Os “Atomic Modifiers” do MongoDB viabilizaram o projeto. • • •

Slide 4

Slide 4 text

Analytics SciELO Criar um sistema capaz de: contabilizar acessos as páginas do SciELO que se classificam em: Páginas de Revistas Páginas de Fascículos Páginas de Artigos permitir contextualizar os acessos por: Revistas (Páginas de Revistas, Fascículos e Artigos) • • • • • • •

Slide 5

Slide 5 text

Arquitetura Inicial

Slide 6

Slide 6 text

Atomic Modifiers Porque os “Atomic Modifiers” foram decisivos para este projeto? Estatísticas de Acesso possuem uma crescimento orgânico. Os “Atomic Modifiers” do MongoDB são ideais para registrar estatísticas de acessos pois com eles é possível criar/atualizar documentos sem que eles existam previamente. A recuperação das estatísticas também é muito facil. • • •

Slide 7

Slide 7 text

Atomic Modifiers update( ) db.collection.update( criteria, objNew, upsert, multi ) “Modifier Operators” existentes $inc, $set, $unset, $push, $pushAll, $adToSet, $each, $pop, $pull, $pullAll, $rename, $bit “Modifier Operators” em uso no projeto $inc, $set $inc Incrementa o campo associado ao modificador pelo valor inteiro indicado. { ‘$inc’ : { field : value } } $set Define um valor ao campo associado ao modificador. Qualquer valor é permitido. { ‘$set’ : { field : value } }

Slide 8

Slide 8 text

Atomic Modifiers update( ) db.collection.update( criteria, objNew, upsert, multi ) criteria Seleção de documentos a serem modificados. objNew Objeto que atualizará o documento recuperado por “criteria”. upsert (True) É o segredo para viabilizar registros de estatísticas de acessos, upsert significa: “atualiza se existir, caso contrário cria (um único documento)” multi Indica se todos documentos recuperados por “criteria” serão atualizados.

Slide 9

Slide 9 text

Atomic Modifiers update( ) db.collection.update( criteria, objNew, upsert, multi ) >>> analytics.find_one({'site':'www.scielo.br'}) >>> analytics.update({'site':'www.scielo.br'},{'$inc':{'201201':1}}) >>> analytics.find_one({'site':'www.scielo.br'}) >>> analytics.update({'site':'www.scielo.br'},{'$inc':{'201201':1}},True) >>> analytics.find_one({'site':'www.scielo.br'}) {u'_id': ObjectId('4ff5fc800646b427a8b778ed'), u'201201': 1, u'site': u'www.scielo.br'} >>> analytics.update({'site':'www.scielo.br'},{'$inc':{'201201':1}}) >>> analytics.find_one({'site':'www.scielo.br'}) {u'_id': ObjectId('4ff6009e0646b427a8b778ee'), u'201201': 2, u'site': u'www.scielo.br'}

Slide 10

Slide 10 text

Atomic Modifiers save( ) db.collection.save( objNew ) save é apenas uma atalho para facilitar o uso do upsert. O upsert é definido com true por padrão quando usamos o metodo save. >>> analytics.find_one({'site':'www.scielo.br'}) >>> analytics.save({'site':'www.scielo.br'}) ObjectId('4ff5ffbe1156c130c1000007') >>> analytics.find_one({'site':'www.scielo.br'}) {u'_id': ObjectId('4ff5ffbe1156c130c1000007'), u'site': u'www.scielo.br'}

Slide 11

Slide 11 text

url’s http://www.mongodb.org/display/DOCS/Updating http://github.com/scieloorg/analytics http://github.com/fabiobatalha • • • [email protected]