NoSQL na BIREME: 20 anos de experiência
-
Upload
luciano-ramalho -
Category
Documents
-
view
1.370 -
download
1
description
Transcript of NoSQL na BIREME: 20 anos de experiência
20 anos de experiência
NoSQL na NoSQL na BIREME/OPAS/OMSBIREME/OPAS/OMS
Luciano RamalhoBIREME/OPAS/OMS
Invasões bárbarasInvasões bárbaras
• O modelo relacional normalizado (MRN) reinava praticamente incontestável
• Em alguns nichos, usuários de bancos de dados NoSQL resistiam (ex. ISIS, Adabas, Mumps...)
• Grandes usuários de NoSQL saíram do armário (Google, Amazon, Facebook...)
• Vários bancos NoSQL novos sendo lançados
Alguns produtos recentesAlguns produtos recentes
• ZODB• Apache CouchDB• MongoDB• Hadoop Hbase• ThruDB• Redis• Hypertable• Riak
• Google Datastore• Amazon SimpleDB• Apstrata
Uma aplicação: LILACSUma aplicação: LILACS
• LILACS: Literatura Latinoamericana y del Caribe en Ciencias de la Salud
• Catalogação cooperativa de artigos científicos nos países de origem
• Registros fornecidos por mais de 100 bibliotecas e centros de informação, de praticamente todos os países da região
• Promove a pesquisa relevante para os nossos problemas de saúde
A metodologia é o eloA metodologia é o elo
Dicionário de Dados da Metodologia LilacsDicionário de Dados da Metodologia Lilacs
O absurdoO absurdo[...] seria interessante notar o absurdo do padrão do MRN [Modelo Relacional Normalizado]: se um livro tiver 3 autores e 5 assuntos, será necessário representá-lo no MRN por meio de uma linha na tabela Livros, mais 3 na Nomes-de-autores (que implementaria o atributo multivalorado correspondente) e mais 5 na de Assuntos, num total de 9 linhas em três tabelas distintas [...]. Mas o que se vê e e pega-se na mão no mundo real é um livro só, e não um picadinho de livro!
SETZER, V. Bancos de dados: aprenda o que são, melhore seu conhecimento, construa os seus. 1ª ed. São Paulo: Edgard Blücher, 2005.
Registros bibliográficosRegistros bibliográficos
• MARC: Machine Readable Cataloging– US Library of Congress
• ISO 2709– Information and documentation: Format for
information exchange
• CDS/ISIS– Unesco, BIREME/OPAS/OMS et al.
Modelo de dados apoiaModelo de dados apoiaa metodologiaa metodologia
• Campos repetitivos• Campos opcionais• Subcampos
Características comuns aos formatos de registros MARC, ISO-2709 e ISIS
Características comuns aos formatos de registros MARC, ISO-2709 e ISIS
Exemplo de registro ISISExemplo de registro ISIS
10 «Lewis Carroll^y1832-1898^rauthor» 10 «John Tenniel^y1820-1914^rillustrator» 10 «Lewis Carroll^y1914-2010^reditor» 12 «The Annotated Alice^sThe Definitive Edition»
Exemplo de registro ISISExemplo de registro ISIS
10 «Lewis Carroll^y1832-1898^rauthor» 10 «John Tenniel^y1820-1914^rillustrator» 10 «Lewis Carroll^y1914-2010^reditor» 12 «The Annotated Alice^sThe Definitive Edition»
Campo repetitivo
Exemplo de registro ISISExemplo de registro ISIS
10 «Lewis Carroll^y1832-1898^rauthor» 10 «John Tenniel^y1820-1914^rillustrator» 10 «Lewis Carroll^y1914-2010^reditor» 12 «The Annotated Alice^sThe Definitive Edition»
Marcador de sub-campo Sub-campo
Exemplo de registro ISISExemplo de registro ISIS
10 «Lewis Carroll^y1832-1898^rauthor» 10 «John Tenniel^y1820-1914^rillustrator» 10 «Lewis Carroll^y1914-2010^reditor» 12 «The Annotated Alice^sThe Definitive Edition»
Campo repetitivo
Marcador de sub-campo Sub-campo
Algumas lições aprendidasAlgumas lições aprendidas
• Schema first x schema last (Stonebraker)– ao longo do tempo, é inevitável que você tenha
registros na base em desacordo com as regras de negócios
• Necessário usar um framework que permita definir um modelo de dados com:– tipos de campos validados– validações envolvendo vários campos ou
mesmo a base de dados (ex. unicidade)– geração de forms (estimula o (re)uso)
O futuro do ISISO futuro do ISIS
• Manutenção da implementação legada (CISIS) está cada vez mais complexa
• BIREME busca uma alternativa que suporte bem suas bases de dados (conteúdo), sem necessariamente se prender ao formato binários do ISIS
• Quais são as alternativas?
Comparar BD relacionais é como comparar automóveis
NoSQL é mais difícil comparar
Tags para pesquisarTags para pesquisar
• NoSQL• NF²: NonFirst Normal Form• MRNN: modelo relacional não normalizado
(V. W. Setzer)• Schemaless• Semistructured ou Semistructured
Referência: Data on the WebReferência: Data on the Web
• Teoria de BD semiestruturados
• Os autores têm vários papers seminais
Semistructured Database DesignSemistructured Database Design
• Teoria atualizada• Discussão sobre
redundância, anomalias de atualização etc.
• Notação gráfica para definir esquemas de dados
O modelo de dados O modelo de dados semiestruturadosemiestruturado
• Em uma palavra: JSON– uma aproximação razoável
• Banco de dados = coleção de registros• Registro = dicionário
– conjunto de pares chavevalor
• Valor de um campo = simples ou coleção– campos repetitivos: valor = lista– subcampos: valor = dicionário– tudo junto: listas de dicionários!
Alternativas atuaisAlternativas atuais
• Apache CouchDB– API mais difícil para fazer queries (mapreduce)– estratégia de persistência mais segura em
deployments simples
• MongoDB– API mais fácil para queries– estratégia de persitência otimizada para
update exige deployment mais complexo
• Sugestões?
Projeto ISISDM: ISIS Data ModelProjeto ISISDM: ISIS Data Model
• API para definição de esquemas de dados através de classes, como em certos ORMs
• API de extração de dados tão ou mais poderosa quanto a ISIS Format. Language
• Backends para BDs NF² modernos– MongoDB, CouchDB– Google Datastore– PostgreSQL (hstore, JSON?)– O seu BD favorito
Definição de um esquemaDefinição de um esquema
InstanciaçãoInstanciação
>>> book = Book(title='The Annotated Alice^sDefinitive Edition',... pages=352,... creators=['Lewis Carroll^y1832-1898^rAuthor',... 'John Tenniel^rIllustrator',... 'Martin Gardner^y1914-2010^rEditor'])
>>> book = Book(title='The Annotated Alice^sDefinitive Edition',... pages=352,... creators=['Lewis Carroll^y1832-1898^rAuthor',... 'John Tenniel^rIllustrator',... 'Martin Gardner^y1914-2010^rEditor'])
Acesso a campos e subcamposAcesso a campos e subcampos
>>> book.titleu'The Annotated Alice^sDefinitive Edition'>>> print book.title.sDefinitive Edition>>> print book.creators[0].y1832-1898>>> for creator in book.creators:... print '%-12s: %s' % (creator.r, creator[0])Author : Lewis CarrollIllustrator : John TennielEditor : Martin Gardner
>>> book.titleu'The Annotated Alice^sDefinitive Edition'>>> print book.title.sDefinitive Edition>>> print book.creators[0].y1832-1898>>> for creator in book.creators:... print '%-12s: %s' % (creator.r, creator[0])Author : Lewis CarrollIllustrator : John TennielEditor : Martin Gardner
Projeto ISISDMProjeto ISISDM
• FLOSS: Licença LGPL• Iniciando agora: participe das decisões
cruciais, envolvase enquanto ainda é fácil• Excelente oportunidade para ganhar
experiência com NoSQL, trabalhando com massas de dados e necessidades reais
• Alto impacto social: a missão é democratizar o acesso à informação em saúde
• Visibilidade internacional
O queO quetemos:temos:usuários,usuários,dados,dados,casoscasosde uso de uso concretosconcretos
http://reddes.bvsalud.orghttp://reddes.bvsalud.org
[email protected]@bireme.org
http://reddes.bvsalud.orghttp://reddes.bvsalud.org
[email protected]@bireme.org