NoSQL na BIREME: 20 anos de experiência

Preview:

DESCRIPTION

Como a BIREME está usando com sucesso o banco de dados ISIS para gerenciar registros bibliográficos há mais de 20 anos, e como enxergamos a nova geração NoSQL

Citation preview

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• Sub­campos

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²: Non­First Normal Form• MRNN: modelo relacional não normalizado 

(V. W. Setzer)• Schemaless• Semistructured ou Semi­structured

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 chave­valor

• Valor de um campo = simples ou coleção– campos repetitivos: valor = lista– sub­campos: 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 ISIS­DM: ISIS Data ModelProjeto ISIS­DM: 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

• Back­ends 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 sub­camposAcesso a campos e sub­campos

>>> 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 ISIS­DMProjeto ISIS­DM

• FLOSS: Licença LGPL• Iniciando agora: participe das decisões 

cruciais, envolva­se 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

luciano.ramalho@bireme.orgluciano.ramalho@bireme.org

http://reddes.bvsalud.orghttp://reddes.bvsalud.org

luciano.ramalho@bireme.orgluciano.ramalho@bireme.org

Recommended