A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 1 O Modelo de Dados Semiestruturado em Bases Bibliográficas: do CDS/ISIS ao Apache CouchDB Luciano G. S. Ramalho Monografia de Graduação Bacharelado.

Apresentações semelhantes


Apresentação em tema: "1 1 O Modelo de Dados Semiestruturado em Bases Bibliográficas: do CDS/ISIS ao Apache CouchDB Luciano G. S. Ramalho Monografia de Graduação Bacharelado."— Transcrição da apresentação:

1 1 1 O Modelo de Dados Semiestruturado em Bases Bibliográficas: do CDS/ISIS ao Apache CouchDB Luciano G. S. Ramalho Monografia de Graduação Bacharelado em Biblioteconomia Orientador: Prof. Dr. Marcos Mucheroni USP – ECA – CBD Novembro de 2010

2 2 2 Por que os bibliotecários usam bancos de dados diferentes de todo mundo...

3 3 3 Por que os bibliotecários usam bancos de dados diferentes de todo mundo... e por que eles estão certos

4 4 4 Agradecimentos: Colegas da BIREME/OPAS/OMS Marcos Mucheroni Imre Simon Maria Lucia e Jairo membros da banca e colegas presentes Para Marta, por tudo.

5 5 5 Introdução Revisão da Literatura Metodologia Resultados Conclusão

6 6 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)

7 7 7

8 8 8

9 9 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

10 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

11 11 Alguns produtos NoSQL recentes Apache Cassandra Apache CouchDB MongoDB Hadoop Hbase Hypertable Redis Riak ThruDB Google Datastore Amazon SimpleDB Apstrata Todos lançados após o ano 2000

12 12

13 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?

14 14 Introdução Revisão da Literatura Metodologia Resultados Conclusão

15 15 Resumo da terminologia adotada

16 16 Modelo Relacional Normalizado editoras autores livros bd_opa c livros objeto banco de dados relaçã o tupl a atribut o banco de dados tabel a registr o camp o

17 17 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 Normalizado

18 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.

19 19 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. Livros Assuntos Nomes de Autores

20 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.

21 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 [...] 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. Livros =

22 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

23 23 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

24 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

25 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

26 26 Referência: Data on the Web Abiteboul, Buneman & Suciu Teoria de BD semiestruturados Os autores têm vários papers seminais

27 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

28 28 Família ISIS Egbert de Smet III Congresso Internacional de Usuários de CDS/ISIS, Rio de Janeiro, set. de 2008 Egbert de Smet III Congresso Internacional de Usuários de CDS/ISIS, Rio de Janeiro, set. de 2008

29 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

30 30 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 ISIS

31 31 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 ISIS

32 32 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» Marcador de sub- campo Sub- campo

33 33 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» Campo repetitivo Marcador de sub- campo Sub- campo

34 34 Metodologia LILACS Metodologia LILACS: Manual de Descrição Bibliográfica, 7ª ed. Diccionario de datos del modelo LILACS Versión 1.6a

35 35 A metodologia é o elo Dicionário de Dados da Metodologia Lilacs

36 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

37 37 XML e JSON Relação dos alunos matriculados: Fulano de Tal Sicrano de Tal Relação dos alunos matriculados: Fulano de Tal Sicrano de Tal {"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"}] }

38 38 Introdução Revisão da Literatura Metodologia Resultados Conclusão

39 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

40 40 Formatos ISIS-JSON JSON: JavaScript Object Notation (RFC 4627) JSON: JavaScript Object Notation (RFC 4627) ISIS-JSON: esquemas genéricos para bases ISIS ISIS-JSON: esquemas genéricos para bases ISIS

41 41 ISIS em JSON

42 42 ISIS em JSON

43 43 ISIS em JSON

44 44 ISIS-JSON: tipos

45 45 Obtenção de LILACS100K Amostra: os 100.000 registros mais recentes de LILACS em 17/out/2010

46 46 Obtenção de LILACS100K

47 47 Obtenção de LILACS100K

48 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

49 49 luciano@meng$./isis2json.py -h usage: 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 -h usage: 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) isis2json.py

50 50 Carga para o CouchDB lilimp –registros ISIS-JSON tipo 1 –subcampos concatenados lilacs –registros ISIS-JSON tipo 4 –subcampos expandidos em dicionários

51 51 LILACS100K no CouchDB

52 52 lilimp: subcampos concatenados

53 53 lilacs: subcampos expandidos

54 54 Teste: tipos de registro LILACS

55 55 Teste: tipos de registro LILACS

56 56 Teste: subcampos repetidos

57 57 Introdução Revisão da Literatura Metodologia Resultados Conclusão

58 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

59 59 De CDS/ISIS para CouchDB

60 60 De CDS/ISIS para CouchDB

61 61 De CDS/ISIS para CouchDB

62 62 Introdução Revisão da Literatura Metodologia Resultados Conclusão

63 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)

64 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

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 Notação (API) para especificação de esquemas de dados com validação de acordo com metodologias de catalogação

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

70 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 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

71 71 O Modelo de Dados Semiestruturado em Bases Bibliográficas: do CDS/ISIS ao Apache CouchDB Luciano G. S. Ramalho Monografia de Graduação Bacharelado em Biblioteconomia Orientador: Prof. Dr. Marcos Mucheroni USP – ECA – CBD Novembro de 2010

72 72 Extra

73 73 Projeto ISIS-DM: ISIS Data Model API para definição de esquemas de dados através de classes, como em certos ORMs API de extração de dados tão ou mais poderosa quanto a ISIS Format. Language Back-ends para BDs NF² modernos –CouchDB, MongoDB –Google Datastore –PostgreSQL (hstore, JSON?) http://reddes.bvsalud.org/projects/isisnbp/wiki/ISIS- DM

74 74 Definição de um esquema

75 75 Instanciaçã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'])

76 76 Acesso a campos e sub-campos >>> book.title u'The Annotated Alice^sDefinitive Edition' >>> print book.title.s Definitive Edition >>> print book.creators[0].y 1832-1898 >>> for creator in book.creators:... print '%-12s: %s' % (creator.r, creator[0]) Author : Lewis Carroll Illustrator : John Tenniel Editor : Martin Gardner >>> book.title u'The Annotated Alice^sDefinitive Edition' >>> print book.title.s Definitive Edition >>> print book.creators[0].y 1832-1898 >>> for creator in book.creators:... print '%-12s: %s' % (creator.r, creator[0]) Author : Lewis Carroll Illustrator : John Tenniel Editor : Martin Gardner

77 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

78 78 Exemplo: base CDS (WinISIS)

79 79 Extra 2

80 80 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

81 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


Carregar ppt "1 1 O Modelo de Dados Semiestruturado em Bases Bibliográficas: do CDS/ISIS ao Apache CouchDB Luciano G. S. Ramalho Monografia de Graduação Bacharelado."

Apresentações semelhantes


Anúncios Google