Modelos RicosUm outro motivo para usar NoSQL                                     Luciano Ramalho                          ...
Modelo de dados LILACSVisãoparcial!
Parte de um registro ISIS
Parte de um registro ISIS
Um contexto de usoISIS ainda é largamente utilizado em bibliotecas,museus, arquivos públicos, escritórios de advocaciaBIRE...
A missão da nossa equipeRenovar os métodos, práticas e as ferramentas dedesenvolvimentoPráticas ágeisFerramentas e métodos...
Projeto piloto OpenTrials   sistema de registro de ensaios clínicos     testes de medicamentos e procedimentos com     ser...
www.ensaiosclinicos.gov.br
RetrospectivaNo projeto piloto com Python e Django, optamos pornão inovar no banco de dados, usamos MySQL, que jáera conhe...
Onde a normalizaçãoatrapalhouTraduções: para alguns campos, precisamos ter otexto em n línguasMas nunca vamos querer acess...
Onde a normalizaçãoatrapalhou 2Vários campos repetitivos viraram tabelas auxiliaresVersionamento  Quando um registro (ou r...
Onde a normalizaçãoatrapalhou 3Auditoria: precisamos saber sempre que qualquerdado de um registro (ou registros auxiliares...
Como resolvemos?Criamos uma app chamada django-fossil (no Github)O django-fossil cria um fósil de cada registro publicado ...
Isto é um fóssil!
Lição aprendidaPersistência   poliglota
Persistência poliglota Usar um BD relacional para aproveitar o seu conhecimento e ferramental existente Integrar um BD NoS...
Referências: elas existem!A palavra-chave é: semistructured (ou semi-structured)
Document databasesBases de dados documentais  ISIS é um exemplo antigo dessa categoriaModelo de dados semiestruturado, par...
Para o OpenTrials/ReBECA melhor solução é o CouchDB  Mas o MongoDB também seria apropriado, com  todas as chaves de durabi...
Minicurso gratuito em 1 de novembro, 19h00:        OO sem Sotaque em Python    http://python.globalcode.com.br
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Modelos ricos
Próximos SlideShares
Carregando em…5
×

Modelos ricos

4.126 visualizações

Publicada em

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.

Publicada em: Tecnologia
0 comentários
8 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
4.126
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.017
Ações
Compartilhamentos
0
Downloads
91
Comentários
0
Gostaram
8
Incorporações 0
Nenhuma incorporação

Nenhuma nota no 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
  • Modelos ricos

    1. 1. Modelos RicosUm outro motivo para usar NoSQL Luciano Ramalho @luciano BIREME/OPAS/OMS Academia Python/Globalcode
    2. 2. Modelo de dados LILACSVisãoparcial!
    3. 3. Parte de um registro ISIS
    4. 4. Parte de um registro ISIS
    5. 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. 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. 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. 8. www.ensaiosclinicos.gov.br
    9. 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. 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. 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. 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. 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. 14. Isto é um fóssil!
    15. 15. Lição aprendidaPersistência poliglota
    16. 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. 17. Referências: elas existem!A palavra-chave é: semistructured (ou semi-structured)
    18. 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. 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. 20. Minicurso gratuito em 1 de novembro, 19h00: OO sem Sotaque em Python http://python.globalcode.com.br

    ×