Avaliando Ferramentas ETL para Aplicação em casos de Migração

Propaganda
PONTIFICIA UNIVERSIDADE CATÓLICA DO PARANÁ
Elaine Letícia Camargo do Nascimento
Tatiane Araujo Muniz
Avaliando Ferramentas ETL
Para Aplicação em casos de Migração entre SGBD
CURITIBA
2011
Elaine Letícia Camargo do Nascimento
Tatiane Araujo Muniz
Avaliando Ferramentas ETL
Para Aplicação em casos de Migração entre SGBD
Trabalho de Conclusão de Curso Apresentado
como requisito parcial para conclusão da
Especialização em Banco de Dados, Pontifícia
Universidade Católica do Paraná.
Orientador: Prof. Marcelo Dalagassa
CURITIBA
2011
Agradecimentos
Primeiramente agradecemos a Deus pela oportunidade de termos concluído mais
este desafio.
Agradecemos também aos nossos familiares por todo o apoio, principalmente aos
nossos companheiros e filhas por toda a paciência nas horas que tivemos que nos
ausentar para estudos ou preparação de trabalhos.
Nossos sinceros agradecimentos aos professores pelo conhecimento compartilhado
e também ao nosso professor orientador Marcelo Dalagassa pela disponibilidade e
por todas as dicas e sugestões.
LISTA DE ILUSTRAÇÕES
Figura 1 - Representação de um sistema de banco de dados ................................................... 15
Figura 2 – Representação do processo de ETL ............................................................................ 22
Figura 3 – Representação do processo de Extração ................................................................... 23
Figura 4 – Representação do processo de transformação.......................................................... 24
Figura 5 – Representação do processo de carga ......................................................................... 26
Figura 6 - Modelo Relacional Reduzido .......................................................................................... 31
Figura 7 - Datastage extração tabela pessoa ................................................................................ 39
Figura 8 - Datastage configuração Oracle...................................................................................... 40
Figura 9 - Datastage extração tabela edificacao ........................................................................... 41
Figura 10 - Datastage Job de Transformação 1 ............................................................................ 41
Figura 11 - Datastage meta dados .................................................................................................. 42
Figura 12 - Datastage Job de Transformação 2 ............................................................................ 43
Figura 13 – Datastage Job de Agregação ...................................................................................... 43
Figura 14 - Talend conexão com banco Oracle............................................................................. 44
Figura 15 - Talend estágio de Input Oracle .................................................................................... 44
Figura 16 - Talend conexão com banco PostgreSQL................................................................... 45
Figura 17 - Talend Job Extração Pessoa ....................................................................................... 46
Figura 18 - Talend Extração tabela edificacao .............................................................................. 46
Figura 19 - Talend estágio de Join - chaves .................................................................................. 47
Figura 20 - Talend Job de Transformação 1 .................................................................................. 48
Figura 21 - Talend estágio de agregação ....................................................................................... 48
Figura 22 - Talend Job de agregação ............................................................................................. 49
Figura 23 - Apatar conexão com banco Oracle ............................................................................. 50
Figura 24 – Apatar mapeamento de colunas ................................................................................. 50
Figura 25 - Apatar Extração tabela pessoa .................................................................................... 51
Figura 26 - Talend Extração tabela edificacao .............................................................................. 52
Figura 27 - Apatar Job de Transformação 1 .................................................................................. 53
Figura 28 - Apatar job de agregação............................................................................................... 54
Figura 29 – Qualidade de Uso ............................................................................................................... 55
Gráfico 1 – Efetividade ...................................................................................................................... 57
Gráfico 2 – Produtividade .................................................................................................................. 59
Gráfico 3 – Segurança ....................................................................................................................... 60
Gráfico 4 – Satisfação ....................................................................................................................... 61
LISTA DE TABELAS
Tabela 1 – Quantidade de Registros por tabela ............................................................................ 28
Tabela 2 – Tabela Imovel_Avaliado ................................................................................................ 29
Tabela 3 – Comparação Tipos de Dados entre Oracle e PostgreSQL ...................................... 29
Tabela 4 – Comparação entre Oracle e PostgreSQL ................................................................... 30
Tabela 5 – Seleção entre Métricas .................................................................................................. 53
LISTA DE ABREVIATURAS E SIGLAS
ACID - Atomicidade, Consistência, Isolamento e Durabilidade
DDL - Data Definition Language
DW - Data Warehouse
ETL - Extract, Transform and Load
ODBC - Open Data Base Connectivity
ORD - Object Relational Database
ORDBMS - Object Relational Database Management System
PL/SQL - Procedural Language/Structured Query Language
SGBD - Sistemas Gerenciadores de Banco de Dados
SGBDOR - Sistema Gerenciador de Banco de Dados Objeto Relacional
SGC - Sistema de Gestão Cadastral
SQL - Structured Query Language
RESUMO
O relato de caso de migração entre sistemas gerenciadores de banco de dados
avaliando ferramentas de ETL foi elaborado para servir como um instrumento de
apoio aos profissionais da área na escolha de ferramentas para migração e
transformação de dados em geral.
Foi desenvolvida uma metodologia para avaliação das ferramentas, onde uma
seleção entre as tabelas do banco do sistema atual foi feita baseada no volume e
tipos distintos de dados. Após a seleção das tabelas, optamos pelas ferramentas de
ETL que iríamos avaliar.
Tomamos a decisão de escolher ferramentas com licenças pagas, e duas
ferramentas de software livre, O Talend e o Apatar. O Datastage é uma ferramenta
bem conhecida no mercado, enquanto as outras estão se estabelecendo no
mercado e ganhando cada vez mais clientes.
As ferramentas de ETL foram avaliadas usando como guia as normas sobre
qualidade de produto de software ISO/IEC 9126 e 14598 – 2000. Avaliamos a
qualidade em uso através da efetividade, produtividade, segurança e satisfação, isso
com o objetivo de dizer o quanto o produto de software atende ou não a
necessidade de um usuário.
Palavras-chave: ETL, Banco de Dados, qualidade de software, Migração de dados
ABSTRACT
The Migration case report between data base management systems evaluating ETL
tools was elaborated to support the professionals to choose a tool to migrate and
transform general data.
It was developed a methodology to evaluate the tools, a selection between the tables
in the current data base was based on the volume and distinct types of data. After
the table selection, we chose the tools that we were going to evaluate.
We decided to use commercial license tools and two open source tools, Talend and
Apatar. Datastage is a well known tool while the others are still being established in
the market and getting more and more clients.
The ETL tools were evaluated using software engineering - product quality guide
ISO/IEC 9126 and 14598 - 2000. We have evaluated the quality of usage through
effectiveness, productivity, security and satisfaction, the objective was to tell how
much the software product meets or not the user’s requirement.
Keywords: ETL, Data Base, software quality, data migration
SUMÀRIO
1.
INTRODUÇÃO .......................................................................................................... 11
2.
OBJETIVOS ............................................................................................................. 12
2.1
OBJETIVO GERAL ............................................................................................... 12
2.2
OBJETIVOS ESPECÍFICOS ................................................................................. 12
3.
REVISÃO BIBLIOGRÁFICA ..................................................................................... 13
3.1
Banco de Dados................................................................................................... 13
3.2
Sistemas Gerenciadores de Banco de Dados - SGBD ...................................... 14
3.3
Oracle ................................................................................................................... 15
3.3.1
Descrição ............................................................................................. 15
3.3.2
História ................................................................................................. 16
3.3.3
Versões ................................................................................................. 16
3.3.4
Características ..................................................................................... 17
3.4
Postgresql ............................................................................................................ 18
3.4.1
Descrição ............................................................................................. 18
3.4.2
História do PostgreSQL ...................................................................... 18
3.4.3
Versões ................................................................................................. 19
3.4.4
Características ..................................................................................... 19
3.5
Extração, Transformação e Carga (ETL – Extract, transform, load) ................ 21
3.5.1
Extração ............................................................................................... 22
3.5.2
Transformação ..................................................................................... 24
3.5.3
Carga .................................................................................................... 25
3.6
Software Livre ...................................................................................................... 26
3.6.1
Código Aberto (Open Source) ............................................................ 27
3.6.2
Domínio publico................................................................................... 27
3.6.3
Software protegido com copyletf ....................................................... 27
3.6.4
Software livre e não protegido com copyleft .................................... 27
3.6.5
Software semi-livre .............................................................................. 28
3.6.6
Software proprietário .......................................................................... 28
3.6.7
Freeware ............................................................................................... 28
3.6.8
Shareware ............................................................................................ 28
3.6.9
Commercial Software .......................................................................... 28
3.6.10
GNU General Public License (Licença Pública Geral) ...................... 29
3.7
4.
Software livre de Banco de Dados ........................................................ 29
METODOLOGIA ....................................................................................................... 30
4.1
Modelo do Experimento ...................................................................................... 30
4.1.1
Modelo de Dados proposto................................................................. 30
4.1.2
Tabelas e Volume de dados ................................................................ 31
4.1.3
Extrações e Transformações propostas ........................................... 31
4.1.4
Estudo comparativo entre Oracle e PostgreSQL .............................. 32
4.2
Escolha das ferramentas ETL ............................................................................. 34
4.2.1
Datastage ............................................................................................. 34
4.2.2
Talend ................................................................................................... 35
4.2.3
Apatar ................................................................................................... 37
4.3
Experimento ......................................................................................................... 38
4.3.1
Datastage ............................................................................................. 39
4.3.2
Talend ................................................................................................... 43
4.3.3
Apatar ................................................................................................... 49
4.4
Resultados ........................................................................................................... 54
4.4.1
Avaliação das Ferramentas ............................................................................. 54
4.4.2
Efetividade ........................................................................................................ 57
a)
Log de erro de fácil compreensão: ........................................................................ 57
b)
Possui GNU General Public License – Software livre: ......................................... 57
c)
Operador Join suporta mais que duas tabelas: .................................................... 57
d)
Possui diversos tipos de operadores como join, filter:........................................ 58
e)
Conexão ODBC genérica: ....................................................................................... 58
f)
Faz conexão com a maioria dos bancos de dados:.............................................. 58
g)
Faz diversos tipos de agregações: ........................................................................ 58
h)
Diferentes plataformas: .......................................................................................... 58
i)
Sem necessidade de codificação: ......................................................................... 59
j)
Fácil utilização: ....................................................................................................... 59
4.4.3
Produtividade ................................................................................................... 59
4.4.4
Segurança......................................................................................................... 60
4.4.5
Satisfação ......................................................................................................... 61
5.
CONSIDERAÇÕES FINAIS ...................................................................................... 63
6.
REFERÊNCIA ........................................................................................................... 64
7.
ANEXOS ................................................................................................................... 67
ANEXO A – DDL Tabelas usadas no experimento ....................................................... 67
ANEXO B – Ferramenta Ora2pg .................................................................................... 77
11
1. INTRODUÇÃO
O presente trabalho tem como proposta apresentar diferentes ferramentas de
ETL utilizadas durante as fases de migração e transformação de dados entre os
Bancos de Dados Oracle e PostgreSQL.
A solicitação da migração veio da Prefeitura Municipal de Joinville, que
necessita se adequar à política governamental de uso do software livre. Cada Banco
de dados possui particularidades, vantagens e desvantagens. Não faz parte do
escopo desse trabalho definir qual dos bancos é o melhor, ou mais eficiente para ser
usado com determinada aplicação. Nossa finalidade é propor uma metodologia
eficiente para se efetuar tal migração, avaliando ferramentas de ETL.
Um comparativo entre as funcionalidade dos SGBD (sistemas Gerenciadores
de Banco de Dados) será traçado. Ressaltaremos as principais diferenças em
relação aos tipos de dados, funções e queries, bem como toda e qualquer
adaptação se fizer necessária.
A aplicação SGC - Sistema de Gestão Cadastral se utiliza do banco de dados
Oracle, que possui hoje cerca de cento e trinta oito tabelas, com quantidade de
registros variando entre seis milhões e dez linhas. O Sistema de Gestão Cadastral
fica disponível vinte e quatro horas por dia durante os sete dias da semana, porém
só é utilizado em dias e horários comerciais.
Para realização do comparativo entre ferramentas de ETL, executaremos um
piloto, que consiste em pegar um pequeno numero de tabelas, que possuam
diversidade no seu tipo de dados, grande quantidade de linhas e estrutura bem
definida.
Avaliaremos três ferramentas de ETL, Talend, Apatar e Datastage através de
uma comparação entre suas funções e facilidades para a migração proposta. Como
resultado da comparação, a comunidade poderá optar pela ferramenta que se
adeque ao seu caso de uso.
12
2. OBJETIVOS
2.1 OBJETIVO GERAL
Este projeto tem como objetivo relatar a experiência de migração e
transformação de dados entre os Sistemas Gerenciadores de Banco de Dados
Oracle e PostgreSQL, avaliando diferentes ferramentas de ETL.
2.2 OBJETIVOS ESPECÍFICOS
•
Analisar e comparar aspectos de efetividade, produtividade, segurança
e satisfação nas ferramentas para processo de ETL – segundo Willian
H Inmon, ETL é um programa de computador ou uma série de
procedimentos que são usados para integrar e converter dados de uma
determinada aplicação em um formato verdadeiramente amplo;
•
Levantar características e especificidades de cada um dos bancos;
•
Levantar
características
ferramentas de ETL;
e
especificidades
para
avaliação
de
13
3. REVISÃO BIBLIOGRÁFICA
3.1 Banco de Dados
A definição de banco de dados é convenientemente ligada aos antigos
sistemas de arquivamento. Um grande armário, com arquivos, ou fichas organizadas
de forma alfabética. Um banco de dados é exatamente como um desses armários,
aonde as tabelas viram as fichas, e as informações contidas nas fichas, serão os
dados contidos em cada uma das tabelas dos bancos de dados.
Um sistema de banco de dados é basicamente apenas um sistema
computadorizado de manutenção de registros. O banco de dados, por si só, pode
ser considerado como o equivalente eletrônico de um armário de arquivamento; ou
seja; ele é um repositório ou recipiente para uma coleção de arquivos de dados
computadorizados. (DATE, 2003).
Ainda segundo C. J. Date, um banco de dados é uma coleção de dados
persistentes, usada pelos sistemas de aplicação de uma determinada empresa.
Cada autor define banco de dados a sua própria maneira e como dito por
Elmasri Navathe, banco de dados é uma coleção de dados relacionados. Os dados
são fatos que podem ser gravados e que possuem um significado implícito.
Elmasri trouxe junto à definição de banco de dados a definição do que é dado.
Alguns autores diferenciam o conceito entre dado e informação, outras tratam
ambos com o mesmo conceito.
Dados são todos os elementos que servem de base para a formação de
opiniões ou para a tomada de decisões. Um dado é apenas um índice, um registro,
uma manifestação objetiva, passível de analise, exigindo interpretação da pessoa
para sua manipulação. Em si, os dados têm pouco valor, mas quando classificados,
armazenados e relacionados entre si, eles permitem a obtenção de informações. A
informação apresenta significado e intencionalidade, aspectos que a diferenciam do
conceito de dados (FERRARI, 1991).
14
Informação é o dado trabalhado que permite ao executivo tomar decisões. É o
resultado do tratamento dos dados existentes acerca de alguém ou de alguma coisa
Pode-se definir também a informação como um conjunto de fatos organizados de tal
forma que adquirem valor adicional além do valor do fato em si. (CARVALHO, 1993)
Pode-se dizer que informação é o dado trabalhado que permite ao gestor
tomar decisões. A informação seria o resultado da análise da capacidade de
produção, custo de venda de produtos, produtividade dos funcionários etc. Ao serem
utilizadas pelos gestores, podem afetar ou modificar o comportamento existente na
empresa,
bem
como
o
relacionamento
entre
as
suas
várias
unidades
organizacionais (CHESWICK, 2005).
O termo Banco de Dados indica um conjunto de dados ou informações
gravados em um disco de computador. Muitas vezes confundido com SGBD, que na
verdade é software utilizado para controle do Banco de Dados em si. Um banco de
dados é usualmente mantido e acessado por meio de um software conhecido como
SGBD.
3.2 Sistemas Gerenciadores de Banco de Dados - SGBD
Um Sistema Gerenciador de Banco de Dados, é um sistema computadorizado
de manutenção de registros; ou em outras palavras, é um sistema computadorizado
cuja finalidade geral é armazenar informações e permitir que usuários busquem e
atualizem essas informações quando as solicitar (DATE, 2004).
A origem comercial desses sistemas se deu por volta de 1960, com base nos
sistemas de arquivos. Os sistemas de arquivos eram primitivos, possuíam muitas
limitações tecnológicas, uma vez que, toda e qualquer alteração na estrutura de um
sistema de arquivo, automaticamente refletia numa alteração de programação. Com
o surgimento do armazenamento em discos magnéticos, foi possível a criação de
ferramentas (SGBD) capazes de gerenciar e manipular dados da forma mais
eficiente.
15
A figura 1 mostra uma visão de um sistema gerenciador de banco de dados,
várias aplicações podem acessar e alterar o banco e seus dados, o sistema
gerenciador de banco de dados controla o banco, e os usuários finais acessam as
informações.
Figura 1 - Representação de um sistema de banco de dados
Os
SGBD
evoluíram
e
passaram
a
utilizar
diferentes
formas
de
representação, ou modelos de dados, para descrever a estrutura das informações
contidas em seus bancos de dados. Atualmente, os modelos hierárquico, em redes,
relacional e o modelo orientado a objetos são usados. Sendo o modelo relacional o
mais utilizado e o proposto nesse trabalho.
3.3 Oracle
3.3.1 Descrição
O Oracle é uma ferramenta de gerenciamento de banco de dados, que
trabalha com tecnologia cliente/servidor. Portanto, para sua utilização, primeiro,
instalamos o servidor e depois a base de dados em si. A Oracle está sempre
aperfeiçoando suas versões e adicionando novas funcionalidades.
16
3.3.2 História
A história da Oracle se iniciou fim dos anos 70, quando Larry Ellison teve a
iniciativa de comercializar um banco de dados relacional. Ellison e os co-fundadores
da Oracle, Bob Miner e Ed Oates, perceberam que havia um tremendo potencial de
negócios no modelo de banco de dados relacional, mas não se deram conta de que
mudariam a face da computação empresarial para sempre. Inicialmente a Oracle foi
chamada de software development labs (sdl), uma empresa de consultoria que
contava com Bob Miner (Presidente), Ed Oates e Bruce Scott (engenheiros de
software) no seu primeiro projeto. Larry Ellison, trabalhava na empresa para a qual a
sdl prestava a consultoria.
A Oracle é o principal fornecedor de software para gerenciamento de
informações e a segunda maior empresa de software independente do mundo.
3.3.3 Versões
A Oracle está no mercado há vários anos, e possui uma série de versões. A
partir de 1977 o banco Oracle começou a ser desenvolvido. A Cia se torna o
primeiro cliente da Oracle. Em 1979 a primeira versão comercial do banco é
disponibilizada, este, era escrito em linguagem assembler.
Em 1981, começam a surgir às primeiras ferramentas da Oracle, como a iaf interactive application facility, que é uma ferramenta antecessora do SQL.
A versão seguinte do primeiro banco relacional (Oracle versão 3), foi escrita
em linguagem c. A versão 4 é voltada para os computadores pessoais e possui
coerência de leitura.
As versões 5 e 5.1, possuem o servidor paralelo, e o Oracle client/Server é
introduzido. A versão seis, tem o bloqueio em nível de linha, o sistema de backup
surge.
No ano de 1997 o oracle 8 é apresentado, mostrando-se como o primeiro
banco de dados para web. Ferramentas oracle BI, como Discoverer, são
introduzidas para data warehousing. Ferramentas possuem suporte nativo para java.
Nos últimos anos e versões, o Oracle ainda vem progredindo através da
inserção de serviços como real application clusters e grid computing (alta taxa de
processamento).
17
3.3.4 Características
O Oracle esta no mercado há muitos anos, entre suas características,
podemos falar de sua linguagem padrão de SQL, que é o PL/SQL (Procedural
Language/Structured Query Language).
A unidade básica em PL/SQL é um bloco. Todos os programas em PL/SQL
são compostos por blocos, que podem estar localizados uns dentro dos outros.
Geralmente, cada bloco efetua uma ação lógica no programa.
O Oracle roda em todos os grandes sistemas operacionais, como Windows,
Unix AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64, Z/OS.
O servidor Oracle vem pré configurado para os ambientes de grupos de
trabalho, dinâmicos e diversificados. Ele possui um conjunto integrado de
ferramentas de gerenciamento, além de recursos completos de distribuição,
replicação e utilização na Web.
O Oracle oferece um novo nível de sistemas de computação para usuários de
grupos de trabalho distribuídos. Consultas e atualizações distribuídas permitem o
compartilhamento de dados entre vários servidores e garante a consistência dos
dados. A replicação de dados permite que os usuários criem várias cópias de leitura
de partes de tabelas ou tabelas completas com consistência transacional e
integridade de dados garantida. Atualizações baseadas em eventos ou conforme
demandas proporcionam a flexibilidade máxima. Os links de bancos de dados
permitem que dados remotos sejam definidos e utilizados como se fossem locais,
garantindo que os aplicativos nunca precisem de recodificação, caso os dados
sejam transferidos de um nó a outro.
O gerenciador do servidor Oracle aperfeiçoa automaticamente o desempenho
do banco de dados. Depois de analisar os recursos do sistema e os requisitos de
aplicativos durante o processamento do banco de dados.
18
Ferramentas de gerenciamento local executam tarefas difíceis de maneira
rápida e facilmente, de forma independente ou em conjunto com o console de
gerenciamento central. As tarefas de gerenciamento local incluem:
•
Inicialização e parada temporária do banco de dados.
•
Criação do usuário e atribuição de funções/privilégios;
•
Monitoração de sessões do usuário final;
•
Backup e recuperação do banco de dados;
•
Criação de tabela e gerenciamento de tamanhos;
•
Importação e exportação de dados.
O Oracle proporciona um sistema único de gerenciamento de banco de
dados, oferece uma plataforma avançada e escalável de banco de dados de cliente
leve ou cliente/servidor. Para garantir o mais alto nível de desempenho em todos os
sistemas operacionais suportados.
3.4 Postgresql
3.4.1 Descrição
O PostgreSQL é um sistema gerenciador de banco de dados objeto-relacional
(SGBDOR) de código aberto. Sendo assim ele pode ser utilizado, modificado e
distribuído por qualquer pessoa para qualquer finalidade, comercial ou acadêmica.
Segundo ITL Education Solutions Limited, um banco de dados objetorelacional (ORD), ou sistema de gerenciamento de banco de dados objeto-relacional
(ORDBMS ou SGBDOR) é um sistema de gerenciamento de banco de dados
relacional que permite aos desenvolvedores integrar ao banco de dados seus
próprios tipos de dado e métodos personalizados.
3.4.2 História do PostgreSQL
19
O PostgreSQL é derivado do pacote POSTGRES escrito na Universidade da
Califórnia em Berkeley. A implementação do POSTGRES começou em 1986 e foi
liderado pelo professor Michael Stonebraker.
3.4.3 Versões
A primeira versão foi a versão demonstração do sistema e se tornou
operacional em 1987. Foi exibida em 1988 na conferencia de ACM-SIGMO.
A primeira versão foi liberada para poucos usuários externos em junho de
1989. A segunda versão foi liberada em junho de 1990, contendo um novo sistema
de regras. A terceira versão surgiu em 1991 adicionando suporte a múltiplos
gerenciadores de armazenamento, um executor de comandos melhorado, e um
sistema de regras reescrito.
Em 1994 foi adicionado um interpretador da linguagem SQL e passou a ser
chamado do Postgres95, em seguida foi liberado na Web como de software de
código aberto.
Após muitas mudanças internas e melhoria de desempenho, em 1996 foi
escolhido um novo nome, PostgreSQL, para refletir o relacionamento entre o
POSTGRES original e as versões mais recentes com capacidade SQL, ao mesmo
tempo foi mudado o número da versão para começar em 6.0. Atualmente sua ultima
versão é a 9.
3.4.4 Características
O PostgreSQL suporta grande parte do padrão SQL e oferece funcionalidades
como:
• Comandos complexos;
20
• Chaves estrangeiras;
• Triggers;
• Views;
• Integridade transacional
• Controle de simultaneidade multi versão.
O PostgreSQL pode ser ampliado pelo usuário de muitas maneiras, como:
• Inclusão/criação de tipos de dado;
•
Funções;
• Operadores:
• Funções de agregação;
• Método de índice;
• Linguagens procedurais.
O PostgreSQL tem mais de 15 anos de desenvolvimento ativo e uma
arquitetura que ganhou forte reputação de confiabilidade, integridade de dados e
conformidade a padrões.
Ele roda em todos os grandes sistemas operacionais, incluindo GNU/Linux,
Unix (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), e MS Windows. É
totalmente compatível com ACID, tem suporte completo a chaves estrangeiras,
junções (JOINs), visões, gatilhos e procedimentos armazenados (em múltiplas
linguagens).
Inclui a maior parte dos tipos de dados do ISO SQL:1999, incluindo
INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, e
TIMESTAMP.
Suporta também o armazenamento de objetos binários, incluindo figuras,
sons ou vídeos. Possui interfaces nativas de programação para C/C++, Java, .Net,
Perl, Python, Ruby, Tcl, ODBC, entre outros.
21
O PostgreSQL possui ainda funcionalidades sofisticadas como:
•
O controle de concorrência multiversionado (MVCC, em inglês);
•
Recuperação em um ponto no tempo (PITR em inglês);
•
Tablespaces;
•
Replicação assíncrona;
•
Transações agrupadas (savepoints);
•
Cópias de segurança (online/hot backup);
•
Planejador de consultas (otimizador);
•
Registrador de transações sequencial (WAL) para tolerância a falhas.
Suporta conjunto de caracteres internacionais, codificação de caracteres
multibyte, Unicode e sua ordenação por localização, sensibilidade a caixa
(maiúsculas e minúsculas) e formatação.
É altamente escalável, tanto na
quantidade enorme de dados que pode gerenciar, quanto no número de usuários
concorrentes que pode acomodar.
3.5 Extração, Transformação e Carga (ETL – Extract, transform, load)
O processo de ETL (Extract, Transform and Load) destina-se à extração,
transformação e carga dos dados de uma ou mais bases ou fontes de dados de
origem para uma ou mais bases ou fontes de dados de destino.
A
extração
e
carga
são
obrigatórias
para
o
processo,
sendo
a
transformação/limpeza opcional. Um sistema ETL tem que ser capaz de se
comunicar com as bases de dados e ler diversos formatos de arquivos utilizados por
toda a organização. Essa pode ser uma tarefa não trivial, e muitas fontes de dados
podem não ser acessadas com facilidade.
O termo ETL é comumente relacionado à Data warehouse, que nada mais é
que um banco de dados gigantesco que contem os dados de uma organização de
forma consolidada. Os dados armazenados no Data warehouse geralmente são
unidos e agregados em relatórios de níveis gerenciais. Devido ao grande volume de
informações e de transformações necessárias para esses relatórios, as ferramentas
22
de ETL foram criadas para suportar usuários nessas produções. No entanto um
processo de ETL pode ser aplicado a qualquer tipo de fonte de destino, não
necessariamente um Data warehouse.
A figura 2 mostra um processo de ETL, onde podemos ver várias fontes de
dados (DB2, MySQL, Access, MS Excel e Oracle), sendo extraídas. Em seguida
passam por um processo de transformação e transferência ou carga. Podemos
observar que a carga poderá ser feita para um data warehouse, ou para um banco
de dados como o PostgreSQL. Na figura 2 encontra-se destacado, a extração e
transformação do Oracle para o PostgreSQL, por tratar-se do experimento proposto
nesse trabalho. Um processo de ETL pode cobrir também a extração dos dados do
próprio warehouse para datamarts, que são bancos organizados por assunto em
uma organização, ou ainda os dados do warehouse servindo diretamente como
fonte para geração de relatórios (cubo).
Figura 2 – Representação do processo de ETL
3.5.1 Extração
A primeira parte do processo de ETL é a extração de dados dos sistemas de
origem. Essa extração pode produzir diversos tipos de arquivos, como por exemplo,
para um simples arquivo de texto, para um arquivo com delimitadores, para arquivos
de hash e proprietários da ferramenta, como por exemplo o dataset que é um
23
arquivo próprio do datastage, uma ferramenta que será abordada nos próximos
tópicos.
Na figura 3, podemos ver que uma extração pode ser efetuada de uma base
de dados qualquer, como do db2, para um flat file, do Oracle para um dataset, e
também podemos extrair as informações a partir de planilhas Excel, não
necessariamente de bases de dados.
A maioria das ferramentas de ETL consolida dados extraídos de diferentes
sistemas de origem. Cada sistema pode utilizar um formato ou organização de
dados diferente. Formatos de dados comuns são bases de dados relacionais e flat
files (também conhecidos como arquivos planos), mas podem incluir estruturas de
bases de dados não relacionais. Como exemplo, podemos pensar em um campo
tipo date, na base de dados possui um determinado formato, mas durante a
extração, podemos especificar qual o formato da data desejamos. Exemplos: YYYYMM-DD (base), DD/MM/YYYY (resultado da extração). A extração converte para um
determinado formato para a entrada no processamento da transformação.
Figura 3 – Representação do processo de Extração
24
3.5.2 Transformação
O estágio de transformação aplica uma série de mudanças, filtros ou funções
aos dados extraídos para derivar os dados a serem carregados. A figura 4 mostra
uma visão macro do processo de transformação.
Figura 4 – Representação do processo de transformação
A quantidade de manipulação necessária é extremamente variada. Podemos
ter casos onde se mapeam absolutamente todos os campos vindos de um arquivo
de extração, sem grandes necessidades de mudanças nos formatos, ou em outros
casos, pode ser necessário um ou mais tipos de transformação:
• Seleção de apenas determinadas colunas para carregar (o arquivo
possui trinta colunas e mapearemos somente as dez primeiras)
•
Tradução de valores codificados (valores codificados podem ser
decodificados para aparecerem em relatórios)
25
• Geração
de
chaves
artificiais
para
data
warehouse
(também
conhecidas como Surrogate Keys. São chaves para as tabelas do
warehouse)
• Derivação de um novo valor calculado, após join entre tabelas (tabela A
possui coluna valor, tabela B possui multiplicador. Como resultado
teremos a coluna resultado, que receberá valor X multiplicador)
• Transposição ou rotação (fazer um pivô, o que é coluna vira linha ou o
que é linha vira coluna)
• Quebra de uma coluna em diversas colunas (como por exemplo,
colocar uma lista separada por vírgulas e especificada como uma
cadeia em uma coluna com valores individuais em diferentes colunas).
• Agregação de dados de vários tipos (soma de uma coluna através de
agrupamento por determinado campo).
No caso de data warehouse, a geração de chaves artificiais é praticamente
mandatória para evitarmos a duplicação de dados, uma vez que gravamos dados
históricos.
3.5.3 Carga
A fase de carga carrega os dados no Data Warehouse (DW), como
representado na figura 5. Dependendo das necessidades da organização, este
processo varia amplamente. Podem existir processos genéricos de carga, ou
específicos para cada processo. A volatilidade dos dados pode depender da
necessidade de cada empresa. Alguns data warehouses podem substituir as
informações existentes semanalmente, com dados cumulativos e atualizados, ao
passo que outro DW (ou até mesmo outras partes do mesmo DW) podem adicionar
dados a cada hora, dia ou mês.
A temporização e o alcance de reposição ou acréscimo constituem opções de
projeto estratégicas que dependem do tempo disponível e das necessidades de
26
negócios. Sistemas mais complexos podem manter histórico e pistas de auditoria de
todas as mudanças sofridas pelos dados.Os processos de histórico podem ser
encarados nesse caso como parte da transformação e não somente da carga.
Figura 5 – Representação do processo de carga
3.6 Software Livre
Software livre é um software que permite qualquer um copiar, usar e distribuir,
modificar e melhorar, gratuitamente ou por um preço. O usuário de um software livre
tem as quatro seguintes liberdades:
•
Liberdade para rodar o programa, para qualquer propósito;
•
Acesso ao código fonte e liberdade para estudar como o programa
funciona e modificá-lo conforme necessidade;
•
Liberdade para redistribuir uma ou mais copias;
•
Liberdade para distribuir copia de suas versões modificadas.
Existe uma confusão quando se fala em software livre, pois muitas empresas
afirmam que seu produto é um software livre, porém é necessário verificar os termos
27
de distribuição para ver se os usuários realmente possuem todas as liberdades que
um software livre implica. Software livre é uma questão de liberdade e não de preço.
A seguir o detalhamento dos tipos de software livre, baseados nas informações
retiradas da pagina http://www.gnu.org/philosophy/categories.pt-br.html:
3.6.1
Código Aberto (Open Source)
O termo código aberto é usado por algumas pessoas para se referir ao
software livre.
3.6.2 Domínio publico
Software de domínio publico é software livre mas não protegido por copyright,
ou sem copyright, o que significa que algumas cópias ou versões modificadas
podem não ser livres.
3.6.3
Software protegido com copyletf
Software protegido com copyleft significa que toda cópia do software, mesmo
que tenha sido modificada, precisa se livre.
3.6.4 Software livre e não protegido com copyleft
Vem do autor com permissão para redistribuir e modificar, e também para
incluir restrições adicionais a ele.
Se um programa é livre, mas não protegido com copyleft, algumas cópias ou
versões modificadas podem não se livres, uma empresa pode compilar o programa,
28
com ou sem modificações, e distribuir o arquivo executável na forma de um produto
proprietário.
3.6.5 Software semi-livre
Software semi-livre é software que não é livre, mas que vem com permissão
para indivíduos usarem, copiarem, distribuírem e modificarem (incluindo a
distribuição de versões modificadas) para fins não lucrativos.
3.6.6 Software proprietário
Software proprietário é aquele que não é livre ou semi-livre. Seu uso,
redistribuição ou modificação é proibida.
3.6.7 Freeware
O termo "freeware" não possui uma definição clara e aceita, mas é muito
usada para pacotes que permitem redistribuição, mas não modificação (e seu código
fonte não esta disponível).
3.6.8 Shareware
Shareware é um software que vem com permissão para redistribuir, mas diz
que qualquer uma que continue usando uma cópia deve pagar por uma licença. Não
é um software livre, ou mesmo semi-livre.
3.6.9 Commercial Software
29
Commercial Software ou Software comercial é software sendo desenvolvido
por uma empresa que procura ter lucro através do uso do software. Comercial e
proprietário não são a mesma coisa. A maior parte do software comercial é
proprietária, mas existem softwares livres comerciais, e software não-comecial e
não-livre.
3.6.10 GNU General Public License (Licença Pública Geral)
As licenças para a maioria dos softwares são designadas para garantir que o
software não seja modificado e que copias não sejam distribuídas sem que se
possua uma licença.
Já a GNU General Public tem por objetivo garantir a liberdade de distribuição
e modificações em todas as versões de um programa, garantindo que o software
ainda seja distribuído livremente para todos os usuários interessados. Esta licença
foi idealizada por Richard Matthew Stallman em 1989, no âmbito do projeto GNU da
Free Software Foundation.
3.7 Software livre de Banco de Dados
Quando se trata de software livre para banco de dados, ainda estamos em
expansão devido à complexidade de servidores de banco de dados, já os sistemas
pagos estão bem consolidados nesse sentido. Quando fazemos a opção por um
software proprietário ou livre, uma analise das necessidades é obrigatória, uma vez
que hoje os sistemas não são mais simples armazenadores de informações,
possuem uma grande quantidade de ferramentas agregadas que podem ser de
importância vital. Entre os parâmetros a serem comparados na hora da escolha
temos o desempenho, controle de acesso, estabilidade, suporte a programação e
transações e compartilhamento de dados.
30
4. METODOLOGIA
4.1 Modelo do Experimento
Devido a políticas do governo federal, muitos órgãos públicos estão tendo que
migrar software proprietário para software livre. O motivo é simples, economizar
com licenças pagas.
Para o avaliarmos as ferramentas de ETL, proporemos um projeto piloto,
onde migraremos sete tabelas, sendo que para duas delas, adicionaremos algumas
transformações especificas.
4.1.1 Modelo de Dados proposto
Como dito anteriormente, selecionamos sete tabelas para o experimento.
Sendo elas:
• Pessoa;
•
Edificacao;
• UnidadeAvaliacao;
• Territorial;
• Pessoa_Territorial;
• Pessoa_Edificacao;
• Valores_Imoveis;
O Anexo A traz maiores detalhes sobre os nomes de campos e tipos de
dados. As chaves e relacionamentos podem ser verificados na figura 6 aonde temos
o Modelo Relacional Reduzido.
31
Figura 6 - Modelo Relacional Reduzido
4.1.2 Tabelas e Volume de dados
Os valores especificados abaixo foram extraídos do Sistema de Gestão
Cadastral, banco de dados Oracle em Setembro de 2012.
Tabela
Numero de Registros
PESSOA
923173
EDIFICACAO
267913
TERRITORIAL
159662
UNIDADEAVALIACAO
440187
PESSSOA_EDIFICACAO
283404
PESSOA_TERRITORIAL
162016
VALORES_IMOVEIS
142111
Tabela 1 – Quantidade de Registros por tabela
4.1.3 Extrações e Transformações propostas
• Extrações – Extração simples das tabelas pessoa e edificacao
mencionadas anteriormente;
32
• Transformação 1 - Criação de uma nova tabela que contenha o valor
dos imóveis por bairro. Hoje a tabela unidadeavaliacao, possui a área
do imóvel, e a tabela valores_imoveis possui o valor do metro
quadrado do imóvel. Uniremos essas tabelas e demais tabelas
necessárias para manipulação dos dados na segunda transformação;
Criação da tabela IMOVEL_AVALIADO
Nome Coluna
Tipo do Dado
RazaoSocial
Varchar
Bairro
Varchar
ValorAvaliacao Decimal
Tabela 2 – Tabela Imovel_Avaliado
Transformação 2 – Agregar os dados da nova tabela Imovel_Avaliado
pelo campo bairro, produzindo um relatório no formato csv, que
contenha o total em termos de imóveis por bairro;
4.1.4 Estudo comparativo entre Oracle e PostgreSQL
Antes da migração é necessário fazer um estudo dos SGDBS, identificar
diferenças de sintaxe e funcionalidades. Nas tabelas 3 e 4 citamos algumas
diferenças entre o Oracle e o PostgreSQL:
Tipo de Dados
Integer
Oracle
NUMBER
PostgreSQL
SMALLINT (16-bit), INTEGER (32bit), BIGINT (64-bit)
Floating point
Decimal
BINARY_FLOAT,
REAL (32-bit), DOUBLE PRECISION
BINARY_DOUBLE
(64-bit)
NUMBER
DECIMAL, NUMERIC
33
String
CHAR, VARCHAR2, CLOB,
CHAR, VARCHAR, TEXT
NCLOB, NVARCHAR2,
NCHAR
Binary
BLOB, RAW, LONGRAW,
BYTEA
BFILE
Date/Time
DATE, TIMESTAMP
DATE, TIME (with/without
(with/without TIMEZONE),
TIMEZONE), TIMESTAMP
INTERVAL
(with/without TIMEZONE), INTERVAL
Boolean
N/A
BOOLEAN
Outros
SPATIAL, IMAGE, AUDIO,
ENUM, POINT, LINE, LSEG, BOX,
VIDEO, DICOM, XMLType
PATH, POLYGON, CIRCLE, CIDR,
INET, MACADDR, BIT, UUID, XML,
arrays
Tabela 3 – Comparação Tipos de Dados entre Oracle e PostgreSQL
ORACLE
Sistema Operacional
JOIN
FUNÇÕES
PostgreSQL
Windows, Linux, UNIX, Windows, Linux, UNIX, MAC OS X, BDS
MAC OS X
(PostgreSQL 8.0)
FROM t1, t2
FROM t1
WHERE t1.id = t2.id(+)
LEFT OUTER JOIN t2 ON t1.id = t2.id
DECODE
(sexo,
'M', CASE WHEN sexo = 'M'
'Masculino',
THEN 'Masculino'
'F', 'Feminino')
WHEN sexo = 'F'
THEN 'Feminino'
END)
NVL
COALESCE
sysdate, systimestamp
current_date, current_timestamp
34
UNION
MINUS
EXCEPT
Clausula LIMT e
ROWNUM, ROWID
LIMIT, OFFSET, OID
Catalogo de sistema
SYS, SYSTEM
pg_catalog, information_schema
Visões materializadas
Possui visões
Não possui visões materializadas, porém é
materializadas
possível contornar com gatilhos e funções
OFFSET
Tabela 4 – Comparação Oracle X PostreSQL
4.2 Escolha das ferramentas ETL
Como proposto, faremos a migração dos dados entre os bancos envolvidos,
Oracle e PostgreSQL, usando ferramentas de ETL para extração, transformação e
carga. Selecionamos três ferramentas para fazer a migração, o Datastage, o Talend
e o Apatar. Optamos pelo Talend e pelo Apatar por serem livres de custos com
licença, já o Datastage foi escolhido por ser uma ferramenta bem estabelecida em
termos de mercado.
4.2.1 Datastage
O Datastage é uma ferramenta líder de mercado quando se falam em
Business Intelligence e ETL. Esta ferramenta permite integração de dados com
múltiplas plataformas, é capaz de processar altíssimos volumes de dados. Tem uma
interface gráfica muito amigável, possui dezenas de conectores e estágios para
manipulação de dados.
O Datastage pertence a IBM (IBM Infosphere Datastage), mas iniciou numa
empresa chamada VMark. Seu primeiro protótipo foi desenvolvido por Lee Scheffler,
no ano de 1996. A Vmark adquiriu a Unidata e se tornou a Ardent Software, que
mais tarde se foi comprada pela Informix e se tornou Ascential Software. No ano de
2005 a IBM comprou a Ascential Software.
a) Produtos
35
• Administrator – especifica configurações default do servidor,
adiciona e remove projetos, configura propriedades do projeto e
acessa o repositório através de linha de comando;
• Designer – especifica extração e transformação, denormaliza,
agrega e divide dados;
• Director
–
valida,
executa,
monitora,
agenda
e
mostra
estatísticas dos Jobs;
• Manager – grava e gerencia meta dados reutilizável para Jobs
datastage, cria rotinas e transformações customizadas.
b) Tecnologia
•
Linguagem de Programação: Universe Programming language,
html e java
•
Linguagens query: SQL
•
Sistemas operacionais: Windows e UNIX
c) Aplicações
•
Migração de banco de dados;
•
Integração de Aplicações, data warehouses e data marts;
•
Operações entre diferentes bancos, import/export;
•
Agregação de dados;
4.2.2 Talend
A Talend é um distribuidor de software open source de integração de dados.
Lançou no ano de 2006, a primeira versão do Talend Open Studio. Essa ferramenta
possui várias funcionalidades, principalmente para a migração e integração entre os
sistemas operativos, para ETL (Extract, Transform, Load), Business Intelligence,
36
Data Warehousing e Data Quality. Ao contrário das soluções proprietárias fechadas
que apenas as maiores organizações podem adquirir, a Talend cria soluções de
integração de dados acessíveis a organizações de todas as dimensões.
a) Produtos
•
Talend Open Studio - Job Designer – oferece uma interface gráfica
e funcional para visualização dos processos integrados. Exibe
opções e componentes conectores, são unidos de forma simples,
arrastando e soltando um componente para a área de criação.
•
Talend Open Studio - Business Modeler - uma ferramenta para
modelagem que auxilia os profissionais do mundo dos negócios a
relacionarem as atividades de design com todas as etapas de um
processo específico.
•
Talend Open Studio – Component Library - biblioteca com
componentes e conectores para você desenvolver mapas e funções
de integração. Pode aumentar as opções de componentes criando
padrões nas linguagens de Perl, Java ou SQL.
•
Talend Open Studio – Matadata Repository - os meta dados
trabalhados ficam armazenados nesse repositório. Todas as
informações de projetos ficam salvas por módulos e podem
rapidamente ter seus processo integrados.
b) Tecnologia
•
Linguagem de Programação: Java e Perl
•
Plataforma: Eclipse
•
Linguagens query: SQL, SOAP/XML
•
Sistemas Operacionais: Windows, Linux e Unix
c) Aplicações
•
Migração de banco de dados;
37
•
Integração de Aplicações;
•
Criação e alteração de Banco de Dados;
•
Operações entre diferentes bancos de dados, import/export;
•
Agregação de dados;
4.2.3 Apatar
O Apatar é uma ferramenta de ETL e de integração de dados open source.
Foi fundada no ano de 2005. Seu primeiro release aconteceu no ano de 2007 onde o
produto foi demonstrado a parceiros estratégicos, incluindo MySQL e BlackDuck.
Apatar é também a empresa que fornece suporte para sua ferramenta open source.
a) Produtos
O Apatar é um aplicativo desktop que efetua integração de dados através de
conexões com uma diversidade de banco de dados, aplicações, protocolos e
arquivos. A ferramenta permite que desenvolvedores, administradores de banco de
dados e usuários integrem informações de uma variedade de fontes e formatos de
dados. A ferramenta é bem intuitiva e não há necessidade de desenvolvimento de
código para integração de dados. Apatar ainda desenvolveu duas outras
ferramentas:
•
Apatar Merge – um MS Word plug-in que permite o desenvolvimento de
documentos Microsoft Word, usando templates de dados Salesforce
CRM1.
•
Apatar On-Demand – uma aplicação baseada em Web que integra o
aplicativo Salesforce CRM com edições desktop do QuickBooks
accounting system 2.
38
b) Tecnologia
• Linguagem de Programação: J2EE
• Plataforma: Eclipse
• Linguagens query: SQL, SOAP/XML
• Sistemas Operacionais: Windows, Linux, MacOS
c) Aplicações
• Migração de banco de dados;
• Integração de Aplicações;
• Criação e alteração de Banco de Dados;
• Operações entre diferentes bancos de dados, import/export;
• Agregação de dados;
4.3 Experimento
Para o experimento, definimos algumas etapas a serem seguidas:
•
A extração simples das tabelas pessoa e edificação.
•
Uma tranformação que unirá as tabelas unidadeavaliacao,
pessoa_edificacao, valores_imoveis, edificação, territorial e bairro.
•
Uma agregação que determinara o valor total dos imóveis por bairro.
Através dos procedimentos acima listados pretendemos avaliar a qualidade
em uso de cada uma das ferramentas de ETL segundo as normas sobre qualidade
de software ISO/IEC 9126 e 14598. Mediremos a efetividade, produtividade,
39
segurança e qualidade. Abaixo seguem os experimentos com cada uma das
ferramentas.
4.3.1 Datastage
a) Extração da tabela Pessoa
Para fazermos uma extração no Datastage, precisamos decidir o tipo de job
que queremos. O Datastage possui jobs tipo Parallel e Server. Atualmente a maior
parte do código desenvolvido será em parallel, ou seja, com as linhas processadas
sendo distribuídas entre os processadores, visando à quantidade de dados e
focando principalmente em desempenho. Para esse experimento desenvolvemos
jobs parallel também conhecidos como PX. A figura 7 ilustra o job de extração da
tabela pessoa.
Figura 7 - Datastage extração tabela pessoa
A figura 8 mostra os detalhes de conexão com o banco Oracle.
40
Figura 8 - Datastage configuração Oracle
b) Extração da tabela Edificacao
O PostgreSQL não possui um conector especifico, mas o datastage trabalha
com conectores ODBC. As configurações são similares as de configuração de um
conector qualquer de banco de dados. Na figura 8 vemos a conexão com o estágio
de extração do Oracle e o conector ODBC comunicando com o banco de dados
PostgreSQL.
41
Figura 9 - Datastage extração tabela edificacao
c) Transformação 1 – Carregar tabela Imovel_Avaliado
O Datastage permite mais de dois conectores de banco de dados por estágio
de join. Optamos por usar somente dois links por vez para ficar similar as demais
ferramentas. Temos um estágio de transformação, que poderá efetuar multiplicação
entre as colunas ou outra operação matemática qualquer.
Figura 10 - Datastage Job de Transformação 1
42
A figura 10 acima mostra os joins entre as tabelas relacionadas para a carga
no PostgreSQL.
O mapeamento de meta dados é feito manual ou automática de acordo com a
escolha do desenvolvedor. A figura 11 a seguir mostra os meta dados no estágio do
Oracle.
Figura 11 - Datastage meta dados
d) Transformação 2 – Agregação de dados Imovel_Avaliado
A figura 12 mostra o segundo job de transformação. O resultado da
transformação 1 é a entrada da transformação 2. O diferencial nesse caso é o
estágio de agregação, que efetuará a soma agregando pelo campo bairro. A figura
13 mostra o detalhamento do estágio de agregação.
43
Figura 12 - Datastage Job de Transformação 2
Figura 13 – Datastage Job de Agregação
4.3.2 Talend
44
a) Extração da tabela Pessoa
A tarefa de extração no Talend foi simples. O primeiro passo foi a
configuração da conexão com o banco de dados Oracle. A figura 14 destaca a
configuração efetuada com o Oracle:
Figura 14 - Talend conexão com banco Oracle
Depois de configurada a conexão banco, podemos escolher o estágio de
Oracle na aba Base de Dados, como ilustrado na figura 15.
Figura 15 - Talend estágio de Input Oracle
45
O mapeamento dos campos nos estágios podem ser feitas de maneira
automática. Quando escolhemos a conexão com o banco, podemos preencher o
nome da tabela, e clicar na opção “Guess Schema”, os nomes dos campos e tipos
de dados são preenchidos automaticamente. O mesmo funciona quando clicamos
na opção “Guess Query”, a query é preenchida de maneira automática. Para
inserção no PostgreSQL , devemos fazer a configuração com o banco de dados de
maneira muito similar a feita com o Oracle anteriormente, a figura a seguir mostra
um exemplo.
Figura 16 - Talend conexão com banco PostgreSQL
Depois de configurada a conexão com os dois bancos, conectamos os banco
e os schemas serão sincronizados. Quando estamos escrevendo em um banco
podemos solicitar inclusive que a tabela seja criada. A figura 17 mostra o job de
extração da tabela pessoa configurado e pronto para ser executado.
46
Figura 17 - Talend Job Extração Pessoa
b) Extração da tabela Edificacao
As demonstrações feitas anteriormente para a tabela pessoa também são
válidas para qualquer outra tabela do banco. É importante salientar que algumas
tabelas no Oracle possuem o tipo de dados sem tamanho (number), no estágio de
postgreSQL os que possuirá a tabela alvo, o tamanho do campo é obrigatório.
A figura 18 demonstra a estrutura do job de extração da tabela edificação.
Figura 18 - Talend Extração tabela edificacao
47
c) Transformação 1 – Carregar tabela Imovel_Avaliado
Como proposto anteriormente, unimos diversas tabelas, com intuito de
mapear dificuldades durante um processo de transformação. Os estágios de join do
Talend possuem conexão somente com dois links por vez. As figuras a seguir
demonstram respectivamente a configuração de batimento de chaves no estágio de
join, e o job de transformação de resultado.
Figura 19 - Talend estágio de Join - chaves
48
Figura 20 - Talend Job de Transformação 1
d) Transformação 2 – Agregação de dados Imovel_Avaliado
A segunda transformação é na verdade uma agregação de dados. Usamos
um estágio de agregação, configurando as colunas que servirão de agrupamento e
também qual coluna armazenará o novo resultado. Isso está ilustrado na figura 21.
Figura 21 - Talend estágio de agregação
A figura 22 mostra o resultado final do job de agregação.
49
Figura 22 - Talend Job de agregação
4.3.3 Apatar
a) Extração da tabela Pessoa
A extração da tabela pessoa no Apatar foi simples, como visto no exemplo da
ferramenta anterior também o primeiro passo é fazer a conexão com o banco de
dados, para o nosso caso de estudo, com o conector Oracle:
50
Figura 23 - Apatar conexão com banco Oracle
E na tela seguinte basta escolher qual tabela será a tabela fonte, neste caso,
a tabela pessoa. Após o termino da configuração do conector de banco de dados
fonte, é necessário fazer o mesmo para o conector do banco de dados de destino.
Uma vez que conectores fonte e destino estiverem configurados, é possível fazer o
mapeamento das colunas fonte e destino através do operador Transform.
Este mapeamento é feito de maneira manual, o que pode ser bem trabalhoso para
uma tabela que contenha muitas colunas.
Abaixo podemos ver o mapeamento das colunas no Transform:
Figura 24 – Apatar mapeamento de colunas
A nomenclatura dos estágios é feita de maneira automática pelo Apatar, e
esta nomenclatura especifica de cada estagio é muito útil na leitura de logs gerados
a partir do processamento do job.
A figura abaixo mostra o job finalizado e pronto para ser executado:
51
Figura 25 - Apatar Extração tabela pessoa
a) Extração da tabela Edificacao
Para fazer a carga da tabela edificacao foi necessário criar um job
exatamente como vemos anteriormente. Apenas temos que novamente mapear
todas as colunas fonte e destino. Abaixo temos o job para a carga da tabela
edificacao criado:
52
Figura 26 - Talend Extração tabela edificacao
b) Transformação 1 – Carregar tabela Imovel_Avaliado
Assim como o Talend, o Apatar também possui apenas dois links para joins.
Outra dificuldade encontrada foi que o Apatar não faz multiplicação ou divisão de
valores. Então tivemos que criar uma tabela staging no PostgreSQL para carregar o
resultado dos joins e então acrescentamos mais um conector PostgreSQL onde
fizemos a multiplicação das colunas VALOR e NRAREAGEO através de uma query,
conseguindo assim carregar os dados do caso proposto na tabela imóvel_avaliado.
53
Figura 27 - Apatar Job de Transformação 1
c) Transformação 2 – Agregação de dados Imovel_Avaliado
Não encontramos dificuldades para fazer esta agregação no Apatar. O
estágio de criação de arquivos é muito intuitivo.
Na figura 28 podemos ver o job criado e pronto para ser executado:
54
Figura 28 - Apatar job de agregação
4.4 Resultados
4.4.1 Avaliação das Ferramentas
Para avaliação das ferramentas de ETL, usaremos como guia as normas
sobre qualidade de produto de software ISO/IEC 9126 e 14598 – 2000. A avaliação
do produto de software tem sido uma das formas empregadas por organizações que
produzem ou adquirem software para obtenção de maior qualidade nestes produtos,
sem ele produtos completos ou partes a serem integradas num sistema
computacional mais amplo.
Em nossa avaliação utilizaremos o modelo que qualidade definido pela norma
9126.
a) Qualidade em Uso
55
Qualidade em uso é a visão de qualidade do usuário e é medido pelo efeito
do uso do software. O modelo de Qualidade para Qualidade em Uso faz a avaliação
de quanto o usuário pode atingir seus objetivos em um ambiente, sem medir as
propriedades do produto de software. Esse modelo possui quatro características de
qualidade: Efetividade, Produtividade, Segurança e Satisfação.
Figura 29 – Qualidade de Uso
• Efetividade: capacidade do produto de software de permitir ao usuário
atingir metas específicas com acurácia e completude, em um contexto
de uso específico;
• Produtividade: capacidade do produto de software de permitir que
seus usuários empreguem quantidade adequada de recursos em
relação à efetividade alcançada em um contexto de uso específico;
• Segurança: capacidade do produto de software de apresentar níveis
aceitáveis de riscos de danos a pessoas, negócios, software,
propriedade ou ambiente em um contexto de uso específico;
• Satisfação: capacidade do produto de software de satisfazer usuários
em um contexto de uso específico;
b) Métricas de Qualidade em Uso – ISO/IEC 9126-4
56
Métricas de qualidade de uso medem quanto um produto de software atende
às necessidades de um usuário específico. As medidas são obtidas pela observação
do uso do produto ou por uma simulação de um ambiente real.
Na tabela abaixo foram descritas as métricas selecionadas na coluna
“Métrica” e na parte superior podemos ver os níveis de pontuação definidos para
nossa avaliação.
Tabela 5 – Seleção de Métricas
57
Abaixo criamos alguns gráficos para melhor visualização dos resultados
acima descritos:
4.4.2 Efetividade
Gráfico 1 – Efetividade
a) Log de erro de fácil compreensão:
Talend: Como o Talend é uma ferramenta desenvolvida em Java os erros que
aparecem no log são específicos do Java, portando se o usuário não possui um
conhecimento em Java a compreensão destes erros no log não é tão simples.
Apatar: O tratamento de erros do Apatar tornou a compreensão simples, a
maioria dos erros encontrados em nosso experimento foi de fácil compreensão e
para aqueles erros que não eram tão simples, podemos encontrar uma melhor
descrição e como resolver no site de suporte do Apatar, um site em formato wiki ou
em um fórum especifico do Apatar.
Datastage: O Datastage mostra um código de erro e uma lista de código de
erros pode ser encontrada no site de IBM.
b) Possui GNU General Public License – Software livre:
O Apatar e o Talend são classificados como software livre e possui GNU
General Public License, o que garante a liberdade de distribuição e modificações em
todas as versões de um programa, garantindo que o software ainda seja distribuído
livremente para todos os usuários interessados, conforme descrito anteriormente, na
sessão de Categorias de software livre.
c) Operador Join suporta mais que duas tabelas:
58
O resultado do Apatar e do Talend para esta métrica foi insatisfatório, pois
estes dois softwares não possibilitam fazer joins de mais que duas tabelas em um
mesmo operador join, o que torna o desenvolvimento de um job com vários joins
muito mais trabalhos, pois precisamos fazer os joins em utilizando vários operadores
joins, o resultado de um join com 2 tabelas é a entrada para um segundo join, e
assim por diante.
O Datastage permite fazer joins com diversas tabelas utilizando apenas um
único operador join, o que torna a criação de um job muito mais rápida.
d) Possui diversos tipos de operadores como join, filter:
O Datastage é a ferramenta que possui o maior número de operadores entre
as ferramentas avaliadas, esta característica facilita o desenvolvimento de um job
além de poder diminuir o seu tempo de execução.
e) Conexão ODBC genérica:
As três ferramentas avaliadas possuem esta funcionalidade. Esta
funcionalidade auxilia na conexão com outros bancos de dados que possam não
possuir um conector específico na ferramenta. Como foi o caso do Datastage, este
não possui um conector específico para PostgreSQL, porém a conexão tornou-se
possível utilizando um conector ODBC.
f) Faz conexão com a maioria dos bancos de dados:
Todas as três ferramentas avaliadas tiveram um resultado satisfatório, porém
o Talend é a ferramenta que possui a maior quantidade de conectores com
diferentes tipos de bancos de dados.
g) Faz diversos tipos de agregações:
O resultado desta avaliação para o Apatar foi parcialmente satisfatório pois
possui algumas limitações como:
Não faz multiplicação ou divisão de valores, por exemplo, caso seja
necessário multiplicar a coluna A pela coluna B de uma tabela para gerar um novo
campo, isto tem que ser feito através de SQL, o resultado deve ser inserido em uma
tabela “staging” e então extraído novamente se for necessário fazer alguma outra
agregação ou transformação.
h) Diferentes plataformas:
O resultado desta avaliação foi totalmente satisfatório para as três
ferramentas, pois todas eles podem ser instaladas independentemente do sistema
operacional utilizado.
59
i) Sem necessidade de codificação:
O Talend necessita de alguma codificação para certos estágios ou
operadores, a linguagem utilizada deverá ser o Java.
j) Fácil utilização:
Todas as ferramentas avaliadas são de fácil utilização, não é necessário um
treinamento prévio para a criação de processos simples.
4.4.3 Produtividade
Gráfico 2 – Produtividade
a) Agendamento de processos:
É possível agendar processos nas três ferramentas utilizadas.
O agendamento de processos no Apatar é feito de maneira simples, utilizando
a mesma ferramenta onde o processo é criado.
No Datastage o agendamento é feito via Datastage Director.
b) Tempo para fazer mapeamento em tabelas com mais de 20
colunas:
O resultado foi insatisfatório para o Apatar, pois o mapeamento é feito de
maneira manual, coluna a coluna, o que demanda muito tempo para tabelas com
diversas colunas.
Já o mapeamento de colunas no Datastage e Talend pode ser feito de
maneira automática.
c) Tempo para criar um
complexidade alta:
processo
com
transformação
de
60
Definimos que um processo de complexidade alta teria quinze operadores ou
mais. Sendo assim o Datastage teve uma melhor performance, pois possui o maior
número de operadores e as colunas podem ser propagadas de estágio a estágio,
sem a necessidade de muito trabalho manual.
O Apatar não faz propagação de colunas de maneira automática.
d) Tempo para criar um processo
complexidade média:
com
transformação
de
Definimos que um processo de complexidade média teria de dez a quinze
operadores. Nesta avaliação o Datastage ainda teve a melhor performance devido a
quantidade de operadores e menor trabalho manual.
e) Tempo para criar um processo simples:
Definimos que um processo de complexidade simples teria menos que dez
operadores, neste caso o Talend teve a melhor performance na avaliação, devido a
facilidade e rapidez com que um processo deste nível pode ser criado, sua
quantidade de operadores ou funcionalidades foi bastante adequada.
4.4.4 Segurança
Gráfico 3 – Segurança
a) Senhas dos conectores de banco de dados são criptografadas:
As três ferramentas avaliadas possuem esta finalidade. Como estas
ferramentas fazem conexão direta com bancos de dados, dependendo do negócio
ou dados acessados, estes podem ser confidencias, portanto esta é uma
funcionalidade importante.
b) Software exige usuário e senha:
Apenas o Datastage exige usuário e senha, estas sendo os mesmos que os
do sistema operacional onde a ferramenta esta instalada.
61
4.4.5 Satisfação
Gráfico 4 – Satisfação
a) Satisfação geral:
O nível de satisfação do Talend levando em consideração os processos
criados neste experimento pode ser comparado ao nível de satisfação Datastage.
Lembrando que o Talend é uma ferramenta de software livre, e este atendeu nossas
necessidades e não tem custo, o que torna o Talend uma ferramenta adequada para
negócios onde um grande investimento em uma ferramenta de ETL não é viável.
O nível de satisfação do Apatar foi satisfatório, as características que mais
deixaram a desejar foram como mencionado anteriormente a necessidade de
trabalho manual e a ausência de alguns operadores que necessitávamos.
O Datastage é uma ferramenta muito utilizada no mercado e já bastante
consagrada, sendo muito estável, porem com custo elevado para certos negócios.
b) Treinamento presencial disponível
Todas as ferramentas avaliadas possuem treinamento presencial disponível e
mais detalhes podem ser facilmente encontrados em seus web sites.
c) Documentação cobre todas as funcionalidades:
A documentação do Datastage e do Apatar foram as melhores nesta
avaliação. Com relação ao Apatar, todas as dificuldades encontradas puderam ser
encontradas na documentação disponível em seu web site.
d) Documentação disponível:
O Datastage e o Apatar mais uma vez foram as melhores nesta avaliação.
e) Interface do usuário é intuitiva:
62
Todas as ferramentas avaliadas são totalmente intuitivas.
63
5. CONSIDERAÇÕES FINAIS
O exercício de qualquer profissão é determinante no espaço social e no
mercado de trabalho. Os profissionais de tecnologia necessitam se atualizar
constantemente. A cada ano o numero de ferramentas livres e de código aberto
aumenta, o que traz muitos benefícios a toda a sociedade, principalmente para a
área acadêmica que ganha com a experiência.
Com proposta de avaliar ferramentas de ETL, comparamos três ferramentas,
das quais duas não tem custo de licença. A ferramenta deve ser escolhida de acordo
com o tamanho da aplicação e característica do negócio.
Ficamos satisfeitos em encontrar disponibilidade de ferramentas de software
livre e de boa qualidade para processos de ETL. O Talend em especial surpreendeu
nesse aspecto, uma vez que desenvolvido em Java, facilita o entendimento de erros
para aqueles que já possuem um bom conhecimento nessa linguagem.
A partir deste relato de caso estabeleceu-se uma metodologia para avaliação
de ferramentas de ETL. O usuário que necessita fazer uma escolha de ferramenta,
poderá checar o quadro de resultados que disponibilizamos e fazer uma melhor
escolha.
É importante também ressaltar o conhecimento adquirido na aprendizagem de
diferentes ferramentas. O fato de não conhecermos a fundo duas das três
ferramentas utilizadas, nos trouxe a oportunidade de leitura e absorção de
conhecimentos relacionados a todo o processo desenvolvido.
64
6. REFERÊNCIA
DATE, C.J.Introdução a Sistemas de Bancos de Dados,8. Ed. Rio de Janeiro.
Elsevier. 2003
InMon, Willian H. Introduction to the Government Information Factory (GIF).
Inmon Associates Inc.. 2003
CARVALHO. Tereza Cristina Melo de Brito.(org). Gerenciamento de Redes - uma
abordagem de sistemas abertos. São Paulo - Brasília. BRISA - TELEBRÁS.
Makron Books. 1993
CHESWICK, W.; BELLOVIN, S. M. ; RUBIN. A. D.; Firewalls e Segurança na
Internet. 2.ed. Porto Alegre. Bokman. 2005
COMER, D. E., Redes de Computadores, Porto Alegre, 2001: Bookman.
FERRARI, Antônio Martins. Telecomunicações: Evolução e Revolução. São
Paulo: Érica, 1991.
APATAR. Why Apatar. Apatar, 2011. Disponível em:
http://apatar.com/why_apatar.html. Acessado em 16/11/2011.
JUNIOR, EDSON ALMEIDA. História e Evolução da Oracle no Mundo. São Paulo,
2008. Disponível em:
http://www.consulting.com.br/edsonalmeidajunior/admin/downloads/
TALEND. Talend Open Studio. Disponível em: http://www.talend.com/productsdata-integration/talend-open-studio.php. Acessado em 20/11/2011
65
TALEND. Installation Guide. Disponível em:
http://www.talend.com/resources/documentation.php. Acessado em 10/11/2011
DATASTAGE. Infosphere Datastage. Disponível em: http://www142.ibm.com/software/products/br/pt/ibminfdata/. Acessado em 20/11/2011.
ORACLE. A história do Oracle: Inovação, Liderança e Resultados. Disponível
em: http://www.oracle.com/br/corporate/press/story-346137-ptb.html
ELMASRI, R.; Navathe, S. Sistema de Banco de Dados, 4 ed. São Paulo, Pearson
Addison Wesley,2005.
TELLES, Fabio, IKE, Fernando. Migração Oracle para PostgreSQL. São Paulo,
2008. Disponível em: http://www.slideshare.net/telles/migrao-de-oracle-parapostgresql-fisl-presentation. Acessado em 25/10/2011.
SOUZA, Evandro Pontes. Migração de Banco de Dados Oracle para PostgreSQL.
São Paulo, 2007. Disponível em: http://www.cnptia.embrapa.br/content/07107-migrao-de-banco-de-dados-oracle-para-postgresql.html. Acessado em 27/10/2011.
ITL Education Solutions Limited. Introduction to Database Systems, 1 ed. New
Dheli, Pearson Education India, 2008.
SOFTWARE LIVRE. Categorias de Software Livres e não Livres. Disponível em
http://www.gnu.org/philosophy/categories.pt-br.html. Acessado em 15/11/2011
ISO/IEC 9126-1: 2000. Software engineering– Software product quality- Part 1:
Quality Model.
ISO/IEC 9126-2: 2000. Software engineering– Software product quality- Part 2:
External Metrics.
66
ISO/IEC 9126-3: 2000. Software engineering– Software product quality- Part 3:
Internal Metrics.
ISO/IEC 9126-4: 2000. Software engineering– Software product quality- Part 4:
Quality in Use Metrics.
67
7. ANEXOS
ANEXO A – DDL Tabelas usadas no experimento
-- Sequence: seq_territorial
-- DROP SEQUENCE seq_territorial;
CREATE SEQUENCE seq_territorial
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1069344
CACHE 20;
ALTER TABLE seq_territorial OWNER TO postgres;
-- Table: territorial
-- DROP TABLE territorial;
CREATE TABLE territorial
(
cdquadrante integer NOT NULL,
cdquadricula integer NOT NULL,
cdsetor integer NOT NULL,
cdquadra integer NOT NULL,
cdlote integer NOT NULL,
id_taxa smallint NOT NULL,
id_calcada smallint NOT NULL,
id_superficieprincipal smallint NOT NULL,
id_forma smallint NOT NULL,
id_podologia smallint NOT NULL,
68
id_topografia smallint NOT NULL,
id_irreglote smallint NOT NULL,
id_irregocupacao smallint NOT NULL,
id_ocupacao smallint NOT NULL,
id_ocupacaolote smallint NOT NULL,
id_situacao smallint NOT NULL,
id_patrimonio smallint NOT NULL,
id_limitefrontal smallint NOT NULL,
cdloteamento character varying(127),
cdreduzido numeric,
dtcancelamento integer,
nrmatricula bigint,
nroficio bigint,
nrincra numeric,
nrzonaaliquota integer,
nrzonasolo integer,
nrzonasetor smallint,
dsobservacoes character varying(300),
nrendereco numeric,
dscomplementoend character varying(30),
nrareaterreno numeric(11,2),
nrareatributavel numeric(11,2),
cdpermuso character varying(1),
nroficiolivro integer,
nroficiofolha integer,
nrtestadas smallint,
dsprocdesmembunific character varying(15),
processamento_id numeric,
nrtestadapavimentacao numeric,
nrtestadailuminacao numeric,
flmeiofio boolean,
id_tpcoletalixo smallint,
id_bairro integer,
territorial_id integer DEFAULT nextval('seq_territorial'::regclass),
69
lote_loteamento character varying(20),
dtbaldio integer,
vuface numeric,
quadra_loteamento character varying(20),
dsprocdesmembramento character varying(15),
nrtestadaprincipal numeric,
carga_realizada numeric,
cdestado integer DEFAULT 0,
autonoma_baldio integer,
dtexercicio integer,
dtimplantacao integer,
updated_at timestamp(6) without time zone
)
WITH (OIDS=FALSE);
ALTER TABLE territorial OWNER TO postgres;
-- Index: territorial_idx1
-- DROP INDEX territorial_idx1;
CREATE INDEX territorial_idx1
ON territorial
USING btree
(cdquadrante, cdquadricula, cdsetor, cdquadra, cdlote);
-- Index: territorial_idx2
-- DROP INDEX territorial_idx2;
CREATE INDEX territorial_idx2
ON territorial
USING btree
(cdquadrante, cdquadricula, cdsetor, cdquadra, cdlote, processamento_id);
70
-- Table: edificacao
-- DROP TABLE edificacao;
CREATE TABLE edificacao
(
cdquadrante integer NOT NULL,
cdquadricula integer NOT NULL,
cdsetor integer NOT NULL,
cdquadra integer NOT NULL,
cdlote integer NOT NULL,
cdunidadeautonoma integer NOT NULL,
id_testada bigint NOT NULL,
nrmatricula bigint,
nroficio smallint,
dscomplemento character varying(25),
livro integer,
folha integer,
id_taxa numeric,
dtimplantacao integer,
dtexercicio integer,
dtcancelamento integer,
nrareaprivcondhor numeric,
nrareacomumcondhor numeric,
nrfracaoidealcond numeric(12,4),
area_lote numeric(12,4),
nrimovel numeric,
nrmetrica numeric,
requerimento_itbi character varying(30),
updated_at timestamp(6) without time zone
)
71
WITH (OIDS=FALSE);
ALTER TABLE edificacao OWNER TO postgres;
-- Table: unidadeavaliacao
-- DROP TABLE unidadeavaliacao;
CREATE TABLE unidadeavaliacao
(
cdundavaliacao integer NOT NULL,
cdunidadeautonoma integer NOT NULL,
cdlote integer NOT NULL,
cdquadra integer NOT NULL,
cdsetor integer NOT NULL,
cdquadricula integer NOT NULL,
cdquadrante integer NOT NULL,
id_forro smallint NOT NULL,
id_instsanitaria smallint NOT NULL,
id_sotao smallint NOT NULL,
id_insteletrica smallint NOT NULL,
id_padrao smallint NOT NULL,
id_elevador smallint NOT NULL,
id_acabamentointerno smallint NOT NULL,
id_revestimentointerno smallint NOT NULL,
id_disposicao smallint NOT NULL,
id_condicaoedificacao smallint NOT NULL,
id_revestimentoexterno smallint NOT NULL,
id_piso smallint NOT NULL,
id_acabamentoexterno smallint NOT NULL,
id_tipocobertura smallint NOT NULL,
id_cobertura smallint NOT NULL,
72
id_matpredominante smallint NOT NULL,
id_estrutura smallint NOT NULL,
id_regutilizacao smallint NOT NULL,
id_respuso smallint NOT NULL,
id_conservacao smallint NOT NULL,
id_locpredio smallint NOT NULL,
id_afastamentos numeric,
id_esquadrias smallint NOT NULL,
id_loclote smallint NOT NULL,
id_uso smallint NOT NULL,
id_tipologia smallint NOT NULL,
id_condominio numeric,
id_bloco numeric,
dscomplemento character varying(25),
nrtotalpavimentos smallint,
nrpavunidade smallint,
nrpavlocalizacao smallint,
nranoconstrucao integer,
nranoultreforma integer,
nranoimplantacao integer,
brareaundaval numeric(11,2),
nrfracaoideal numeric(12,4),
nrareageo numeric(11,2),
nrtestada numeric(11,2),
dtexercicio numeric,
dtimplantacao integer,
dtcancelamento integer,
dtlicenca timestamp without time zone,
nrlicenca integer,
dtvistoria timestamp without time zone,
nrvistoria integer,
dtdemolicao timestamp without time zone,
nrdemolicao integer,
nrcodmuncontrib integer,
73
dsrazaosocial character varying(255),
nrandar smallint,
dsapto character varying(10),
dssala character varying(10),
dsbox character varying(10),
tr_fi_terreno_cond numeric,
id_cobranca numeric,
cdreduzido numeric,
processo_cancelamento character varying(40),
nrprojeto integer,
anoprojeto integer,
unificacao character varying(1),
updated_at timestamp(6) without time zone
)
WITH (OIDS=FALSE);
ALTER TABLE unidadeavaliacao OWNER TO postgres;
-- Index: undaval_idx_aut
-- DROP INDEX undaval_idx_aut;
CREATE INDEX undaval_idx_aut
ON unidadeavaliacao
USING btree
(cdquadrante, cdquadricula, cdsetor, cdquadra, cdlote, cdunidadeautonoma);
-- Table: pessoa
-- DROP TABLE pessoa;
CREATE TABLE pessoa
(
74
id_pessoa serial NOT NULL,
nmrazaosocial character varying(255),
nmfantasia character varying(255),
tppessoa bigint,
nrrg character varying(20),
dtnascimento timestamp without time zone,
nrtelefone bigint,
nrfax bigint,
dsemail character varying(100),
nmcontato character varying(35),
nrcpfcnpj character varying(30),
nrinscricaomunicipal character varying(30),
habilitado character varying(1),
CONSTRAINT pessoa_pkey PRIMARY KEY (id_pessoa)
)
WITH (OIDS=FALSE);
ALTER TABLE pessoa OWNER TO postgres;
-- Table: pessoa_edificacao
-- DROP TABLE pessoa_edificacao;
CREATE TABLE pessoa_edificacao
(
cdunidadeautonoma integer NOT NULL,
cdlote integer NOT NULL,
cdquadra integer NOT NULL,
cdsetor integer NOT NULL,
cdquadricula integer NOT NULL,
cdquadrante integer NOT NULL,
tpresponsabilidade smallint NOT NULL,
id_pessoa integer NOT NULL
)
75
WITH (OIDS=FALSE);
ALTER TABLE pessoa_edificacao OWNER TO postgres;
-- Table: pessoa_territorial
-- DROP TABLE pessoa_territorial;
CREATE TABLE pessoa_territorial
(
cdlote integer NOT NULL,
cdquadra integer NOT NULL,
cdsetor integer NOT NULL,
cdquadricula integer NOT NULL,
cdquadrante integer NOT NULL,
tpresponsabilidade smallint NOT NULL,
id_pessoa integer NOT NULL
)
WITH (OIDS=FALSE);
ALTER TABLE pessoa_territorial OWNER TO postgres;
CREATE TABLE imovel_avaliado_staging
(
razaosocial character varying(255),
bairro character varying(255),
valor numeric,
nraerageo numeric
)
WITH (OIDS=FALSE);
ALTER TABLE imovel_avaliado_staging OWNER TO postgres;
CREATE TABLE imovel_avaliado
(
76
razaosocial character varying(255),
bairro character varying(255),
valoravaliacao numeric
)
WITH (OIDS=FALSE);
ALTER TABLE imovel_avaliado OWNER TO postgres;
CREATE TABLE bairro
(
id_bairro serial NOT NULL,
nmbairro character varying(60),
CONSTRAINT bairro_pkey PRIMARY KEY (id_bairro)
)
WITH (OIDS=FALSE);
ALTER TABLE bairro OWNER TO postgres;
CREATE TABLE valores_imoveis
(
inscricao character varying(510),
quadrante numeric,
quadricula numeric,
setor numeric,
quadra numeric,
lote numeric,
valor numeric
)
WITH (OIDS=FALSE);
ALTER TABLE valores_imoveis OWNER TO postgres;
77
ANEXO B – Ferramenta Ora2pg
Durante nosso estudo, tivemos oportunidade de conhecer o ora2pg, que é uma
ferramenta especifica para migração entre os bancos Oracle e PostgreSQL. Não
fizemos a utilização de tal ferramenta, pois o propósito principal do trabalho é avaliar
as ferramentas de ETL. O ora2pg não faz agregação ou transformação de dados,
por isso não pode ser comparado com as demais ferramentas de ETL. O ora2pg foi
criado no ano 2000, é uma ferramenta livre para exportar um schema de base de
dados Oracle para um schema PostgreSQL compatível.
Ele conecta com a base de dados Oracle, extrai sua estrutura, gera um script
SQL para ser carregado em uma base de dados PostgreSQL.
Ora2Pg consiste em um script Perl (ora2pg) e um modulo Perl (Ora2Pg.pm).
a) Tipos de exportações possíveis
• Table com constraints
• Tablespace
• Sequence
• Index
• Trigger
• Grant
• Function
• Procedure
• Package
• Partition
• Dados
b) Características Inclusas
• Exportar schema (tabelas, views, sequences, index), com chave
primaria, estrangeira, unique e check constraints
• Exportar grants/privilegios para usuarios ou grupos
• Exportar uma seleção de tabelas (especificando o nome das tabelas)
78
• Exportar um schema Oracle prara um schema PostgreSQL 7.3+
• Exportar funções pré definidas, triggers, procedures e packages
• Exportar partição Oracle
• Export dados completos ou utilizando clausula WHERE
• Suporte para objeto Oracle BLOB como PG BYTEA
•
Exportar views do Oracle como PG tables
• Exportar tipos definidos por usuario do Oracle
• Ajuda para converter código PLSQL para PLPGSQL (um pouco de
trabalho manual inda é necessário)
• Funciona em qualquer plataforma.
c) Histórico
• 2000: criado
• Lançamento oficial: Maio/2001
• 2002: Ora2Pg foi adicionado ao repositório contrib do PostgreSQL v7.2
• 2006: removido do repositório do PostgreSQL v8.2
• 2008: Ora2Pg é movido para PgFoundry
• 2010: Website do Ora2Pg passa a ser http://ora2pg.darold.net/
• 2011: Lançamento disponível em SourceForge.net
• Versão atual: Ora2Pg 8.8
d) Código
• Ora2Pg.pm - Modulo Perl usado para fazer interface com o Oracle que
permite toda a migração
79
• Ora2Pg/PSQL.pm - Modulo usado para converter código Oracle
PL/SQL em código PLPGSQL
• Ora2pg – Perl script used as frontend to the
• Ora2pg.conf - Arquivo de configuração usado para definir o
comportamento do script Perl ora2pg e as ações a serem executadas
e) Pré requisitos
• Oracle versão igual ou superior a 8i client ou server
• PostgreSQL versão igual ou superior a 8.4 client or server
• Perl 5.8+ e modulo Perl DBI/DBD Oracle
• Windows: Strawberry Perl 5.10+
Download