Introdução

Propaganda
UNIVERSIDADE FEDERAL DE SANTA CATARINA
DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA
BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO
Migrador Universal de Dados
Filipe Ferreira
Florianópolis - SC
2007/1
Filipe Ferreira
Migrador Universal de Dados
Orientador: Prof. João Bosco Mangueira Sobral
Banca Examinadora:
Márcio Clemes
Guilherme Arthur Geronimo
Índice
Índice ..................................................................................................................... 3
1. Introdução ........................................................................................................ 5
2. Objetivos .......................................................................................................... 6
2.1 Objetivos Gerais ............................................................................................ 6
2.2 Objetivos Específicos..................................................................................... 6
3. Visão Geral do Sistema ................................................................................... 6
4. Primeiro Protótipo ............................................................................................ 7
4.1 Casos de Uso ................................................................................................ 7
4.1.1 Adicionar parâmetros conversor ................................................................. 7
4.1.2 Editar parâmetros conversor....................................................................... 8
4.1.3 Remover parâmetros conversor ................................................................. 8
4.1.4 Adicionar configuração conversor ............................................................... 9
4.1.5 Editar configuração conversor .................................................................. 10
4.1.6 Remover configuração conversor ............................................................. 11
4.1.7 Configurar Conversor................................................................................ 11
4.1.8 Executar migração .................................................................................... 12
4.1.9 Executando migração ............................................................................... 12
4.1.10 Extrair Dados da Base ............................................................................ 13
4.1.11 Inserir Dados na Base ............................................................................ 13
4.2 Diagrama de Classes................................................................................... 14
5. Tecnologias Utilizadas ................................................................................... 16
5.1 Java ............................................................................................................. 16
5.2 JDOM........................................................................................................... 18
5.3 XML ............................................................................................................. 19
6. Referências.................................................................................................... 21
Lista de Figuras
Figura 4.1 – Controle da Migração.........................................................................14
Figura 4.2 – Inicialização dos Conversores............................................................15
Figura 4.3 – Manipulação dos Conversores...........................................................16
1. Introdução
Bancos de dados são conjuntos de dados com uma estrutura regular que
organizam informação. Um banco de dados normalmente agrupa informações
utilizadas para um mesmo fim.
Um banco de dados é usualmente mantido e acessado por meio de um
software conhecido como Sistema Gerenciador de Banco de Dados (SGBD).
Normalmente um SGBD adota um modelo de dados, de forma pura, reduzida ou
estendida. Muitas vezes o termo banco de dados é usado como sinônimo de
SGDB.
O modelo de dados mais adotado hoje em dia é o modelo relacional, onde
as estruturas têm a forma de tabelas, compostas por linhas e colunas.
Com o aumento do uso dos computadores e aplicativos nas últimas décadas,
foram criados um grande número de diferentes tecnologias para gerenciamento de
dados. Essas tecnologias vão desde sistemas com arquivos de texto até sistemas
relacionais ou não relacionais de banco de dados de grande porte. Independente
do tipo de armazenamento de dados existente, o que na época era a melhor
solução, hoje está desatualizado. Nestes casos, é tomada a decisão de migrar os
dados de um sistema para outro. A tecnologia desatualizada não é o único motivo
para a migração dos dados. Outros motivos incluem um menor custo total de
propriedade, melhor desempenho, consolidação de diferentes tecnologias e
permitir o acesso multiusuário aos dados.
A UFSC possui uma quantidade de dados significativa em sistemas
obsoletos. Atualmente a universidade possui uma base de dados integrada que
precisa ser alimentada com os dados dos sistemas antigos. Para realizar a
migração destes dados, este projeto propõe a criação de um software migrador de
dados visando à automatização do processo de migração dos dados.
2. Objetivos
2.1 Objetivos Gerais
O Migrador de Dados tem como objetivo a extração dos dados de uma base de
dados de entrada qualquer e a inserção destes dados em uma base de dados de
saída qualquer, ambas definidas pelo usuário.
2.2 Objetivos Específicos

O software possuirá interfaces de fácil utilização, de modo que o usuário
alcance suas metas de interação com o sistema.

