NoSQL na BIREME/OPAS/OMS

Transcrição

NoSQL na BIREME/OPAS/OMS
NoSQL na BIREME/OPAS/OMS
20 anos de experiência
Luciano Ramalho
BIREME/OPAS/OMS
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
Alguns produtos recentes
• ZODB
• Apache CouchDB
• MongoDB
• Hadoop Hbase
• ThruDB
• Redis
• Hypertable
• Riak
• Google Datastore
• Amazon SimpleDB
• Apstrata
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
A metodologia é o elo
Dicionário
Dicionáriode
deDados
Dadosda
daMetodologia
MetodologiaLilacs
Lilacs
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.
Registros 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 apoia
a metodologia
• Campos repetitivos
• Campos opcionais
• Sub­campos
Características
Característicascomuns
comunsaos
aosformatos
formatos
de
deregistros
registrosMARC,
MARC,ISO-2709
ISO-2709eeISIS
ISIS
Exemplo de registro ISIS
10
10
10
12
«Lewis Carroll^y1832-1898^rauthor»
«John Tenniel^y1820-1914^rillustrator»
«Lewis Carroll^y1914-2010^reditor»
«The Annotated Alice^sThe Definitive Edition»
Exemplo de registro ISIS
Campo repetitivo
10
10
10
12
«Lewis Carroll^y1832-1898^rauthor»
«John Tenniel^y1820-1914^rillustrator»
«Lewis Carroll^y1914-2010^reditor»
«The Annotated Alice^sThe Definitive Edition»
Exemplo de registro ISIS
Marcador de sub-campo
10
10
10
12
Sub-campo
«Lewis Carroll^y1832-1898^rauthor»
«John Tenniel^y1820-1914^rillustrator»
«Lewis Carroll^y1914-2010^reditor»
«The Annotated Alice^sThe Definitive Edition»
Exemplo de registro ISIS
Campo repetitivo
10
10
10
12
«Lewis Carroll^y1832-1898^rauthor»
«John Tenniel^y1820-1914^rillustrator»
«Lewis Carroll^y1914-2010^reditor»
«The Annotated Alice^sThe Definitive Edition»
Marcador de sub-campo
Sub-campo
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)
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?
Comparar BD relacionais é como comparar automóveis
NoSQL é mais difícil comparar
Tags 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 Web
• Teoria de BD semiestruturados
• Os autores têm vários papers seminais
Semistructured 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 semiestruturado
• 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 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 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 esquema
Instanciação
>>>
>>> book
book == Book(title='The
Book(title='The Annotated
Annotated Alice^sDefinitive
Alice^sDefinitive Edition',
Edition',
...
pages=352,
...
pages=352,
...
creators=['Lewis
...
creators=['Lewis Carroll^y1832-1898^rAuthor',
Carroll^y1832-1898^rAuthor',
...
'John
Tenniel^rIllustrator',
...
'John Tenniel^rIllustrator',
...
'Martin
...
'Martin Gardner^y1914-2010^rEditor'])
Gardner^y1914-2010^rEditor'])
Acesso a campos e sub­campos
>>>
>>> book.title
book.title
u'The
u'The Annotated
Annotated Alice^sDefinitive
Alice^sDefinitive Edition'
Edition'
>>>
print
book.title.s
>>> print book.title.s
Definitive
Definitive Edition
Edition
>>>
>>> print
print book.creators[0].y
book.creators[0].y
1832-1898
1832-1898
>>>
>>> for
for creator
creator in
in book.creators:
book.creators:
...
print
'%-12s:
...
print '%-12s: %s'
%s' %% (creator.r,
(creator.r, creator[0])
creator[0])
Author
:
Lewis
Carroll
Author
: Lewis Carroll
Illustrator
Illustrator :: John
John Tenniel
Tenniel
Editor
:
Martin
Editor
: Martin Gardner
Gardner
Projeto 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 que
temos:
usuários,
dados,
casos
de uso concretos
http://reddes.bvsalud.org
http://reddes.bvsalud.org
[email protected]
[email protected]
http://reddes.bvsalud.org
http://reddes.bvsalud.org
[email protected]
[email protected]

Documentos relacionados