O documento discute a experiência de 20 anos da BIREME/OPAS/OMS com bancos de dados NoSQL. Apresenta como o modelo relacional normalizado era predominante, mas usuários resistiam com sistemas como ISIS. Novos bancos NoSQL surgiram para grandes empresas. A BIREME usa o sistema LILACS para catalogação cooperativa na América Latina. Propõe o projeto ISIS-DM para definir esquemas semiestruturados em NoSQL como MongoDB e CouchDB.
20 anos de experiência com NoSQL na BIREME/OPAS/OMS
1. NoSQL na
BIREME/OPAS/OMS
20 anos de experiência
Luciano Ramalho
BIREME/OPAS/OMS
2.
3.
4.
5. Invasõ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
7. Uma 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
9. Dicionário de Dados da Metodologia Lilacs
Dicionário de Dados da Metodologia Lilacs
10. O 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.
12. Modelo de dados apoia
a metodologia
• Campos repetitivos
• Campos opcionais
• Subcampos
Características comuns aos formatos
Características comuns aos formatos
de registros MARC, ISO-2709 e ISIS
de registros MARC, ISO-2709 e ISIS
13. Exemplo 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»
14. Exemplo de registro ISIS
Campo repetitivo
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»
15. Exemplo de registro ISIS
Marcador de sub-campo Sub-campo
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»
16. Exemplo de registro ISIS
Campo repetitivo
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
17. Algumas 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)
18. O 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?
23. Semistructured Database Design
• Teoria atualizada
• Discussão sobre
redundância,
anomalias de
atualização etc.
• Notação gráfica
para definir
esquemas de dados
24. O modelo de dados
semiestruturado
• 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!
25. Alternativas 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?
26.
27. Projeto 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
30. Acesso a campos e subcampos
>>> book.title
>>> book.title
u'The Annotated Alice^sDefinitive Edition'
u'The Annotated Alice^sDefinitive Edition'
>>> print book.title.s
>>> print book.title.s
Definitive Edition
Definitive Edition
>>> print book.creators[0].y
>>> print book.creators[0].y
1832-1898
1832-1898
>>> for creator in book.creators:
>>> for creator in book.creators:
...
... print '%-12s: %s' %% (creator.r, creator[0])
print '%-12s: %s' (creator.r, creator[0])
Author
Author :: Lewis Carroll
Lewis Carroll
Illustrator :: John Tenniel
Illustrator John Tenniel
Editor
Editor :: Martin Gardner
Martin Gardner
31.
32. Projeto 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