ISIS­DM
The ISIS Data Model API
Uma API independente de banco de dados
para manipulação de
registros bibliográficos e documentais
Luciano Ramalho
BIREME/OPAS/OMS
Contexto tecnológico
• 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
Exemplos de NoSQL
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
ISIS Formatting Language
• DSL usada para extração de dados e definição de índices
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
– 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]
Download

ISISDM The ISIS Data Model API