Os dados serão extraídos da base de dados de entrada por um conversor
de dados de entrada e inseridos em uma estrutura de dados.

A estrutura de dados será utilizada pelo conversor de saída para a inserção
dos dados na base de dados destino.

A migração será feita por um módulo controlador que solicitará aos
conversores a extração dos dados da base de entrada e inserção destes
dados na base destino.

As bases de dados de entrada e saída devem ser previamente
selecionadas pelo usuário.
3. Visão Geral do Sistema
O Migrador está sendo implementado com o objetivo de solucionar problemas com
a migração das informações das bases de dados antigas utilizadas pelos sistemas
da UFSC para a base de integração dos sistemas.
Porém o Migrador será implementado com um objetivo maior. A idéia do software
é abstrair as bases de dados de modo que a migração seja feita de uma base de
entrada qualquer para uma base de dados destino qualquer. Para isso o software
deverá ser genérico, extensível e de fácil utilização. Genérico, pois a migração
poderá ser feita usando bases de dados qualquer. Extensível, pois o usuário
poderá incluir tantas bases de dados quanto necessárias para realizar a migração.
Fácil utilização utilizando interfaces amigáveis e fáceis de serem manuseadas.
4. Primeiro Protótipo
4.1 Casos de Uso
4.1.1 Adicionar parâmetros conversor
Fluxo Básico
1. O sistema apresenta a tela Inserir Parâmetro
2. O usuário preenche os campos (Nome, Regex)
3. O usuário confirma a operação
4. O sistema realiza a validação dos campos
4.1 O sistema verifica se o campo nome está preenchido
5. O sistema armazena o parâmetro
6. O sistema finaliza a operação.
Fluxo Alternativo 1
No passo 4, caso o usuário não tenha preenchido o campo nome, o sistema
emitirá uma mensagem de erro.
Fluxo Alternativo 2
Do passo 1 ao 4, o usuário pode cancelar a operação.
4.1.2 Editar parâmetros conversor
Fluxo Básico
1. O sistema apresenta a tela Editar Parâmetro
2. O sistema preenche os campos (Nome, Regex)
3. O usuário altera os campos (Nome, Regex)
4. O sistema realiza a validação dos campos
4.1 O sistema verifica se o campo nome está preenchido
5. O sistema armazena o parâmetro
6. O sistema finaliza a operação
Fluxo Alternativo 1
No passo 4, caso o usuário não tenha preenchido o campo nome, o sistema
emitirá uma mensagem de erro.
Fluxo Alternativo 2
Do passo 1 ao 4, o usuário pode cancelar a operação.
4.1.3 Remover parâmetros conversor
Fluxo Básico
1. O usuário seleciona o parâmetro desejado
2. O usuário confirma a operação
3. O sistema remove o parâmetro selecionado.
4.1.4 Adicionar configuração conversor
Fluxo Básico
1. O sistema apresenta a tela Inserir Configuração Conversor
2. O usuário preenche os campos (Nome, Classe)
3. O usuário adiciona os parâmetros do conversor (ver Caso de Uso Adicionar
parâmetros conversor)
4. O usuário confirma a operação
5. O sistema realiza a validação dos campos
5.1 O sistema verifica se o campo nome está preenchido
5.2 O sistema verifica se o campo classe está preenchido
6. O sistema armazena a configuração
7. O sistema finaliza a operação
Fluxo Alternativo 1
Antes de realizar o passo 4, o usuário poderá editar parâmetros (ver Caso de Uso
Editar parâmetros conversor) ou remover parâmetros (ver Caso de Uso Remover
parâmetros conversor)
Fluxo Alternativo 2
Do passo 1 ao 4, o usuário pode cancelar a operação.
Fluxo Alternativo 3
No passo 5, caso o usuário não tenha preenchido um dos campos, nome ou
classe, o sistema emitirá uma mensagem de erro.
4.1.5 Editar configuração conversor
Fluxo Básico
1. O sistema apresenta a tela Editar Configuração Conversor
2. O sistema preenche os campos(Nome, Classe)
3. O sistema preenche a tabela de parâmetros 4. O usuário edita os os
campos(Nome, Classe)
5. O usuário edita os parâmetros do conversor
5.1 O usuário adiciona parâmetros (ver Caso de Uso Adicionar parâmetros
conversor)
5.2 O usuário edita parâmetros (ver Caso de Uso Adicionar editar conversor)
5.3 O usuário remove parâmetros (ver Caso de Uso Adicionar remover conversor)
6. O usuário confirma a operação
7. O sistema realiza a validação dos campos
7.1 O sistema verifica se o campo nome está preenchido
7.2 O sistema verifica se o campo classe está preenchido
8. O sistema armazena a configuração
9. O sistema finaliza a operação
Fluxo Alternativo 1
Antes de realizar o passo 6, o usuário poderá retornar ao passo 5
Fluxo Alternativo 2
Do passo 1 ao 5, o usuário pode cancelar a operação.
4.1.6 Remover configuração conversor
Fluxo Básico
1. O usuário seleciona a configuração que deseja remover
2. O usuário confirma a operação
3. O sistema remove a configuração selecionada.
4.1.7 Configurar Conversor
Fluxo Básico
1. O usuário seleciona o conversor que deseja configurar
2. O usuário solicita ao sistema a configuração do conversor
3. O sistema apresenta a tela Configurar Conversor
4. O sistema insere os parâmetros do conversor
5. O usuário fornece os valores dos parâmetros do conversor
6. O usuário confirma a operação
7. O sistema finaliza a operação.
Fluxo Alternativo 1
No passo 5, se o usuário não preencher os valores dos parâmetros o sistema
emitirá uma mensagem de erro.
4.1.8 Executar migração
Fluxo Básico
1. O usuário executa a configuração do conversor de entrada (ver Caso de Uso
Configurar Conversor)
2. O usuário executa a configuração do conversor de saída (ver Caso de Uso
Configurar Conversor)
3. O usuário confirma a operação
4. O sistema executa a migração (ver Caso de Uso Executando migração)
5. O sistema finaliza a operação.
Fluxo Alternativo
Nos passos 1 e 2, caso o usuário não selecione os conversores ou um deles o
sistema emitirá uma mensagem de erro.
4.1.9 Executando migração
Fluxo Básico
1. O sistema solicita ao conversor de entrada a extração dos dados da base de
dados de entrada (ver Caso de Uso Extrair Dados da Base)
2. O conversor de entrada retorna os dados extraídos ao sistema
3. O sistema solicita ao conversor de saída a inserção dos dados na base de
dados de saída (ver Caso de Uso Inserir Dados na Base)
4. O conversor de saída insere os dados na base destino.
5. O sistema finaliza a operação.
Fluxo Alternativo
Nos passos 1, 2, 3 e 4, caso haja falha em algum dos processos o sistema
retornará uma mensagem de erro.
4.1.10 Extrair Dados da Base
Fluxo Básico
1. O conversor conecta-se ao banco de dados
2. O conversor executa uma consulta no banco de dados
3. O conversor retorna os dados da consulta
4. O sistema finaliza a operação.
Fluxo Alternativo
Nos passos 1, 2 e 3, caso haja falha em algum dos processos o sistema retornará
uma mensagem de erro.
4.1.11 Inserir Dados na Base
Fluxo Básico
1. O conversor conecta-se ao banco de dados
2. O conversor executa uma inserção no banco de dados
3. O sistema finaliza a operação.
Fluxo Alternativo
Nos passos 1 e 2, caso haja falha em algum dos processos o sistema retornará
uma mensagem de erro.
4.2 Diagrama de Classes
Figura 4.1: Controle da Migração
Nesta
primeira
figura
do
diagrama
de
classes
temos
a
classe
MigraçãoController que é responsável pelo controle da migração. A migração é
feita através do método executaMigracao() que solicita ao conversor de entrada a
extração dos dados e envia estes dados ao conversor de saída que realiza a
inserção destes dados no banco destino.
O controlador agrega duas classes abstratas: a classe ConversorEntrada e
a Conversor Saída. Estas duas classes possuem dois métodos que devem ser
implementados pelos conversores de entrada e saída. O método configura recebe
os parâmetros para realizar a conexão com o banco de dados e o método
converte realiza a conexão com o banco de dados de origem e extrai os dados no
caso de um conversor de entrada. Sendo um conversor de saída, o método
converte conecta-se ao banco de dados de destino e realiza a inserção dos dados
extraídos.
Figura 4.1: Inicialização dos Conversores
Estas duas classes realizam a extração de todos os conversores de entrada
e saída já existentes no sistema e são colocados em uma estrutura de dados
HashMap.1 A chave para acessar um valor do HashMap é o nome do conversor.
Logo na inicialização do sistema estes HashMap conversoresMap é alimentado
para que o sistema tenha todos os conversores com suas respectivas
configurações em memória.Isto melhora o desempenho do programa pois não é
necessário acessar a estrutura de armazenamento dos conversores a medida que
conversores são solicitados. O acesso a um determinado conversor é feito pela
chamada getConversorEntrada ou getConversorSaida.
1
HashMap é uma estrutura de dados que possui dois parâmetros. O primeiro é uma chave
utilizada para realizar o acesso ao segundo parâmetro que é o valor armazenado nessa estrutura.
Figura 4.2: Manipulação dos Conversores
Os conversores são armazenados em um documento XML
Este
documento é um atributo da classe ConfiguradorXML. Esta classe é responsável
pela manipulação do arquivo XML. Já a classe ConfiguradorConversor manipula
os conversores, realizando a inserção, edição ou remoção dos conversores no
sistema e no documento XML.
5. Tecnologias Utilizadas
5.1 Java
Java é uma linguagem de programação de alto-nível simples, robusta, orientada a
objetos, multiplataforma e que utiliza uma máquina virtual para a geração de
código de máquina.
Na linguagem de programação Java, todo o código é primeiro escrito em arquivos
com a extensão .java. Estes arquivos são compilados em arquivos .class pelo
compilador javac. O arquivo .class não possui a linguagem nativa dos
computadores, em vez disso possuem bytecodes – a linguagem da Java Virtual
Machine que compila para a linguagem de máquina.
A plataforma Java é composta por 2 componentes:

