Upload
luciano-ramalho
View
1.173
Download
1
Embed Size (px)
DESCRIPTION
Apresentação feita em 14/jul/2010 no 2º Google Open Source Jam em São Paulo
Citation preview
Uma API independente de banco de dados para manipulação de
registros bibliográficos e documentais
ISISDMISISDMThe ISIS Data Model APIThe ISIS Data Model API
Luciano RamalhoBIREME/OPAS/OMS
Contexto tecnológicoContexto 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 recentesAlguns produtos recentes
• ZODB• Apache CouchDB• MongoDB• Hadoop Hbase• ThruDB• Redis• Hypertable• Riak
• Google Datastore• Amazon SimpleDB• Apstrata
Exemplos de NoSQLExemplos de NoSQL
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• Subcampos
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
ISIS Formatting LanguageISIS Formatting Language
• DSL usada para extração de dados e definição de índices
Projeto ISISDM: ISIS Data ModelProjeto 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– 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 subcamposAcesso a campos e subcampos
>>> 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 ISISDMProjeto 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
O queO quetemos:temos:usuários,usuários,dados,dados,casoscasosde uso de uso concretosconcretos
http://reddes.bvsalud.orghttp://reddes.bvsalud.org
[email protected]@bireme.org
http://reddes.bvsalud.orghttp://reddes.bvsalud.org
[email protected]@bireme.org