nosql na bireme: 20 anos de experiência

35
20 anos de experiência NoSQL na NoSQL na BIREME/OPAS/OMS BIREME/OPAS/OMS Luciano Ramalho BIREME/OPAS/OMS

Upload: luciano-ramalho

Post on 14-Dec-2014

1.365 views

Category:

Documents


1 download

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

TRANSCRIPT

Page 1: 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

Page 2: NoSQL na BIREME: 20 anos de experiência
Page 3: NoSQL na BIREME: 20 anos de experiência
Page 4: NoSQL na BIREME: 20 anos de experiência
Page 5: NoSQL na BIREME: 20 anos de experiência

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

Page 6: NoSQL na BIREME: 20 anos de experiência

Alguns produtos recentesAlguns produtos recentes

• ZODB• Apache CouchDB• MongoDB• Hadoop Hbase• ThruDB• Redis• Hypertable• Riak

• Google Datastore• Amazon SimpleDB• Apstrata

Page 7: NoSQL na BIREME: 20 anos de experiência

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

Page 8: NoSQL na BIREME: 20 anos de experiência

A metodologia é o eloA metodologia é o elo

Page 9: NoSQL na BIREME: 20 anos de experiência

Dicionário de Dados da Metodologia LilacsDicionário de Dados da Metodologia Lilacs

Page 10: NoSQL na BIREME: 20 anos de experiência

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.

Page 11: NoSQL na BIREME: 20 anos de experiência

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.

Page 12: NoSQL na BIREME: 20 anos de experiência

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

Page 13: NoSQL na BIREME: 20 anos de experiência

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»

Page 14: NoSQL na BIREME: 20 anos de experiência

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

Page 15: NoSQL na BIREME: 20 anos de experiência

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

Page 16: NoSQL na BIREME: 20 anos de experiência

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

Page 17: NoSQL na BIREME: 20 anos de experiência

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)

Page 18: NoSQL na BIREME: 20 anos de experiência

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?

Page 19: NoSQL na BIREME: 20 anos de experiência

Comparar BD relacionais é como comparar automóveis

Page 20: NoSQL na BIREME: 20 anos de experiência

NoSQL é mais difícil comparar

Page 21: NoSQL na BIREME: 20 anos de experiência

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

Page 22: NoSQL na BIREME: 20 anos de experiência

Referência: Data on the WebReferência: Data on the Web

• Teoria de BD semiestruturados

• Os autores têm vários papers seminais

Page 23: NoSQL na BIREME: 20 anos de experiência

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

Page 24: NoSQL na BIREME: 20 anos de experiência

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!

Page 25: NoSQL na BIREME: 20 anos de experiência

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?

Page 26: NoSQL na BIREME: 20 anos de experiência
Page 27: NoSQL na BIREME: 20 anos de experiência

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

Page 28: NoSQL na BIREME: 20 anos de experiência

Definição de um esquemaDefinição de um esquema

Page 29: NoSQL na BIREME: 20 anos de experiência

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'])

Page 30: NoSQL na BIREME: 20 anos de experiência

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

Page 31: NoSQL na BIREME: 20 anos de experiência
Page 32: NoSQL na BIREME: 20 anos de experiência

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

Page 33: NoSQL na BIREME: 20 anos de experiência

O queO quetemos:temos:usuários,usuários,dados,dados,casoscasosde uso de uso concretosconcretos

Page 34: NoSQL na BIREME: 20 anos de experiência

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

[email protected]@bireme.org

Page 35: NoSQL na BIREME: 20 anos de experiência

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

[email protected]@bireme.org