Java Virtual Machine (JVM)

Java Application Programming Interface (API)
Já mencionamos a JVM. A API nada mais é que um conjunto de classes que
fornecem uma enorme quantidade de funcionalidades aos programadores. São
agrupadas em bibliotecas de classes relacionadas, conhecidas como pacotes
(packages).
Java se divide em três grandes edições.

Java 2 Standard Edition (J2SE): É a tecnologia Java para computadores
pessoais, notebooks. Várias APIs acompanham esta versão e outras
podem ser baixadas opcionalmente no site da Sun. É com elas que a
maioria das aplicações são construídas e executadas. O J2SE possui duas
divisões:
o
Java Development Kit (JDK) ou Standard Development Kit (SDK):
um conjunto para desenvolvimento em Java.
o
Java Runtime Edition JRE: uma versão mais leve da JDK esta
versão que executará os sistemas construídos com a SDK.

Java 2 Mobile Edition (J2ME): É a tecnologia Java para dispositivos
móveis. Possui APIs bem simples e leves para economizar espaço,
memória e processamento. São utilizadas para sistemas em celulares, palm
tops, pocket pcs, smartphones, javacards e demais dispositivos. O J2ME se
divide em dois grupos de bibliotecas. É dividida em dois grupos:
o
Connected Limited Device Configuration (CLDC): Para celulares e
smartphones, que são mais limitados
o
Connected Device Configuration (CDC): Para Palmtops e Pocket pcs
e alguns dispositívos mais poderosos.

