II. Relatório Técnico

1. Objetivo

Definição de um modelo XML para a base de dados que está sendo criada para a Biblioteca IME. Este modelo deverá ser usado para fazer a carga da nova base de dados, a partir da importação de dados de bases já existentes.

2. Contexto

2.1. Modularidade do Sistema de Informatização

Este trabalho é um sub-projeto que integra o Projeto de Informatização da Biblioteca do IME. O sistema está dividido em módulos, minimizando a dependência entre os grupos de desenvolvimento do projeto.

Estrutura de DadosControle de Fluxo
[INFO-FLOW]
FIG 2.1.a) Modularidade do Sistema de Informatização

A definição do modelo XML encaixa-se no Módulo Acervo.

2.2. Bases de Dados

Os dados do Acervo da Biblioteca encontram-se, no momento, em duas bases de dados:
  • IDBIME (sistema próprio da Biblioteca do IME
  • Dedalus (Banco de Dados Bibliográficos da USP)

    Urge sistematizar o processo de importação de dados das bases existentes para a nova base que está sendo criada.

    ?
    FIG 2.2.a) Importação de Dados
  • 3. XML: eXtensible Markup Language
    3.1 Introdução

    XML é uma linguagem de marcação, assim como HTML. Basicamente, o que diferencia estas duas linguagens é que a primeira foi criada para descrever dados, enquanto que a segunda foi criada para exibir dados.

    XML permite que o desenvolvedor crie seus próprios marcadores (estruturas rotuladas tag), daí sua flexibilidade.

    Há apenas uma primeira linha [ver fig. exemplo 1] que é obrigatória para que o documento seja validado: uma declaração XML que define a versão XML do documento em questão.

    FIG. 3.1.a) Exemplo 1
    3.2 Estrutura Básica dos Marcadores
    3.2.1 Elementos
    Cada marcador define um elemento, que pode possuir elementos-filhos. É uma estrutura em árvore: uma raiz com nós-filho.
    FIG 3.2.1.a) Exemplo 2
    3.2.2 Atributos
    Elementos podem ter atributos associados a eles: uma informação adicional que não descreva uma estrutura.
    Não há uma regra que explicite quando um dado é um elemento ou um atributo, mas há desvantagens no uso desse último. No exemplo abaixo [FIG 3.2.2.a)], título não deveria ser definido como atributo do elemento livro. Note que título é uma estrutura que pode conter subtítulos. Atributos não são expansíveis e nem multi-valorados, e seu uso não é recomendado em vários casos.
    Ainda no exemplo abaixo, o número do capítulo é apenas uma informação extra sobre o elemento capítulo: neste caso, faz mais sentido o uso de um atributo.

    FIG. 3.2.2.a) Exemplo 3
    4. O PROJETO

    4.1 Uma proposta
    Importação de dados de uma base para outra não é trivial quando lidamos com bases totalmente distintas em sua estruturação. Nossa solução propõe o uso de analisadores (parsers) e um arquivos XML.


    parser A
    parser B
    FIG 4.1.a) Proposta para Importação de Dados


    Nosso documento XML descreve um ITEM DE ACERVO da Biblioteca do IME: um exemplar físico de alguma obra. De que forma as informações sobre um item do Acervo estão estruturadas? Não se trata, aqui, de saber quais as relações da base de dados. Antes, é a descrição de um ITEM DE ACERVO a partir de seus elementos (autores, assuntos relacionados, eventos associados, edições, etc), respeitando a hierarquia de registros.

    4.2 Etapas do processo
    Definido o documento XML modelo, o processo todo envolve, basicamente, duas etapas:
    Etapa 1 Gerar documentos XML (segundo o modelo definido) a partir da base-origem.
  • A função do parser A é gerar, usando dados de uma base-origem, um arquivo .xml para cada item de acervo a ser registrado na base nova. Importante salientar que, para cada base-origem, é necessário um parser distinto.

  • Etapa 2 Fazer a carga da nova base de dados a partir dos arquivos .xml gerados.
  • A função do parser B é fazer a carga da nova base de dados a partir da análise dos arquivos .xml gerados na etapa 1.


  • 5. Desenvolvimento
    5.1 Modelo XML
    Nosso documento XML é um arquivo.xml, contendo a estrutura de um ITEM DE ACERVO da Biblioteca do IME, juntamente com a Definição do Tipo de Documento (DTD - Document Type Definition).
    O DTD é descrição estrutural do documento e inclui regras de interpretação para cada uma das informações contidas no mesmo. Ele contém a definição dos elementos e listas de atributos, a cardinalidade dos elementos, a hierarquia dos registros.
    Por exemplo: ITEM DE ACERVO pode ser PERIÓDICO, NÃO-PERIÓDICO, MULTIMIDIA ou TESE. Cada um deles é um elemento distinto. Determinamos, também pelo DTD, que o item pode ter mais de um ASSUNTO associado, mas apenas uma EDITORA.
    Suponha que o parser A gere um arquivo itemYYY.xml a partir de dados selecionados numa das bases-origem. Esse arquivo será um documento XML válido apenas se obedecer às definições DTD.
    A metodologia utilizada foi:
  • analisar os vários modelos conceituais e lógicos propostos anteriormente para a criação de uma base de dados para a biblioteca;
  • estudar o modelo na nova base de dados;
  • compreender o processo de catalogação de um item no acervo da Biblioteca (como são associados os assuntos dos itens, o que são os códigos associados às obras e autores, etc);
  • estudar XML;
  • definir um modelo.

  • 5.2 Parser A
    Para criar o parser A, é necessário ter acesso à base-origem: saber como extrair, das relações dessa base, os dados necessários para gerar arquivos xml válidos.
    No caso específico do parser A para a base do IDBIME, utilizamos a seguinte metodologia:
  • criar um banco de dados no servidor Postgresql (o mesmo da nova base) com as mesmas relações da base do IDBIME (script desenvolvido por Celina Maki Takemura);
  • copiar os dados da base IDBIME (Clipper) para o servidor Postgresql (a cópia foi feita para facilitar consultas à base);
  • engenharia reversa para compreender as várias relações da base (devido à falta de documentação sobre a base-origem).
  • criar um script para gerar arquivos xml (seguindo nosso modelo definido anteriormente) a partir da base-origem.

    Esse último script - o parser A para o IDBME - foi desenvolvido em Java e requer driver para acesso ao servidor postgresql (note que a base-origem, neste momento, é uma cópia da base original do IDBME).
  • 5.3 Parser B
    O desenvolvimento do parser B exige compreensão total da base-destino (a nova base): em que ordem inserir os novos registros?É importante manter a consistência dos dados: ao inserir o livro "Sistemas de Bancos de Dados", preciso associá-lo ao assunto "Bancos de dados". Esse assunto já foi inserido?

    A metodologia utilizada foi:
  • estudo do nova base e suas alterações (verificar chaves primárias e estrangeiras, cardinalidade);
  • pesquisa por ferramentas Java para parsers XML;
  • estudo do SAX(Simple API for XML), uma API em Java para XML [org.xml.sax];
  • estudo do Apache XML Project, para utilização do pacote org.apache.xerces contendo parsers XML em Java
  • desenvolvimento do script - parser B - para analisar os arquivos .xml gerados e fazer a carga da nova base de dados.

    Esta apresentação [.pdf] mostra como foi desenvolvido um leitor de arquivos XML (uma classe em Java) que, após analisar seu (do arquivo) contéudo, faz a carga da nova base de dados com as informações obtidas pelo parser.
  • 6. Cronograma
    6.1 Atividades realizadas
    MARÇO / 2004
    1.Primeiro contato com o projeto: conhecer o que já foi realizado e o que está sendo desenvolvido.
    ABRIL / 2004
    2.Estudo dos modelos conceitual, lógico e físico da nova base de dados.
    3.Análise de dados do ID-BIME (sistema da Biblioteca a ser substituído). Entender os tipos de dados contidos na base de dados do ID-BIME.
    MAIO / 2004
    4.Análise de dados do ID-BIME. Extrair do ID-BIME o que está relacionado ao Acervo da Biblioteca. Identificar semelhanças e diferenças com o novo modelo.
    5.Estudo dos módulos navegacional e operacional do novo sistema.
    6.Estudo do novo modelo conceitual, apresentado pelo professor João Eduardo, para a nova base de dados.
    JUNHO / 2004
    7.Enumeração dos atributos que faltam nas novas relações. Cada integrante do grupo verifica, no modelo novo, se algo ainda não está modelado segundo as especificações de cada parte do sistema.
    8.Análise do novo modelo gerado
    JULHO / 2004
    9.Assimilação do modelo da base de dados anterior da Biblioteca (gerar base em PostgreSQL a partir de uma base em Clipper)
  • Script de importação dos dados para o PostgreSQL (em Perl)
  • 10.Estudo de ferramentas: XML e Banco de Dados
    AGOSTO / 2004
    12.Desenho do novo modelo em XML
    SETEMBRO / 2004
    13.Desenvolver dois parsers: um para gerar o arquivo XML com os dados do IDBIME; outro para extrair do arquivo XML os dados para a carga da base nova.
    OUTUBRO~NOVEMBRO/ 2004
    14.Redefinição do modelo e ajuste nos scripts dos parsers.
    DEZEMBRO/2004 ~ FEVEREIRO/2005
    15.Carga da base de dados (em fase de homologação)


    7. Ferramentas
    1. CScript de geração de uma base de dados em um servidor PostgreSQL [desenvolvido por Celina Maki Takemura]
  • Compilador gcc version 3.3.3
  • Biblioteca "libpq-fe.h", para manipular as funções de acesso ao servidor PostgreSQL. Essa biblioteca é disponibilizada pelo postgresql.

  • 2. PerlScript de importação de dados de uma base Clipper para o servidor PostgreSQL
  • ActiveState Active Perl 5.6 build 638
  • PPM (Programmer´s Package Manager) version 2
  • DBD-PgPP 0.05 (Pure Perl PostgreSQL driver for the DBI)

  • 3. XML
  • versão 1.0

  • 4. Java
  • Java 1.4.2
  • org.xml.sax
  • org.apache.xerces

  • 5. Banco de Dados
  • PostgreSQL 7.4.3
  • PgAdmin II
  • 8. Conclusão
    O projeto de um banco de dados envolve dois objetos abstratos: cadastro (estrutura de dados) e processos (o ciclo de informações - info-flow). A modularização do sistema procura minimizar a dependência entre os módulos, mas é importante compreender o projeto como um todo. Tratando-se de banco de dados, podemos verificar que há um problema na especialização de generalização: no processo de filtragem (critérios de especialização no banco de dados), pode haver replicação de estruturas de dados.

    O estudo do XML mostrou as várias possibilidades do uso da linguagem de marcação para a descrição de dados.
    A existência de APIs para XML (disponíveis em outras linguagens de programação além de Java) reflete as facilidades do uso do XML.

    9. Bibliografia e Links
    ABITEBOUL, S.; BUNEMAN, P.; SUCIU, D. Data on the web: from relations to semistructured data and XML. California: Morgan Kauffman Publishers, 2000.
    WALL, L.; CHRISTIANSEN, T.; SCHWARTZ, R.L; POTTER, S. Programming Perl. California: O´Reilly & Associates, 1996.
    HOLZNER, STEVEN.Inside XML. Indiana: New Riders, 2001.
    http://perl.about.com/
    http://www.activestate.com
    http://www.cpan.org
    http://search.cpan.org/~arc (Aaron Crane)
    http://crazyinsomniac.perlmonk.org/perl/ppm
    PostgreSQL 7.4.3 Documentation
    http://www.xml.org
    Papers about XML (by Ronald Bourret)
    XML Specification
    Apache XML Project