SlideShare uma empresa Scribd logo
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

 • Apache Cassandra            Todos lançados
                               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
                     bd_opac
  objeto                                  banco de
banco de    livros              autores   dados
  dados
                      editoras

                       livros

 relação                                  tabela

   tupla                                  registro


 atributo                                 campo


                        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. J. Date
                    C. J. Date
                        ××
       Codd, Elmasri, Setzer, Silberschatz...
       Codd, Elmasri, Setzer, 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
                                        Livros
[...] será necessário                                     Assuntos

representá-lo [em] uma linha
na tabela Livros, mais 3 na
Nomes-de-autores [...] e mais
5 na de Assuntos, num total            Nomes de Autores
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
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ão-
Normalizado] 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 de Smet
             Egbert de Smet
           III Congresso Internacional
             III Congresso Internacional
           de Usuários de CDS/ISIS,
             de Usuários de CDS/ISIS,
           Rio de Janeiro,
             Rio de Janeiro,
           set. de 2008
             set. de 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   «Lewis Carroll^y1832-1898^rauthor»
10   «John Tenniel^y1820-1914^rillustrator»
10   «Lewis Carroll^y1914-2010^reditor»
12   «The Annotated Alice^sThe Definitive Edition»




                         30
                         30
Exemplo de registro ISIS


 Campo repetitivo
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»




                         31
                         31
Exemplo de registro ISIS

         Marcador de sub-campo        Sub-campo


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»




                            32
                            32
Exemplo de registro ISIS


 Campo repetitivo
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




                            33
                            33
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 de Dados da Metodologia Lilacs
Dicionário de Dados 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 version="1.0" encoding="UTF­8" ?>
 <?xml version="1.0" encoding="UTF­8" ?>
<alunos>
 <alunos>
    Relação dos alunos matriculados:
     Relação dos alunos matriculados:
    <aluno matricula=”123456”>
     <aluno matricula=”123456”>
        <nome>Fulano de Tal</nome>
         <nome>Fulano de Tal</nome>
    <aluno>
     <aluno>
    <aluno matricula=”123457”>
     <aluno matricula=”123457”>
        <nome>Sicrano de Tal</nome>
         <nome>Sicrano de Tal</nome>
    <aluno>
     <aluno>
