Transcript Slide 1

Luciano G. S. Ramalho
O Modelo de Dados
Semiestruturado em
Bases Bibliográficas:
do CDS/ISIS ao
Apache CouchDB
Monografia de Graduação
Bacharelado em Biblioteconomia
Orientador: Prof. Dr. Marcos Mucheroni
USP – ECA – CBD
Novembro de 2010
1
1
Por que os bibliotecários
usam bancos de dados
diferentes de todo mundo...
2
2
Por que os bibliotecários
usam bancos de dados
diferentes de todo mundo...
e por que eles estão certos
3
3
Para Marta,
por tudo.
Agradecimentos:
Colegas da BIREME/OPAS/OMS
Marcos Mucheroni
Imre Simon
Maria Lucia e Jairo
membros da banca
e colegas presentes
4
4
Introdução
Revisão da Literatura
Metodologia
Resultados
Conclusão
5
5
Cená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)
6
6
7
7
8
8
Exemplo de uso: ISIS na
catalogaçã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
9
9
Contexto 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
10
10
Alguns produtos NoSQL recentes
•
•
•
•
•
•
•
•
Todos lançados
Apache Cassandra
após o ano 2000
Apache CouchDB
MongoDB
Hadoop Hbase
Hypertable
• Google Datastore
Redis
• Amazon SimpleDB
Riak
• Apstrata
ThruDB
11
11
12
12
Descrição do problema
de pesquisa
A família de sistemas ISIS mostrou-se 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 modelos
de 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?
13
13
Introdução
Revisão da Literatura
Metodologia
Resultados
Conclusão
14
14
Resumo da terminologia adotada
15
15
Modelo Relacional Normalizado
objeto
banco de
dados
bd_opac
livros
autores
banco de
dados
editoras
livros
tabela
relação
registro
tupla
campo
atributo
16
16
Modelo Relacional Normalizado
• 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.
C.J.J.Date
Date
××
Codd,
Codd,Elmasri,
Elmasri,Setzer,
Setzer,Silberschatz...
Silberschatz...
17
17
O 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: aprenda
o que são, melhore seu conhecimento,
construa os seus. 1ª ed. São Paulo:
Edgard Blücher, 2005, p. 135.
18
18
O 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: aprenda
o que são, melhore seu conhecimento,
construa os seus. 1ª ed. São Paulo:
Edgard Blücher, 2005, p. 135.
19
19
Livros
Assuntos
Nomes de Autores
O 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: aprenda
o que são, melhore seu conhecimento,
construa os seus. 1ª ed. São Paulo:
Edgard Blücher, 2005, p. 135.
20
20
O problema do MRN
[…] Veremos que no MRNN
[Modelo Relacional NãoNormalizado] isso pode ser
representado em uma só linha,
que é o que se esperaria de um
modelo de dados decente [...]
Livros
=
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, p. 135.
21
21
Consequê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
22
22
Modelo Semiestruturado
“The semi-structured 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. Semi-Structured Data Model.
In: LIU, L. Encyclopedia of Database Systems
23
23
Modelo 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
24
24
O livro vermelho
• Hellerstein &
Stonebraker
• Coletânea de artigos
• Livro-texto na UC
Berkeley
• Visão histórica e
crítica de modelos
de dados
25
25
Referência: Data on the Web
• Abiteboul, Buneman
& Suciu
• Teoria de BD
semiestruturados
• Os autores têm vários
papers seminais
26
26
Semistructured Database Design
• Teoria atualizada
(2004)
• Discussão sobre
redundância,
anomalias de
atualização etc.
• Notação gráfica para
definir esquemas de
dados
27
27
Família ISIS
Egbert
Egbertde
deSmet
Smet
IIIIIICongresso
CongressoInternacional
Internacional
de
deUsuários
Usuáriosde
deCDS/ISIS,
CDS/ISIS,
Rio
de
Janeiro,
Rio de Janeiro,
set.
set.de
de2008
2008
28
28
Documentação sobre ISIS
• Utilitários CISIS
– Manuais produzidos pela BIREME/OPAS/OMS
• ISIS-NBP
– Wiki e repositório de código público
– Desenvolvimentos recentes:
• Conversor de ISIS para JSON
• ISIS-DM: API para definição de esquemas de dados
• Schematize: definição automática de esquemas de
dados por inferência a partir de amostras
29
29
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»
30
30
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»
31
31
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»
32
32
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
33
33
Sub-campo
Metodologia LILACS
• Metodologia
LILACS: Manual
de Descrição
Bibliográfica, 7ª ed.
• Diccionario de
datos del modelo
LILACS Versión
1.6a
34
34
A metodologia é o elo
Dicionário
Metodologia
Lilacs
Dicionáriode
deDados
Dadosda
da
Metodologia
Lilacs
35
35
SGBDs não-relacionais
• Grande diversidade de arquiteturas para
finalidades muito diferentes
• Key-value 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
36
36
XML e JSON
<?xml
<?xmlversion="1.0"
version="1.0"encoding="UTF-8"
encoding="UTF-8"?>
?>
<alunos>
<alunos>
Relação
Relaçãodos
dosalunos
alunosmatriculados:
matriculados:
<aluno
<alunomatricula=”123456”>
matricula=”123456”>
<nome>Fulano
<nome>Fulanode
deTal</nome>
Tal</nome>
<aluno>
<aluno>
<aluno
<alunomatricula=”123457”>
matricula=”123457”>
<nome>Sicrano
<nome>Sicranode
deTal</nome>
Tal</nome>
<aluno>
<aluno>
{"alunos"
</alunos>
{"alunos": :[ [
</alunos>
{"matricula"
{"matricula": :"123456",
"123456",
"nome”
"nome”: :"Fulano
"Fulanode
deTal"},
Tal"},
{"matricula"
{"matricula": :"123457",
"123457",
"nome”
"nome”: :"Sicrano
"Sicranode
deTal"}]
Tal"}]
}}
37
37
Introdução
Revisão da Literatura
Metodologia
Resultados
Conclusão
38
38
Seleção do sistema
de 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
39
39
Formatos ISIS-JSON
JSON:
JSON:
JavaScript
JavaScript
Object
ObjectNotation
Notation
(RFC
(RFC4627)
4627)
ISIS-JSON:
ISIS-JSON:
esquemas
esquemas
genéricos
genéricospara
para
bases
basesISIS
ISIS
40
40
ISIS em JSON
41
41
ISIS em JSON
42
42
ISIS em JSON
43
43
ISIS-JSON: tipos
44
44
Obtenção de LILACS100K
• Amostra: os 100.000 registros mais
recentes de LILACS em 17/out/2010
45
45
Obtenção de LILACS100K
46
46
Obtenção de LILACS100K
47
47
Ferramenta de conversão
de registros ISIS para JSON
• isis2json.py
• leitura:
– arquivos ISO-2709 ou binários ISIS (.mst/.xrf)
• escrita:
– arquivos JSON genéricos ou adaptados para
CouchDB ou MongoDB
– registros ISIS-JSON tipo 1 ou tipo 4
48
48
isis2json.py
luciano@meng$ ./isis2json.py -h
luciano@meng$
-h
usage:
isis2json.py./isis2json.py
[-h] [-o OUTPUT.json]
[-c] [-m] [-f] [-q QTY] [-s SKIP]
usage: isis2json.py
[-h] [-o OUTPUT.json]
[-c] [-m]
[-i TAG_NUMBER]
[-u] [-t PREFIX]
[-n] [-f] [-q QTY] [-s SKIP]
[-i TAG_NUMBER] [-u] [-t PREFIX] [-n]
INPUT.(mst|iso)
INPUT.(mst|iso)
Convert an ISIS .mst or .iso file to a JSON array
Convert an ISIS .mst or .iso file to a JSON array
positional arguments:
positional arguments:
INPUT.(mst|iso)
.mst or .iso file to read
INPUT.(mst|iso)
.mst or .iso file to read
optional arguments:
optional
-h,
--helparguments:
show this help message and exit
--help
showOUTPUT.json
this help message and exit
-o-h,
OUTPUT.json,
--out
-o OUTPUT.json,
OUTPUT.json
the file--out
where
the JSON output should be written
the
file
where
JSON output should be written
(default: write tothe
stdout)
(default:
stdout)
-c, --couch
output write
arrayto
within
a "docs" item in a JSON document
-c, --couch for bulk
output
array
within
a "docs"
itemtoindb/_bulk_docs
a JSON document
insert to CouchDB
via POST
insert
to CouchDB
viaasPOST
to db/_bulk_docs
-m, --mongo for bulk
output
individual
records
separate
JSON
-m, --mongodictionaries,
outputone
individual
records
as
separate
JSON
per line for bulk insert to MongoDB
dictionaries,
one
per
line
for
bulk
insert
to
MongoDB
via mongoimport utility
mongoimport
utility
-f, --subfields viaexplode
each field
into a JSON dictionary, with "_" as
-f, --subfieldsdefault
explode
each
field
a JSON
dictionary,keys
with "_" as
key, and subfieldinto
markers
as additional
defaultmaximum
key, and quantity
subfield of
markers
astoadditional
keys
-q QTY, --qty QTY
records
read (default=ALL)
-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)
SKIP, --skip SKIP
records to skip from start of .mst (default=0)
-i -s
TAG_NUMBER,
--id TAG_NUMBER
-i TAG_NUMBER,
--idan
TAG_NUMBER
generate
"_id" from the given unique TAG field
generate
an
"_id"
from the given unique TAG field
number for each
record
number
foran
each
record
-u, --uuid
generate
"_id"
with a random UUID for each record
-u,
--uuid
generate
an
"_id"
with a random UUID for each record
-t PREFIX, --tagprefix PREFIX
-t PREFIX, --tagprefix
PREFIX
concatenate
prefix to numeric field tags (ex. 99
concatenate
becomes "v99"prefix to numeric field tags (ex. 99
becomes
-n, --mfn
generate"v99"
an "_id" from the MFN of each record
-n, --mfn
generate
the MFN of each record
(available
onlyan
for"_id"
.mstfrom
input)
49
(available only for .mst input)
49
Carga para o CouchDB
• lilimp
– registros ISIS-JSON tipo 1
– subcampos concatenados
• lilacs
– registros ISIS-JSON tipo 4
– subcampos expandidos em dicionários
50
50
LILACS100K no CouchDB
51
51
lilimp: subcampos concatenados
52
52
lilacs: subcampos expandidos
53
53
Teste: tipos de registro LILACS
54
54
Teste: tipos de registro LILACS
55
55
Teste: subcampos repetidos
56
56
Introdução
Revisão da Literatura
Metodologia
Resultados
Conclusão
57
57
Resultados
• 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 ISIS-JSON
• Ferramentas de conversão e análise
• Identificação de inconsistências na base
LILACS
58
58
De CDS/ISIS para CouchDB
59
59
De CDS/ISIS para CouchDB
60
60
De CDS/ISIS para CouchDB
61
61
Introdução
Revisão da Literatura
Metodologia
Resultados
Conclusão
62
62
Conclusã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)
63
63
Limitaçõ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
64
64
Indicações para continuar
• Notação (API) para especificação de
esquemas de dados com validação de
acordo com metodologias de catalogação
65
65
Indicações para continuar
• Notação (API) para especificação de
esquemas de dados com validação de
acordo com metodologias de catalogação
66
66
Indicações para continuar (2)
• Atualização automática de
registros desnormalizados
67
67
Indicações para continuar (2)
• Atualização automática de
registros desnormalizados
✐
68
68
Indicações para continuar (2)
• Atualização automática de
registros desnormalizados
69
69
Indicações para continuar (2)
• Atualização automática de
registros desnormalizados
• Aplicação da teoria a um
problema prático encontrado
em sistemas da BIREME
e no Google App Engine
Dados
Dadosduplicados
duplicadossão
sãoruins
ruinssomente
somente
na
namedida
medidaem
emque
queooesforço
esforçopara
para
mantê-los
mantê-losconsistentes
consistentesééoneroso.
oneroso.
MONASH,
MONASH,C.
C.A.A.http://bit.ly/fHp2p4
http://bit.ly/fHp2p4
70
70
Luciano G. S. Ramalho
O Modelo de Dados
Semiestruturado em
Bases Bibliográficas:
do CDS/ISIS ao
Apache CouchDB
Monografia de Graduação
Bacharelado em Biblioteconomia
Orientador: Prof. Dr. Marcos Mucheroni
USP – ECA – CBD
Novembro de 2010
71
71
Extra
72
72
Projeto ISIS-DM: ISIS Data Model
http://reddes.bvsalud.org/projects/isisnbp/wiki/ISIS-DM
• 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
– CouchDB, MongoDB
– Google Datastore
– PostgreSQL (hstore, JSON?)
73
73
Definição de um esquema
74
74
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'])
75
75
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
76
76
Derivação do esquema a partir
de uma massa de dados
• schematize.py lê uma base em formato
ISIS-JSON e produz o código-fonte 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
77
77
Exemplo: base CDS (WinISIS)
78
78
Extra 2
79
79
http://www.libraryjournal.com/article/CA250046.html
•• Roy
Roy Tennant
Tennant
–– California
California Digital
Digital
Library
Library
–– Senior
Senior Program
Program
Officer,
Officer, Research
Research
division,
division, OCLC
OCLC
80
80
Porque 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
81
81