Modelos ricos

  • 3,365 views
Uploaded on

Um outro motivo para usar NoSQL: apresentação de 20 minutos feita no 2º Encontro NoSQL Brasil (no:sql(br/v2) em 21/10/2011.

Um outro motivo para usar NoSQL: apresentação de 20 minutos feita no 2º Encontro NoSQL Brasil (no:sql(br/v2) em 21/10/2011.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,365
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
81
Comments
0
Likes
8

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. Modelos RicosUm outro motivo para usar NoSQL Luciano Ramalho @luciano BIREME/OPAS/OMS Academia Python/Globalcode
  • 2. Modelo de dados LILACSVisãoparcial!
  • 3. Parte de um registro ISIS
  • 4. Parte de um registro ISIS
  • 5. Um contexto de usoISIS ainda é largamente utilizado em bibliotecas,museus, arquivos públicos, escritórios de advocaciaBIREME/OPAS/OMS: convênio entre a Escola Paulistade Medicina (Unifesp), Organização Panamericana daSaúde e Ministério da Saúde do Brasil, com a missãode organizar, indexar e disseminar a produçãocientífica da América Latina e do CaribeBIREME usa ISIS há 25 anos, SOLR/Lucene há 5 anose CouchDB há alguns meses
  • 6. A missão da nossa equipeRenovar os métodos, práticas e as ferramentas dedesenvolvimentoPráticas ágeisFerramentas e métodos de trabalho Open SourcePrimeiro passo: de PHP sem framework para Pythoncom Django
  • 7. Projeto piloto OpenTrials sistema de registro de ensaios clínicos testes de medicamentos e procedimentos com seres humanos Registro Brasileiro de Ensaios Clínicos Financiado pelo Ministério da Saúde e OPAS Operado pela Fiocruz com suporte da BIREME
  • 8. www.ensaiosclinicos.gov.br
  • 9. RetrospectivaNo projeto piloto com Python e Django, optamos pornão inovar no banco de dados, usamos MySQL, que jáera conhecido da instituiçãoO ReBEC está em produção desde 2010Ganhamos um ótimo contra-exemplo: a aplicaçãoOpentTrials ficaria muito mais simples usando ummodelos de dados não normalizado
  • 10. Onde a normalizaçãoatrapalhouTraduções: para alguns campos, precisamos ter otexto em n línguasMas nunca vamos querer acessar estes campos forado contexto do resto do registro principal, eles são defato parte integrante e inseparável deleNão queremos que eles possam ser atualizadosindendentemente do registro principal
  • 11. Onde a normalizaçãoatrapalhou 2Vários campos repetitivos viraram tabelas auxiliaresVersionamento Quando um registro (ou registro auxiliar) é atualizado, o registro inteiro (e seus registros auxliares) precisam ser revalidados pelos revisores (para verificar inconsistências) e re-publicados Mas o histórico não pode ser perdido!
  • 12. Onde a normalizaçãoatrapalhou 3Auditoria: precisamos saber sempre que qualquerdado de um registro (ou registros auxiliares) foi alteradoJamais um registro de uma tabela auxiliar pode seratualizado independente do registro principal Ex: o contato científico que foi registrado originalmente nunca poderá ser esquecido A descrição da metodologia de intervenção é como um contrato do pesquisador com a sociedade
  • 13. Como resolvemos?Criamos uma app chamada django-fossil (no Github)O django-fossil cria um fósil de cada registro publicado Um fóssil é um registro desnormalizado, “petrificado”, imutável Usa como chave primária uma assinatura digital (hash) do conteúdo Tem uma chave estrangeira que aponta para a versão anterior Solução inspirada no CouchDB e no GIT!
  • 14. Isto é um fóssil!
  • 15. Lição aprendidaPersistência poliglota
  • 16. Persistência poliglota Usar um BD relacional para aproveitar o seu conhecimento e ferramental existente Integrar um BD NoSQL apropriado assim que o modelo relacional deixa de ser parte da solução e começa a ser parte do problema
  • 17. Referências: elas existem!A palavra-chave é: semistructured (ou semi-structured)
  • 18. Document databasesBases de dados documentais ISIS é um exemplo antigo dessa categoriaModelo de dados semiestruturado, parecido comJSON (mais simples que XML)O esquema é armazenado junto com cada registroExemplos modernos e Open Source: CouchDB e MongoDB
  • 19. Para o OpenTrials/ReBECA melhor solução é o CouchDB Mas o MongoDB também seria apropriado, com todas as chaves de durabilidade ligadasMotivo fundamental: MVCC (multi-version concurrencycontrol), garante que a aplicação não conseguesobrescrever acidentalmente um registro Para fazer update, é obrigatório informar o hash da versão anterior, e assim provar que você não está fazendo uma atualização com dados vencidos sem saber
  • 20. Minicurso gratuito em 1 de novembro, 19h00: OO sem Sotaque em Python http://python.globalcode.com.br