</alunos>              {"alunos" : [ 
                        {"alunos" : [ 
 </alunos>
                           {"matricula" : "123456", 
                            {"matricula" : "123456", 
                            "nome” : "Fulano de Tal"},
                             "nome” : "Fulano de Tal"},
                           {"matricula" : "123457", 
                            {"matricula" : "123457", 
                            "nome” : "Sicrano de Tal"}]
                             "nome” : "Sicrano de 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 Notation
              Object Notation
             (RFC 4627)
              (RFC 4627)
             ISIS-JSON:
              ISIS-JSON:
             esquemas
              esquemas
             genéricos para
              genéricos para
             bases ISIS
              bases 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$ ./isis2json.py ­h
               usage: isis2json.py [­h] [­o OUTPUT.json] [­c] [­m] [­f] [­q QTY] [­s SKIP]
                usage: isis2json.py [­h] [­o OUTPUT.json] [­c] [­m] [­f] [­q QTY] [­s SKIP]
                                   [­i TAG_NUMBER] [­u] [­t PREFIX] [­n]
                                    [­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 arguments:
                 ­h, ­­help            show this help message and exit
                  ­h, ­­help            show this help message and exit
                 ­o OUTPUT.json, ­­out OUTPUT.json
                  ­o OUTPUT.json, ­­out OUTPUT.json
                                       the file where the JSON output should be written
                                        the file where the JSON output should be written
                                       (default: write to stdout)
                                        (default: write to stdout)
                 ­c, ­­couch           output array within a "docs" item in a JSON document
                  ­c, ­­couch           output array within a "docs" item in a JSON document
                                       for bulk insert to CouchDB via POST to db/_bulk_docs
                                        for bulk insert to CouchDB via POST to db/_bulk_docs
                 ­m, ­­mongo           output individual records as separate JSON
                  ­m, ­­mongo           output individual records as separate JSON
                                       dictionaries, one per line for bulk insert to MongoDB
                                        dictionaries, one per line for bulk insert to MongoDB
                                       via mongoimport utility
                                        via mongoimport utility
                 ­f, ­­subfields       explode each field into a JSON dictionary, with "_" as
                  ­f, ­­subfields       explode each field into a JSON dictionary, with "_" as
                                       default key, and subfield markers as additional keys
                                        default key, and subfield markers as additional keys
                 ­q QTY, ­­qty QTY     maximum quantity of records to 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)
                  ­s SKIP, ­­skip SKIP  records to skip from start of .mst (default=0)
                 ­i TAG_NUMBER, ­­id TAG_NUMBER
                  ­i TAG_NUMBER, ­­id TAG_NUMBER
                                       generate an "_id" from the given unique TAG field
                                        generate an "_id" from the given unique TAG field
                                       number for each record
                                        number for each record
                 ­u, ­­uuid            generate an "_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 prefix to numeric field tags (ex. 99
                                       becomes "v99"
                                        becomes "v99"
                 ­n, ­­mfn             generate an "_id" from the MFN of each record
                  ­n, ­­mfn             generate an "_id" from the MFN of each record
                                       (available only for .mst 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 duplicados são ruins somente
        Dados duplicados são ruins somente
       na medida em que o esforço para
        na medida em que o esforço para
       mantê-los consistentes é oneroso.
        mantê-los consistentes é oneroso.
       MONASH, C. A. http://bit.ly/fHp2p4
        MONASH, C. A. 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(title='The Annotated Alice^sDefinitive Edition',
 >>> book    Book(title='The Annotated Alice^sDefinitive Edition',
...
 ...             pages=352,
                  pages=352,
...
 ...             creators=['Lewis Carroll^y1832-1898^rAuthor',
                  creators=['Lewis Carroll^y1832-1898^rAuthor',
...
 ...                       'John Tenniel^rIllustrator',
                            'John Tenniel^rIllustrator',
...
 ...                       'Martin Gardner^y1914-2010^rEditor'])
                            'Martin Gardner^y1914-2010^rEditor'])




                                75
                                75
Acesso a campos e sub­campos

  >>> book.title
   >>> book.title
  u'The Annotated Alice^sDefinitive Edition'
   u'The Annotated Alice^sDefinitive Edition'
  >>> print book.title.s
   >>> print book.title.s
  Definitive Edition
   Definitive Edition
  >>> print book.creators[0].y
   >>> print book.creators[0].y
  1832-1898
   1832-1898
  >>> for creator in book.creators:
   >>> for creator in book.creators:
  ...
   ...    print '%-12s: %s' %% (creator.r, creator[0])
           print '%-12s: %s'     (creator.r, creator[0])
  Author
   Author      :: Lewis Carroll
                   Lewis Carroll
  Illustrator :: John Tenniel
   Illustrator     John Tenniel
  Editor
   Editor      :: Martin Gardner
                   Martin 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 Tennant
                          Roy Tennant
                           – California Digital 
                           – California Digital 
                             Library
                             Library
                           – Senior Program 
                           – Senior Program 
                             Officer, Research 
                             Officer, Research 
                             division, OCLC
                             division, 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

Mais conteúdo relacionado

Semelhante a Porque bibliotecários usam bancos de dados esquisitos

Introdução ao Banco de dados - Prof. Daniel Brandão
Introdução ao Banco de dados - Prof. Daniel BrandãoIntrodução ao Banco de dados - Prof. Daniel Brandão
Introdução ao Banco de dados - Prof. Daniel BrandãoDaniel Brandão
 
Banco de dados relacional
Banco de dados relacionalBanco de dados relacional
Banco de dados relacionalkevin erllen
 
RDA como novo código de catalogação
RDA como novo código de catalogaçãoRDA como novo código de catalogação
RDA como novo código de catalogaçãoMarcelo Votto
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptxacsme
 
Livro banco de_dados_volume_03
Livro banco de_dados_volume_03Livro banco de_dados_volume_03
Livro banco de_dados_volume_03CLEAN LOURENÇO
 
Bancos de Dados para Bibliotecários
Bancos de Dados para BibliotecáriosBancos de Dados para Bibliotecários
Bancos de Dados para BibliotecáriosLuciano Ramalho
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dadosvini_campos
 
Algumas das principais características do NoSQL
Algumas das principais características do NoSQLAlgumas das principais características do NoSQL
Algumas das principais características do NoSQLEric Silva
 
Funções e disfunções das bases de dados em levantamentos bibliométricos
Funções e disfunções das bases de dados em levantamentos bibliométricosFunções e disfunções das bases de dados em levantamentos bibliométricos
Funções e disfunções das bases de dados em levantamentos bibliométricosLeticia Strehl
 
Universidade Federal do Amazonas - Banco de dados - Apresentação 1 - Renan M....
Universidade Federal do Amazonas - Banco de dados - Apresentação 1 - Renan M....Universidade Federal do Amazonas - Banco de dados - Apresentação 1 - Renan M....
Universidade Federal do Amazonas - Banco de dados - Apresentação 1 - Renan M....Renan Levy
 
Banco de Dados - Part01
Banco de Dados - Part01Banco de Dados - Part01
Banco de Dados - Part01Rangel Javier
 

Semelhante a Porque bibliotecários usam bancos de dados esquisitos (20)

Introdução ao Banco de dados - Prof. Daniel Brandão
Introdução ao Banco de dados - Prof. Daniel BrandãoIntrodução ao Banco de dados - Prof. Daniel Brandão
Introdução ao Banco de dados - Prof. Daniel Brandão
 
Banco de dados relacional
Banco de dados relacionalBanco de dados relacional
Banco de dados relacional
 
Bancos de dados NoSQL (Not only sql)
Bancos de dados NoSQL (Not only sql)Bancos de dados NoSQL (Not only sql)
Bancos de dados NoSQL (Not only sql)
 
NoSQL & SQL
NoSQL & SQLNoSQL & SQL
NoSQL & SQL
 
Introdução ao banco de dados
Introdução ao banco de dadosIntrodução ao banco de dados
Introdução ao banco de dados
 
Oficina 5 confoa 2013 - Boas práticas para a construção de repositórios ins...
Oficina 5   confoa 2013 - Boas práticas para a construção de repositórios ins...Oficina 5   confoa 2013 - Boas práticas para a construção de repositórios ins...
Oficina 5 confoa 2013 - Boas práticas para a construção de repositórios ins...
 
RDA como novo código de catalogação
RDA como novo código de catalogaçãoRDA como novo código de catalogação
RDA como novo código de catalogação
 
O NoSQL e o Relacional: Uma Análise
O NoSQL e o Relacional: Uma AnáliseO NoSQL e o Relacional: Uma Análise
O NoSQL e o Relacional: Uma Análise
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptx
 
Livro banco de_dados_volume_03
Livro banco de_dados_volume_03Livro banco de_dados_volume_03
Livro banco de_dados_volume_03
 
Bancos de Dados para Bibliotecários
Bancos de Dados para BibliotecáriosBancos de Dados para Bibliotecários
Bancos de Dados para Bibliotecários
 
BANCO DE DADOS.pptx
BANCO DE DADOS.pptxBANCO DE DADOS.pptx
BANCO DE DADOS.pptx
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 
Algumas das principais características do NoSQL
Algumas das principais características do NoSQLAlgumas das principais características do NoSQL
Algumas das principais características do NoSQL
 
Funções e disfunções das bases de dados em levantamentos bibliométricos
Funções e disfunções das bases de dados em levantamentos bibliométricosFunções e disfunções das bases de dados em levantamentos bibliométricos
Funções e disfunções das bases de dados em levantamentos bibliométricos
 
Universidade Federal do Amazonas - Banco de dados - Apresentação 1 - Renan M....
Universidade Federal do Amazonas - Banco de dados - Apresentação 1 - Renan M....Universidade Federal do Amazonas - Banco de dados - Apresentação 1 - Renan M....
Universidade Federal do Amazonas - Banco de dados - Apresentação 1 - Renan M....
 
CDD
CDDCDD
CDD
 
Resource Description and Access (RDA)
Resource Description and Access (RDA)Resource Description and Access (RDA)
Resource Description and Access (RDA)
 
Banco de Dados - Part01
Banco de Dados - Part01Banco de Dados - Part01
Banco de Dados - Part01
 
Introdução ao NoSQL
Introdução ao NoSQLIntrodução ao NoSQL
Introdução ao NoSQL
 

Mais de Luciano Ramalho

Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem PythonLuciano Ramalho
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Luciano Ramalho
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Luciano Ramalho
 
Encapsulamento com descritores
Encapsulamento com descritoresEncapsulamento com descritores
Encapsulamento com descritoresLuciano Ramalho
 
Arduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoArduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoLuciano Ramalho
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compactoLuciano Ramalho
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em PythonLuciano Ramalho
 
Encapsulamento com Descritores em Python
Encapsulamento com Descritores em PythonEncapsulamento com Descritores em Python
Encapsulamento com Descritores em PythonLuciano Ramalho
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etcLuciano Ramalho
 
Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Luciano Ramalho
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Luciano Ramalho
 
OO em Python sem sotaque
OO em Python sem sotaqueOO em Python sem sotaque
OO em Python sem sotaqueLuciano Ramalho
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do GoogleLuciano Ramalho
 

Mais de Luciano Ramalho (20)

Mongodb: agregação
Mongodb: agregaçãoMongodb: agregação
Mongodb: agregação
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
 
Encapsulamento com descritores
Encapsulamento com descritoresEncapsulamento com descritores
Encapsulamento com descritores
 
Iteraveis e geradores
Iteraveis e geradoresIteraveis e geradores
Iteraveis e geradores
 
Arduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoArduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojo
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em Python
 
Encapsulamento com Descritores em Python
Encapsulamento com Descritores em PythonEncapsulamento com Descritores em Python
Encapsulamento com Descritores em Python
 
Dojo com Processing
Dojo com ProcessingDojo com Processing
Dojo com Processing
 
Dojo com Arduino
Dojo com ArduinoDojo com Arduino
Dojo com Arduino
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
 
Open Library no Mongodb
Open Library no MongodbOpen Library no Mongodb
Open Library no Mongodb
 
Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
OO em Python sem sotaque
OO em Python sem sotaqueOO em Python sem sotaque
OO em Python sem sotaque
 
Modelos ricos
Modelos ricosModelos ricos
Modelos ricos
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
 
Ensinando OO com Python
Ensinando OO com PythonEnsinando OO com Python
Ensinando OO com Python
 

Porque bibliotecários usam bancos de dados esquisitos

  • 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
  • 4. 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
  • 5. Introdução Revisão da Literatura Metodologia Resultados Conclusão 5 5
  • 6. 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 7
  • 8. 8 8
  • 9. 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
  • 10. 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
  • 11. Alguns produtos NoSQL recentes • Apache Cassandra Todos lançados após o ano 2000 • Apache CouchDB • MongoDB • Hadoop Hbase • Hypertable • Google Datastore • Redis • Amazon SimpleDB • Riak • Apstrata • ThruDB 11 11
  • 12. 12 12
  • 13. 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
  • 14. Introdução Revisão da Literatura Metodologia Resultados Conclusão 14 14
  • 16. Modelo Relacional Normalizado bd_opac objeto banco de banco de livros autores dados dados editoras livros relação tabela tupla registro atributo campo 16 16
  • 17. 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. J. Date C. J. Date ×× Codd, Elmasri, Setzer, Silberschatz... Codd, Elmasri, Setzer, Silberschatz... 17 17
  • 18. 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
  • 19. O problema do MRN Livros [...] será necessário Assuntos representá-lo [em] uma linha na tabela Livros, mais 3 na Nomes-de-autores [...] e mais 5 na de Assuntos, num total Nomes de Autores 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
  • 20. 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
  • 21. O 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 [...] 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
  • 22. 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
  • 24. 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
  • 25. 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
  • 26. Referência: Data on the Web • Abiteboul, Buneman & Suciu • Teoria de BD  semiestruturados • Os autores têm vários  papers seminais 26 26
  • 27. 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
  • 28. Família ISIS Egbert de Smet Egbert de Smet III Congresso Internacional III Congresso Internacional de Usuários de CDS/ISIS, de Usuários de CDS/ISIS, Rio de Janeiro, Rio de Janeiro, set. de 2008 set. de 2008 28 28
  • 29. 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
  • 30. Exemplo 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» 30 30
  • 31. Exemplo de registro ISIS Campo repetitivo 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» 31 31
  • 32. Exemplo de registro ISIS Marcador de sub-campo Sub-campo 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» 32 32
  • 33. Exemplo de registro ISIS Campo repetitivo 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 33 33
  • 34. Metodologia LILACS • Metodologia  LILACS: Manual de Descrição  Bibliográfica, 7ª ed.  • Diccionario de  datos del modelo  LILACS Versión  1.6a 34 34
  • 35. A metodologia é o elo Dicionário de Dados da Metodologia Lilacs Dicionário de Dados da Metodologia Lilacs 35 35
  • 36. 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
  • 37. XML e JSON <?xml version="1.0" encoding="UTF­8" ?> <?xml version="1.0" encoding="UTF­8" ?> <alunos> <alunos>     Relação dos alunos matriculados:     Relação dos alunos matriculados:     <aluno matricula=”123456”>     <aluno matricula=”123456”>         <nome>Fulano de Tal</nome>         <nome>Fulano de Tal</nome>     <aluno>     <aluno>     <aluno matricula=”123457”>     <aluno matricula=”123457”>         <nome>Sicrano de Tal</nome>         <nome>Sicrano de Tal</nome>     <aluno>     <aluno> </alunos> {"alunos" : [  {"alunos" : [  </alunos>     {"matricula" : "123456",      {"matricula" : "123456",       "nome” : "Fulano de Tal"},      "nome” : "Fulano de Tal"},     {"matricula" : "123457",      {"matricula" : "123457",       "nome” : "Sicrano de Tal"}]      "nome” : "Sicrano de Tal"}] }} 37 37
  • 38. Introdução Revisão da Literatura Metodologia Resultados Conclusão 38 38
  • 39. 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
  • 40. Formatos ISIS­JSON JSON: JSON: JavaScript JavaScript Object Notation Object Notation (RFC 4627) (RFC 4627) ISIS-JSON: ISIS-JSON: esquemas esquemas genéricos para genéricos para bases ISIS bases ISIS 40 40
  • 41. ISIS em JSON 41 41
  • 42. ISIS em JSON 42 42
  • 43. ISIS em JSON 43 43
  • 45. Obtenção de LILACS100K • Amostra: os 100.000 registros mais  recentes de LILACS em 17/out/2010 45 45
  • 48. 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
  • 49. isis2json.py luciano@meng$ ./isis2json.py ­h luciano@meng$ ./isis2json.py ­h usage: isis2json.py [­h] [­o OUTPUT.json] [­c] [­m] [­f] [­q QTY] [­s SKIP] usage: isis2json.py [­h] [­o OUTPUT.json] [­c] [­m] [­f] [­q QTY] [­s SKIP]                     [­i TAG_NUMBER] [­u] [­t PREFIX] [­n]                     [­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 arguments:   ­h, ­­help            show this help message and exit   ­h, ­­help            show this help message and exit   ­o OUTPUT.json, ­­out OUTPUT.json   ­o OUTPUT.json, ­­out OUTPUT.json                         the file where the JSON output should be written                         the file where the JSON output should be written                         (default: write to stdout)                         (default: write to stdout)   ­c, ­­couch           output array within a "docs" item in a JSON document   ­c, ­­couch           output array within a "docs" item in a JSON document                         for bulk insert to CouchDB via POST to db/_bulk_docs                         for bulk insert to CouchDB via POST to db/_bulk_docs   ­m, ­­mongo           output individual records as separate JSON   ­m, ­­mongo           output individual records as separate JSON                         dictionaries, one per line for bulk insert to MongoDB                         dictionaries, one per line for bulk insert to MongoDB                         via mongoimport utility                         via mongoimport utility   ­f, ­­subfields       explode each field into a JSON dictionary, with "_" as   ­f, ­­subfields       explode each field into a JSON dictionary, with "_" as                         default key, and subfield markers as additional keys                         default key, and subfield markers as additional keys   ­q QTY, ­­qty QTY     maximum quantity of records to 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)   ­s SKIP, ­­skip SKIP  records to skip from start of .mst (default=0)   ­i TAG_NUMBER, ­­id TAG_NUMBER   ­i TAG_NUMBER, ­­id TAG_NUMBER                         generate an "_id" from the given unique TAG field                         generate an "_id" from the given unique TAG field                         number for each record                         number for each record   ­u, ­­uuid            generate an "_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 prefix to numeric field tags (ex. 99                         becomes "v99"                         becomes "v99"   ­n, ­­mfn             generate an "_id" from the MFN of each record   ­n, ­­mfn             generate an "_id" from the MFN of each record                         (available only for .mst input) 49                         (available only for .mst input) 49
  • 50. 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
  • 57. Introdução Revisão da Literatura Metodologia Resultados Conclusão 57 57
  • 58. 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
  • 62. Introdução Revisão da Literatura Metodologia Resultados Conclusão 62 62
  • 63. 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
  • 64. 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
  • 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 65 65
  • 66. 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
  • 70. 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 duplicados são ruins somente Dados duplicados são ruins somente na medida em que o esforço para na medida em que o esforço para mantê-los consistentes é oneroso. mantê-los consistentes é oneroso. MONASH, C. A. http://bit.ly/fHp2p4 MONASH, C. A. http://bit.ly/fHp2p4 70 70
  • 71. 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
  • 72. Extra 72 72
  • 73. 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
  • 75. Instanciação >>> book == Book(title='The Annotated Alice^sDefinitive Edition', >>> book Book(title='The Annotated Alice^sDefinitive Edition', ... ... pages=352, pages=352, ... ... creators=['Lewis Carroll^y1832-1898^rAuthor', creators=['Lewis Carroll^y1832-1898^rAuthor', ... ... 'John Tenniel^rIllustrator', 'John Tenniel^rIllustrator', ... ... 'Martin Gardner^y1914-2010^rEditor']) 'Martin Gardner^y1914-2010^rEditor']) 75 75
  • 76. Acesso a campos e sub­campos >>> book.title >>> book.title u'The Annotated Alice^sDefinitive Edition' u'The Annotated Alice^sDefinitive Edition' >>> print book.title.s >>> print book.title.s Definitive Edition Definitive Edition >>> print book.creators[0].y >>> print book.creators[0].y 1832-1898 1832-1898 >>> for creator in book.creators: >>> for creator in book.creators: ... ... print '%-12s: %s' %% (creator.r, creator[0]) print '%-12s: %s' (creator.r, creator[0]) Author Author :: Lewis Carroll Lewis Carroll Illustrator :: John Tenniel Illustrator John Tenniel Editor Editor :: Martin Gardner Martin Gardner 76 76
  • 77. 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
  • 79. Extra 2 79 79
  • 80. http://www.libraryjournal.com/article/CA250046.html •• Roy Tennant Roy Tennant – California Digital  – California Digital  Library Library – Senior Program  – Senior Program  Officer, Research  Officer, Research  division, OCLC division, OCLC 80 80
  • 81. 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