Java 2 Enterprise Edition (J2EE): É a tecnologia Java para aplicações
corporativas que podem estar na internet ou não. Possui um grande
número de APIs onde a segurança é a principal preocupação. É ideal para
a construção de servidores de aplicação, integração de sistemas ou
distribuição de serviços para terceiros.
5.2 JDOM
JDOM é uma API Java, open source (Application Programming Interface)
desenvolvida visando o acesso, a manipulação e produção de dados XML a partir
do código Java gerado.
A biblioteca JDOM possui seis pacotes. O primeiro é o org.jdom que contém as
classes representando um documento XML e seus componentes: atributos,
CDATA, comment, DocType, Document, Element, EntityRef, Namespace,
ProcessingInstruction, e Text.
O segundo pacote é o org.jdom.input que fornece classes para a construção de
um documento XML. A principal e mais importante classe é a SAXBuilder.
SAXBuilder constrói documento através dos eventos SAX (Simple Api for XML)
emitidos e formulando assim o documento XML correspondente. Outro construtor
utilizado para documentos XML é o DOMBuilder que cria um documento a partir
de uma árvore DOM (Document Object Model).
O pacote org.jdom.output que provê classes para a saída de documentos XML. A
principal classe é a XMLOutputter que converte documentos XML para uma
seqüência de bytes que pode ser utilizado para a criação de um arquivo XML, por
exemplo. Outros exemplos para a criação de um documento de saída:
SAXOutputter que gera eventos SAX baseados no conteúdo do documento XML.
Existem outras alternativas também como DOMOutputter, que cria uma
representação do documento em uma árvore DOM.
Outro pacote é o org.jdom.transform que permite incorporar transformações XSLT
(eXtensible Stylesheet Language for Transformation – linguagem de folhas de
estilo extensível para transformação). XSLT é uma linguagem de marcação usada
para transformar documentos XML através do uso de folhas de estilos. Uma
transformação XML é um processo que reorganiza partes de um documento para
um novo formato. Por exemplo: suponha um documento em uma aplicação XML.
Este documento não pode ser visto nos navegadores mais antigos, que entendem
apenas HTML, mas você pode transformá-lo em XHTML permitindo assim a
visualização do documento em navegadores HTML.
O org.jdom.xpath que contém classes para a busca de informações em um
documento XML. O XPATH é uma linguagem de consultas usada para navegar
através dos elementos e atributos em um documento XML.
E o pacote org.jdom.adapters que contém classes que auxiliam a biblioteca
a interagir com o DOM.
5.3 XML
XML é uma linguagem de marcação desenvolvida por um grupo de empresas e
organizações denominado World Wide Web Consortium (W3C).
Uma linguagem de marcação é um conjunto de símbolos que pode ser colocado
no texto de um documento para demarcar e rotular as partes desse documento. A
marcação é determinada pelas tags delimitadas pelos símbolos de início (<) e fim
(/>).
Um documento XML é a unidade básica de informação XML. É composto por
elementos que se distribuem de forma hierárquica, sendo o elemento mais alto da
hierarquia denominado de elemento raiz (root) e os elementos abaixo da raiz
constituem os elementos-filhos.
A linguagem XML vem sendo muito utilizada para realizar troca de informações
entre sistemas que possuem arquitetura fechada. Isto devido a sua característica
independente da plataforma que os sistemas utilizam.
Algumas pessoas confundem XML com HTML que são duas linguagens bem
diferentes:

XML foi projetado para descrever os dados enquanto que a HTML realiza a
exibição dos dados.

XML não possui tags pré-definidas, você define suas tags de acordo com a
sua aplicação.
Para um documento XML ser bem formado ele passa por uma validação
feita por um analisador (parser) que basicamente verifica a sintaxe e a estrutura
do documento. A estruturação de um documento define quais os elementos
aceitos em um documento XML. É definido através de um DTD (Document Type
Definition) ou por XSD (XML Schema Definition).
6. Referências
W3C
–
Extensible
Markup
Language
(XML).
Disponível
em:
<http://www.w3.org/XML/>
JDOM – Disponível em http://www.jdom.org/index.html
Deitel M. H., Deitel J. P. Java Como Programar. 6. ed. São Paulo, 2005. 1152 p.
Sun
–
The
Java
Sun
<http://java.sun.com/docs/books/tutorial/ >
Tutorials.
Disponível
em:
Download