View
1.405
Download
3
Category
Preview:
DESCRIPTION
O modelo de dados semiestruturado em bases bibliográficas: do CDS/ISIS ao Apache CouchDB
Citation preview
11
O Modelo de Dados O Modelo de Dados Semiestruturado emSemiestruturado emBases Bibliográficas:Bases Bibliográficas:
do CDS/ISIS ao do CDS/ISIS ao Apache CouchDBApache CouchDB
Luciano G. S. Ramalho
Monografia de GraduaçãoBacharelado em Biblioteconomia
Orientador: Prof. Dr. Marcos MucheroniUSP – ECA – CBDNovembro de 2010
22
Por que os bibliotecários Por que os bibliotecários usam bancos de dados usam bancos de dados
diferentes de todo mundo...diferentes de todo mundo...
33
Por que os bibliotecários Por que os bibliotecários usam bancos de dados usam bancos de dados
diferentes de todo mundo...diferentes de todo mundo...e por que eles estão certose por que eles estão certos
44
Agradecimentos:
Colegas da BIREME/OPAS/OMS
Marcos Mucheroni
Imre Simon
Maria Lucia e Jairo
membros da banca
e colegas presentes
Para Marta,
por tudo.
55
IntroduçãoIntrodução
Revisão da LiteraturaRevisão da Literatura
MetodologiaMetodologia
ResultadosResultados
ConclusãoConclusão
66
Cenário atual e motivaçãoCenário atual e motivação
• Muitas bibliotecas no Brasil utilizam sistemas baseados na família ISIS
• A família ISIS não segue o Modelo Relacional Normalizado (MRN)
77
88
99
Exemplo de uso: ISIS na Exemplo de uso: ISIS na catalogação cooperativacatalogação cooperativa
• LILACS: Literatura Latinoamericana y del Caribe en Ciencias de la Salud
• Catalogação cooperativa de artigos científicos nos países de origem
1010
Contexto tecnológicoContexto tecnológico
• Hegemonia do modelo relacional normalizado (MRN)
• Bancos de dados não relacionais em alguns nichos (ISIS, Adabas, Mumps...)
• Grandes sites revelam seus segredos (Google, Amazon, Facebook...)
• Movimento NoSQL = Not only SQL
1111
Alguns produtos NoSQL recentesAlguns produtos NoSQL recentes
• Apache Cassandra• Apache CouchDB• MongoDB• Hadoop Hbase• Hypertable• Redis• Riak• ThruDB
• Google Datastore• Amazon SimpleDB• Apstrata
Todos lançadosapós o ano 2000
1212
1313
Descrição do problemaDescrição do problemade pesquisade pesquisa
A família de sistemas ISIS mostrouse muito bem adaptada à operação de bases bibliográficas nos últimos 25 anos, mas com o passar tempo vieram dificuldades para evoluir suas implementações.
Com o surgimento de novos sistemas com modelosde dados mais flexíveis, será que existe hoje um caminho para a migração de bases ISIS que evite uma reestruturação dos dados com impacto sobre as próprias metodologias de catalogação?
1414
IntroduçãoIntrodução
Revisão da LiteraturaRevisão da Literatura
MetodologiaMetodologia
ResultadosResultados
ConclusãoConclusão
1515
Resumo da terminologia adotadaResumo da terminologia adotada
1616
Modelo Relacional NormalizadoModelo Relacional Normalizado
editoras
autoresautoreslivroslivros
bd_opac
livros
objetobanco de
dados
relação
tupla
atributo
banco dedados
tabela
registro
campo
1717
• Pela definição de E. F. Codd, os domínios dos atributos devem ser atômicos– Ou seja: valores simples e indivisíveis do ponto
de vista do sistema de banco de dados
• 1ª Forma Normal (1FN ou 1NF, em inglês)– C. J. Date debate a definição clássica de 1FN
C. J. Date×
Codd, Elmasri, Setzer, Silberschatz...
C. J. Date×
Codd, Elmasri, Setzer, Silberschatz...
Modelo Relacional NormalizadoModelo Relacional Normalizado
1818
O problema do MRNO problema do MRN
[...] seria interessante notar o absurdo do padrão do MRN [Modelo Relacional Normalizado]: se um livro tiver 3 autores e 5 assuntos [...].
SETZER, V. Bancos de dados: aprendao que são, melhore seu conhecimento, construa os seus. 1ª ed. São Paulo: Edgard Blücher, 2005, p. 135.
1919
O problema do MRNO problema do MRN
[...] será necessário representá-lo [em] uma linha na tabela Livros, mais 3 na Nomes-de-autores [...] e mais 5 na de Assuntos, num total de 9 linhas em três tabelas distintas [...]
SETZER, V. Bancos de dados: aprendao que são, melhore seu conhecimento, construa os seus. 1ª ed. São Paulo: Edgard Blücher, 2005, p. 135.
LivrosAssuntos
Nomes de Autores
2020
O problema do MRNO problema do MRN
[...] Mas o que se vê e pega-se na mão no mundo real é um livro só, e não um picadinho de livro!
SETZER, V. Bancos de dados: aprendao que são, melhore seu conhecimento, construa os seus. 1ª ed. São Paulo: Edgard Blücher, 2005, p. 135.
2121
O problema do MRNO problema do MRN[…] Veremos que no MRNN [Modelo Relacional Não-Normalizado] isso pode ser representado em uma só linha, que é o que se esperaria de um modelo de dados decente [...]
SETZER, V. Bancos de dados: aprendao que são, melhore seu conhecimento, construa os seus. 1ª ed. São Paulo: Edgard Blücher, 2005, p. 135.
Livros
=
2222
Consequências da 1FNConsequências da 1FN
• No MRN, para representar subcampos ou campos repetitivos é necessário criar registros em tabelas adicionais
• A explosão de um registro bibliográfico em vários registros espalhados por tabelas complica o fluxo de trabalho distribuído de uma rede de catalogação cooperativa como a LILACS
2323
Modelo SemiestruturadoModelo Semiestruturado“The semistructured data model is designed as an evolution of the relational data model that allows the representation of data with a flexible structure. Some items may have missing attributes, some may have two or more ocurrences of the same attribute…”
SUCIU, Dan. SemiStructured Data Model. In: LIU, L. Encyclopedia of Database Systems
2424
Modelo SemiestruturadoModelo Semiestruturado
• Formalizado por grupos de pesquisa a partir de 1995– UPenn Database Research Group – Projeto Lore, Stanford University
• Motivação: facilitar o intercâmbio de dados• Modelo proposto é mais simples que o
modelo de dados do XML
2525
O livro vermelhoO livro vermelho
• Hellerstein & Stonebraker
• Coletânea de artigos• Livrotexto na UC
Berkeley• Visão histórica e
crítica de modelos de dados
2626
Referência: Data on the WebReferência: Data on the Web
• Abiteboul, Buneman& Suciu
• Teoria de BD semiestruturados
• Os autores têm vários papers seminais
2727
Semistructured Database DesignSemistructured Database Design
• Teoria atualizada (2004)
• Discussão sobre redundância, anomalias de atualização etc.
• Notação gráfica para definir esquemas de dados
2828
Família ISISFamília ISIS
Egbert de SmetIII Congresso Internacional de Usuários de CDS/ISIS, Rio de Janeiro, set. de 2008
Egbert de SmetIII Congresso Internacional de Usuários de CDS/ISIS, Rio de Janeiro, set. de 2008
2929
Documentação sobre ISISDocumentação sobre ISIS
• Utilitários CISIS– Manuais produzidos pela BIREME/OPAS/OMS
• ISISNBP– Wiki e repositório de código público– Desenvolvimentos recentes:
• Conversor de ISIS para JSON• ISISDM: API para definição de esquemas de dados• Schematize: definição automática de esquemas de
dados por inferência a partir de amostras
3030
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
3131
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
3232
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
3333
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
3434
Metodologia LILACSMetodologia LILACS
• Metodologia LILACS: Manualde Descrição Bibliográfica, 7ª ed.
• Diccionario de datos del modelo LILACS Versión 1.6a
3535
A metodologia é o eloA metodologia é o elo
Dicionário de Dados da Metodologia LilacsDicionário de Dados da Metodologia Lilacs
3636
SGBDs nãorelacionaisSGBDs nãorelacionais
• Grande diversidade de arquiteturas para finalidades muito diferentes
• Keyvalue stores são um tipo comum– BerkeleyDB, Redis, Amazon Dynamo
• Document databases implementam nativamente o modelo semiestruturado com índices secundários– CouchDB, MongoDB, Google Datastore
3737
XML e JSONXML e JSON<?xml version="1.0" encoding="UTF8" ?><alunos> Relação dos alunos matriculados: <aluno matricula=”123456”> <nome>Fulano de Tal</nome> <aluno> <aluno matricula=”123457”> <nome>Sicrano de Tal</nome> <aluno></alunos>
<?xml version="1.0" encoding="UTF8" ?><alunos> Relação dos alunos matriculados: <aluno matricula=”123456”> <nome>Fulano de Tal</nome> <aluno> <aluno matricula=”123457”> <nome>Sicrano de Tal</nome> <aluno></alunos> {"alunos" : [
{"matricula" : "123456", "nome” : "Fulano de Tal"}, {"matricula" : "123457", "nome” : "Sicrano de Tal"}]}
{"alunos" : [ {"matricula" : "123456", "nome” : "Fulano de Tal"}, {"matricula" : "123457", "nome” : "Sicrano de Tal"}]}
3838
IntroduçãoIntrodução
Revisão da LiteraturaRevisão da Literatura
MetodologiaMetodologia
ResultadosResultados
ConclusãoConclusão
3939
Seleção do sistema Seleção do sistema de banco de dadosde banco de dados
• para bases de atualização distribuída, o CouchDB oferece replicação e instalação mais simples
• para bases publicadas de forma centralizada e com alto tráfego, MongoDB oferece maior desempenho
• para LILACS, optamos por CouchDB
4040
Formatos ISISJSONFormatos ISISJSON
JSON:JavaScript Object Notation (RFC 4627)
JSON:JavaScript Object Notation (RFC 4627)
ISIS-JSON:esquemasgenéricos parabases ISIS
ISIS-JSON:esquemasgenéricos parabases ISIS
4141
ISIS em JSONISIS em JSON
4242
ISIS em JSONISIS em JSON
4343
ISIS em JSONISIS em JSON
4444
ISISJSON: tiposISISJSON: tipos
4545
Obtenção de LILACS100KObtenção de LILACS100K
• Amostra: os 100.000 registros mais recentes de LILACS em 17/out/2010
4646
Obtenção de LILACS100KObtenção de LILACS100K
4747
Obtenção de LILACS100KObtenção de LILACS100K
4848
Ferramenta de conversãoFerramenta de conversãode registros ISIS para JSONde registros ISIS para JSON
• isis2json.py• leitura:
– arquivos ISO2709 ou binários ISIS (.mst/.xrf)
• escrita:– arquivos JSON genéricos ou adaptados para
CouchDB ou MongoDB– registros ISISJSON tipo 1 ou tipo 4
4949
luciano@meng$ ./isis2json.py husage: isis2json.py [h] [o OUTPUT.json] [c] [m] [f] [q QTY] [s SKIP] [i TAG_NUMBER] [u] [t PREFIX] [n] INPUT.(mst|iso)
Convert an ISIS .mst or .iso file to a JSON array
positional arguments: INPUT.(mst|iso) .mst or .iso file to read
optional arguments: h, help show this help message and exit o OUTPUT.json, out OUTPUT.json the file where the JSON output should be written (default: write to stdout) c, couch output array within a "docs" item in a JSON document for bulk insert to CouchDB via POST to db/_bulk_docs m, mongo output individual records as separate JSON dictionaries, one per line for bulk insert to MongoDB via mongoimport utility f, subfields explode each field into a JSON dictionary, with "_" as default key, and subfield markers as additional keys q QTY, qty QTY maximum quantity of records to read (default=ALL) s SKIP, skip SKIP records to skip from start of .mst (default=0) i TAG_NUMBER, id TAG_NUMBER generate an "_id" from the given unique TAG field number for each record u, uuid generate an "_id" with a random UUID for each record t PREFIX, tagprefix PREFIX concatenate prefix to numeric field tags (ex. 99 becomes "v99" n, mfn generate an "_id" from the MFN of each record (available only for .mst input)
luciano@meng$ ./isis2json.py husage: isis2json.py [h] [o OUTPUT.json] [c] [m] [f] [q QTY] [s SKIP] [i TAG_NUMBER] [u] [t PREFIX] [n] INPUT.(mst|iso)
Convert an ISIS .mst or .iso file to a JSON array
positional arguments: INPUT.(mst|iso) .mst or .iso file to read
optional arguments: h, help show this help message and exit o OUTPUT.json, out OUTPUT.json the file where the JSON output should be written (default: write to stdout) c, couch output array within a "docs" item in a JSON document for bulk insert to CouchDB via POST to db/_bulk_docs m, mongo output individual records as separate JSON dictionaries, one per line for bulk insert to MongoDB via mongoimport utility f, subfields explode each field into a JSON dictionary, with "_" as default key, and subfield markers as additional keys q QTY, qty QTY maximum quantity of records to read (default=ALL) s SKIP, skip SKIP records to skip from start of .mst (default=0) i TAG_NUMBER, id TAG_NUMBER generate an "_id" from the given unique TAG field number for each record u, uuid generate an "_id" with a random UUID for each record t PREFIX, tagprefix PREFIX concatenate prefix to numeric field tags (ex. 99 becomes "v99" n, mfn generate an "_id" from the MFN of each record (available only for .mst input)
isis
2jso
n.p y
5050
Carga para o CouchDBCarga para o CouchDB
• lilimp– registros ISISJSON tipo 1– subcampos concatenados
• lilacs– registros ISISJSON tipo 4– subcampos expandidos em dicionários
5151
LILACS100K no CouchDBLILACS100K no CouchDB
5252
lilimp: subcampos concatenadoslilimp: subcampos concatenados
5353
lilacs: subcampos expandidoslilacs: subcampos expandidos
5454
Teste: tipos de registro LILACSTeste: tipos de registro LILACS
5555
Teste: tipos de registro LILACSTeste: tipos de registro LILACS
5656
Teste: subcampos repetidosTeste: subcampos repetidos
5757
IntroduçãoIntrodução
Revisão da LiteraturaRevisão da Literatura
MetodologiaMetodologia
ResultadosResultados
ConclusãoConclusão
5858
ResultadosResultados
• Levantamento de uma base teórica para estudar o modelo de dados ISIS
• Identificação de SGBDs compatíveis com o modelo de dados ISIS
• Catalogação das variantes de ISISJSON• Ferramentas de conversão e análise
• Identificação de inconsistências na base LILACS
5959
De CDS/ISIS para CouchDBDe CDS/ISIS para CouchDB
6060
De CDS/ISIS para CouchDBDe CDS/ISIS para CouchDB
6161
De CDS/ISIS para CouchDBDe CDS/ISIS para CouchDB
6262
IntroduçãoIntrodução
Revisão da LiteraturaRevisão da Literatura
MetodologiaMetodologia
ResultadosResultados
ConclusãoConclusão
6363
ConclusãoConclusão
• Modelo de dados semiestruturado é a teoria que pode apoiar a análise de bases ISIS e planejar sua evolução
• É simples migrar dados de bases ISIS para um SGBD orientado a documentos
• O CouchDB pode aumentar o alcance e a utilidade dos dados, pela facilidade de criar WebServices (AJAX = HTTP + JSON)
6464
Limitações da pesquisaLimitações da pesquisa
• Tamanho da massa de dados– LILACS100K x 18 milhões em MEDLINE
• Foco em um único SGBD (CouchDB)– repetir com MongoDB e outros
• Bibliografia com ênfase em livros e manuais técnicos– aprofundar estudo em artigos científicos
6565
Indicações para continuarIndicações para continuar
• Notação (API) para especificação de esquemas de dados com validação de acordo com metodologias de catalogação
6666
Indicações para continuarIndicações para continuar
• Notação (API) para especificação de esquemas de dados com validação de acordo com metodologias de catalogação
6767
Indicações para continuar (2)Indicações para continuar (2)
• Atualização automática de registros desnormalizados
6868
Indicações para continuar (2)Indicações para continuar (2)
• Atualização automática de registros desnormalizados
✐
6969
Indicações para continuar (2)Indicações para continuar (2)
• Atualização automática de registros desnormalizados
7070
Indicações para continuar (2)Indicações para continuar (2)
• Atualização automática de registros desnormalizados
• Aplicação da teoria a umproblema prático encontradoem sistemas da BIREME e no Google App Engine
Dados duplicados são ruins somente na medida em que o esforço para mantê-los consistentes é oneroso. MONASH, C. A. http://bit.ly/fHp2p4
Dados duplicados são ruins somente na medida em que o esforço para mantê-los consistentes é oneroso. MONASH, C. A. http://bit.ly/fHp2p4
7171
O Modelo de Dados O Modelo de Dados Semiestruturado emSemiestruturado emBases Bibliográficas:Bases Bibliográficas:
do CDS/ISIS ao do CDS/ISIS ao Apache CouchDBApache CouchDB
Luciano G. S. Ramalho
Monografia de GraduaçãoBacharelado em Biblioteconomia
Orientador: Prof. Dr. Marcos MucheroniUSP – ECA – CBDNovembro de 2010
7272
ExtraExtra
7373
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– CouchDB, MongoDB– Google Datastore– PostgreSQL (hstore, JSON?)
http://reddes.bvsalud.org/projects/isisnbp/wiki/ISIS-DM
7474
Definição de um esquemaDefinição de um esquema
7575
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'])
7676
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
7777
Derivação do esquema a partir Derivação do esquema a partir de uma massa de dadosde uma massa de dados
• schematize.py lê uma base em formato ISISJSON e produz o códigofonte de uma subclasse de isisdm.CheckedModel
• Baseado em regras, é influenciado por erros na massa de dados
• Esquema gerado é ponto de partida para um ajuste de acordo com a metodologia
7878
Exemplo: base CDS (WinISIS)Exemplo: base CDS (WinISIS)
7979
Extra 2Extra 2
8080
• Roy Tennant– California Digital
Library
– Senior Program Officer, Research division, OCLC
• Roy Tennant– California Digital
Library
– Senior Program Officer, Research division, OCLC
http://www.libraryjournal.com/article/CA250046.html
8181
Porque o MARC deve morrerPorque o MARC deve morrer• Modelo de dados, sintaxe e metodologia de
descrição (AACR2) entrelaçados• Concebido para capturar e gerar cartões de
catálogo bibliográficos impressos• Estrutura rígida e plana
– como representar o sumário?
• Isolamento tecnológico– para continuar servindo e inovando,
precisamos acompanhar o estado da arte
Recommended