UNIVERSIDADE COMUNITÁRIA REGIONAL DE CHAPECÓ
CENTRO TECNOLÓGICO
CURSO DE BACHAREL EM CIÊNCIA DA COMPUTAÇÃO
UM PROTÓTIPO DE BANCO DE DADOS
DISTRIBUÍDOS (CASO EXPRESSO SÃO MIGUEL)
CESAR ANTÔNIO BORTOLINI
CHAPECÓ (SC), NOVEMBRO DE 2004.
César Antonio Bortolini
UM PROTÓTIPO DE BANCO DE DADOS
DISTRIBUÍDOS (CASO EXPRESSO SÃO MIGUEL)
PROJETO APRESENTADO À UNIVERSIDADE COMUNITÁRIA REGIONAL
DE CHAPECÓ, PARA AVALIAÇÃO DO TCC, COMO PARTE DOS REQUISITOS À
OBTENÇÃO DO GRAU DE BACHAREL EM CIÊNCIA DA COMPUTAÇÃO
Orientador: Mônica Tissiani De Toni Pereira
CHAPECÓ (SC), NOVEMBRO DE 2004.
AGRADECIMENTOS
Tenho enorme prazer e satisfação de agradecer as pessoas que fizeram parte
de mais uma fase de minha vida. Por isso gostaria de começar meus agradecimentos
nesta ordem:
Aos meus pais pela oportunidade oferecida e a dedicação prestada desde o
inicio de minha caminhada.
A
minha namorada Camila Farias, pelo carinho, incentivo, compreensão e
apoio quando tive dificuldades.
Agradeço também aos meus colegas de graduação pela amizade e pelo apoio
durante todo esse período.
Aos professores pela dedicação e amizade durante os anos do curso, e em
especial a minha professora orientadora pela disposição compreensão e amizade
durante a realização deste trabalho.
E por fim a Deus por que sem ele eu não estaria aqui neste dia tão importante
da minha vida.
i
SUMÁRIO
LISTA DE FIGURAS ................................................................................................................... IV
LISTA DE ABREVIATURAS E SÍMBOLOS .............................................................................. VI
ABSTRACT ................................................................................................................................. IX
1
INTRODUÇÃO .................................................................................................................... 11
1.1 OBJETO DE ESTUDO .................................................................................................... 12
1.2 OBJETIVOS..................................................................................................................... 12
1.2.1
Gerais ............................................................................................................... 12
1.2.2
Específicos ...................................................................................................... 12
1.3 JUSTIFICATIVA E PROBLEMATIZAÇÃO...................................................................... 13
2
SISTEMAS DISTRIBUÍDOS............................................................................................... 14
2.1
2.2
2.3
2.4
2.5
ARQUITETURAS PARALELAS: ..................................................................................... 15
CARACTERÍSTICAS....................................................................................................... 16
TIPO DE SISTEMAS DISTRIBUÍDOS............................................................................ 17
ARQUITETURA DE SISTEMAS DISTRIBUÍDOS .......................................................... 18
COMUNICAÇÃO EM SISTEMAS DISTRIBUÍDOS........................................................ 20
2.5.1
Redes e Sistemas Distribuídos..................................................................... 21
2.6 RPC (REMOTE PROCEDURE CALL) ........................................................................... 23
3
REDES DE COMPUTADORES ......................................................................................... 25
3.1 TIPOS DE REDES .......................................................................................................... 25
3.2 PROTOCOLOS ............................................................................................................... 26
4
BANCO DE DADOS ........................................................................................................... 28
4.1 BANCO DE DADOS E SGDBS....................................................................................... 28
4.2 MODELO DE BANCO DE DADOS................................................................................. 31
4.2.1
Modelo Conceitual.......................................................................................... 32
4.2.2
O Modelo Entidade-Relacionamento ........................................................... 33
4.2.3
Entidades e conjuntos de entidades............................................................ 33
4.2.4
Relacionamento e conjuntos de relacionamentos..................................... 34
4.2.5
Atributos .......................................................................................................... 34
4.2.6
Cardinalidade .................................................................................................. 35
4.2.7
Modelo Lógico ................................................................................................ 36
4.2.8
Modelo Físico.................................................................................................. 37
4.2.9
Generalização e Especialização ................................................................... 37
4.3 O MODELO RELACIONAL ............................................................................................. 38
ii
5
Estrutura do banco de dados........................................................................ 39
4.3.2
Chaves ............................................................................................................. 39
4.3.3
Domínios.......................................................................................................... 40
ÁLGEBRA RELACIONAL.................................................................................................. 41
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
6
4.3.1
SELEÇÃO ........................................................................................................................ 41
PROJEÇÃO ..................................................................................................................... 42
PROJEÇÃO E SELEÇÃO ............................................................................................... 42
OPERAÇÃO DE UNIÃO.................................................................................................. 43
DIFERENÇA .................................................................................................................... 43
INTERSECÇÃO............................................................................................................... 43
JUNÇÃO .......................................................................................................................... 44
PRODUTO CARTESIANO.............................................................................................. 44
DIVISÃO .......................................................................................................................... 44
SISTEMA DE BANCO DE DADOS DISTRIBUÍDOS ........................................................ 46
6.1 CARACTERÍSTICAS DE SBDDS................................................................................... 49
6.1.1
Gerenciamento transparente de dados Distribuídos................................ 49
6.1.2
Confiabilidade em transações distribuídas................................................. 51
6.1.3
Desempenho otimizado ................................................................................. 52
6.1.4
Expansão de sistemas mais fácil ................................................................. 52
6.2 PROBLEMAS E DIFICULDADES DA DISTRIBUIÇÃO DE BANCO DE DADOS ......... 53
6.3 RECUPERAÇÃO............................................................................................................. 54
6.3.1
Controle de Transações e Recuperação ..................................................... 54
6.3.2
Arquivos de Log ............................................................................................. 55
6.3.3
Ponto de checagem........................................................................................ 56
6.4 CAUSAS DE FALHAS..................................................................................................... 57
6.4.1
Falha do local da transação .......................................................................... 57
6.4.2
Falhas em sites ............................................................................................... 58
6.4.3
Falhas de mídia............................................................................................... 58
6.4.4
Falhas na rede de comunicação................................................................... 58
6.5 PROTOCOLOS DE EFETIVAÇÃO................................................................................. 59
6.5.1
Protocolo de efetivação em duas fases (2PC) ............................................ 59
6.5.2
7
Protocolo de efetivação em três fases (3PC).............................................. 60
ARQUITETURA DE SGBDS DISTRIBUÍDOS................................................................... 62
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
AUTONOMIA ................................................................................................................... 62
DISTRIBUIÇÃO ............................................................................................................... 63
HETEROGENEIDADE .................................................................................................... 63
SISTEMA CLIENTE-SERVIDOR .................................................................................... 64
SISTEMAS DISTRIBUÍDOS NÃO HIERÁRQUICOS ..................................................... 65
PROJETO DE BANCO DE DADOS DISTRIBUÍDO....................................................... 66
FRAGMENTAÇÃO HORIZONTAL ................................................................................. 69
FRAGMENTAÇÃO VERTICAL ....................................................................................... 72
FRAGMENTAÇÃO HÍBRIDA .......................................................................................... 73
iii
7.10
8
REGRAS DE FRAGMENTAÇÃO ............................................................................ 74
REPLICAÇÃO..................................................................................................................... 76
8.1 REPLICAÇÃO DE DADOS SÍNCRONA......................................................................... 77
8.2 REPLICAÇÃO DE DADOS ASSÍNCRONA.................................................................... 77
8.3 ATUALIZAÇÃO DAS RÉPLICAS .................................................................................... 78
8.3.1
Modelo mestre/escravo.................................................................................. 78
8.3.2
9
Modelo update-anywhere .............................................................................. 78
INTERBASE........................................................................................................................ 81
9.1 IBREPLICATOR .............................................................................................................. 82
9.2 CONFIGURAÇÃO ........................................................................................................... 83
9.2.1
Características adicionais ............................................................................. 84
10
PROTÓTIPO.................................................................................................................... 86
10.1
10.2
10.3
10.4
10.5
10.6
10.7
CONTEXTUALIZAÇÃO DO AMBIENTE................................................................. 86
POR QUE DA DISTRIBUIÇÃO ............................................................................... 86
CRITÉRIOS USADOS PARA FRAGMENTAÇÃO .................................................. 87
PROJETO GLOBAL................................................................................................. 89
PROJETOS LOCAIS ............................................................................................... 89
CONFIGURAÇÃO DA REPLICAÇÃO..................................................................... 89
SOBRE O SISTEMA................................................................................................ 96
11
CONCLUSÃO.................................................................................................................. 98
12
TRABALHOS FUTUROS ............................................................................................... 99
13
REFERÊNCIAS............................................................................................................. 100
14
ANEXOS........................................................................................................................ 102
iv
LISTA DE FIGURAS
Figura 1. Modelo arquitetura de acesso remoto ........................................................................ 18
Figura 2. Arquitetura Cliente-Servidor........................................................................................ 19
Figura 3. Arquitetura cliente-servidor em três camadas ............................................................ 20
Figura 4. Comunicação Cliente Servidor(TANENBUM,1995) .................................................. 22
Figura 6. Modelo OSI.................................................................................................................. 26
Figura 7. Modelo TCP/IP ............................................................................................................ 27
Figura 8. Um Sistema de Banco de Dados................................................................................ 29
Figura 9. Modelo entidade-relacionamento................................................................................ 32
Figura 10. Representação de como uma entidade é especificada em um DER ...................... 34
Figura 11. Representação de um relacionamento..................................................................... 34
Figura 12. Representação de atributos ...................................................................................... 35
Figura 13. Representação de cardinalidade um para um.......................................................... 35
Figura 14. Representação de cardinalidade um para muitos .................................................... 36
Figura 15. Representação de cardinalidade muitos para muitos .............................................. 36
Figura 16. Modelo Lógico ........................................................................................................... 37
Figura 17. Exemplo de Generalização ....................................................................................... 38
Figura 18. Arquitetura de um SGBDD homogêneo (DISTRIBUTED DATABASE SYSTEMS,
p.46) ............................................................................................................................................ 47
Figura 19. Exemplo de um Sistema de Banco de Dados Distribuídos(OZSU; VALDURIEZ,
2001, p.8) .................................................................................................................................... 48
Figura 20(a). Classificação para transação usando pontos de checagem assíncrono ........... 56
v
Figura 20(b). Classificação para transação usando pontos de checagem síncrono. ............... 56
Figura 21. Arquitetura cliente/servidor........................................................................................ 64
Figura 22. Arquitetura servidor/servidor ..................................................................................... 65
Figura 23. Processo do projeto top-down (ÖZSU; VALDURIEZ,2001)..................................... 68
Figura 24. Base de Dados de exemplo de fragmentação horizontal ........................................ 69
Figura 25. Exemplo Fragmentação horizontal ........................................................................... 70
Figura 26. Exemplo de fragmentação horizontal derivada ........................................................ 71
Figura 27. Exemplo de fragmentação vertical............................................................................ 72
Figura 28. Representação fragmentação horizontal.................................................................. 72
Figura 29. Representação fragmentação horizontal.................................................................. 73
Figura 30. Fragmentação híbrida ............................................................................................... 74
Figura 31. Tabela exemplo de fragmentação horizontal ........................................................... 88
Figura 32. Tela de configuração de Base de Dados.................................................................. 90
Figura 33. Base de dados configuradas.................................................................................... 91
Figura 34. Criando um esquema de replicação ......................................................................... 92
Figura 35. Tela de configuração da base de dados de origem ................................................. 93
Figura 36. Tela de definição do esquema de replicação ........................................................... 94
Figura 37. Definição da replicação ............................................................................................. 95
Figura 38. Configuração do intervalo de replicação .................................................................. 96
vi
LISTA DE ABREVIATURAS E SÍMBOLOS
Junção
Junção Externa a Direita
Junção Externa a Esquerda
Semijunção
−
Diferença
÷
Divisão
∩
Intersecção
∪
União
×
Produto Cartesiano
σ
Seleção
π
Projeção
ANSI
AMERICAN NATIONAL STANDARDS INSTITUTE
BD
Banco de Dados
BDD
Banco de Dados Distribuídos
DBA
DATABASE ADMINISTRATOR
DER
Diagrama Entidade Relacionamento
ER
Entidade Relacionamento
IP
Internet Protocol
ISO
INTERNATIONAL STANDARDS ORGANIZATION
SGBD
Sistema Gerenciador De Banco De Dados
vii
SGBDD Sistema Gerenciado de Banco de Dados Destruído
SQL
Struct Query Language
TCP
Transmission Control Protocol
UPD
User Datagram Protocol
viii
RESUMO
O presente trabalho apresenta fundamentos de banco de dados, redes de
computadores, sistema distribuídos e sistema de banco de dados distribuídos com
intuito de desenvolvimento de um protótipo de distribuição e replicação de banco de
dados aplicado ao estudado de caso de uma transportadora. A fim de validar a
pesquisa realizada neste trabalho, será desenvolvido um protótipo aplicando as
técnicas de distribuição e replicação. O estudo de caso na empresa Expresso São
Miguel teve inicio com a necessidade de um sistema distribuído com suporte a
replicação de maneira segura e confiável. A proposta de elaboração de um protótipo
de um sistema de banco de dados distribuído utilizando o sistema gerenciador de
banco de dados (SGBD) Interbase e uma ferramenta de suporte a replicação
IBReplicator. São apresentados neste trabalho as técnica de fragmentação e
alocação de dados utilizadas no protótipo e quais os passos utilizados na replicação
dos dados. Com a aplicação deste trabalho pretende-se aplicar algumas técnicas para
distribuição, alocação e replicação de dados ao longo de uma rede de computadores,
propondo uma solução para a transportadora e deixando uma referencia a trabalhos
futuros.
Palavras-chave: bancos de dados distribuídos, SGBDs, distribuição e fragmentação de dados,
replicação.
ix
ABSTRACT
The following work presents fundaments from databases, computer networks,
distributed systems and databases distributed system with aiming to develop a database
replication and distribution prototype applied to the case study of a transportation company. In
order to validate the research carried through in this work, an archetype will be developed
applying the techniques of distribution and replication. The case study began with the necessity
of a distributed system supporting replication in a secure and trustable manner. The
elaboration proposal of a distributed database system prototype using databases managing
system Interbase (SGBD) and a replication support tool IBReplicator. It is presented in this
work the fragmentation techniques and data allocation used in the prototype and the steps
used in the data replication. With the application of this work, it is intended to apply a few
techniques to distribution, allocation and replication of data throughout a computer network,
proposing a solution for the transportation company and leaving a reference for future works.
Key-words: distributed database, SGBDs, data distribution and fragmentation, replication.
1
INTRODUÇÃO
A evolução da informática e das companhias de telecomunicação nos proporcionam
uma enorme facilidade na comunicação e na transferência de informações. Com esse avanço
e com a capacidade dos sistemas gerenciadores de banco de dados controlarem várias
transações ao mesmo tempo, muitas empresas estão cada vez mais interessadas em ter
controle das informações de maneira centralizada. Porém, os dados podem ser mantidos em
locais diferentes.
No caso desse trabalho, serão estudadas técnicas para fragmentação e alocação de
dados em um sistema de banco de dados distribuído.
Atualmente, a disponibilidade dos dados pode fazer a diferença em uma empresa, ou
seja, no caso de uma transportadora onde a tendência é que se tenha uma descentralização
das unidades de trabalho em locais geograficamente distantes, podendo ser no perímetro de
uma cidade, de um estado ou até mesmo em países diferentes.
Os dados ficam distribuídos, sendo que, cada unidade possui um conjunto de dados
específicos, que podem ser consultados e alterados a qualquer momento para se obter
informações tanto de cunho gerencial quanto administrativo ou para tomada de decisão e
planejamento de metas. Além disso, cada unidade pode acessar informações de outras
unidades ou em um conjunto global de informações, por exemplo, o cadastro de um cliente.
Com esta disponibilidade pode-se ter acesso a informações com maior facilidade e
rapidez, aumentando assim a satisfação do cliente e conseqüentemente à lucratividade da
empresa.
Este trabalho tem como objetivo pesquisar e estudar a distribuição de dados utilizando
técnicas de fragmentação e alocação. Onde alterações feitas no banco de dados original ou
no banco de dados de destino, podem ser atualizadas em conjunto, dispondo de ferramentas
de alta tecnologia e com baixo custo.
O desenvolvimento deste trabalho pretende apresentar resultados efetivos para o
ambiente onde será aplicado o protótipo, fazendo uso de tecnologias recentes. Além disso,
técnicas que envolvam essas tecnologias são pouco utilizadas, principalmente na região
Oeste de Santa Catarina.
Este trabalho está dividido em sete capítulos: o primeiro fala sobre sistemas
distribuídos; o segundo sobre redes de computadores; já o terceiro ressalta o que é banco de
12
dados e os sistemas gerenciadores de banco de dados; o quarto descreve os sistemas de
bancos de dados distribuídos; o quinto explica as arquiteturas de banco de dados distribuídos;
no capítulo seis é apresentado um modelo de projeto de banco de dados distribuídos e o
capítulo sete descreve algumas características e técnicas de replicação de banco de dados.
1.1
OBJETO DE ESTUDO
Levantamento das principais tecnologias de distribuição e replicação de dados em
sistemas de Banco de Dados Distribuídos, especialmente no Sistema Gerenciador de Banco
de Dados (SGBD) Interbase, de tal forma a compreender qual dessas tecnologias aplica-se à
implementação de um banco de dados distribuído para uma transportadora de cargas.
1.2
OBJETIVOS
1.2.1 Gerais
Pesquisar metodologias e técnicas computacionais para sistemas de banco de dados
distribuídos e replicados, visando à modelagem conceitual de banco de dados distribuídos
bem como a construção de um protótipo aplicado à transportadora de cargas e encomendas.
1.2.2 Específicos
•
Levantamento bibliográfico sobre banco de dados, banco de dados distribuídos e sistemas
gerenciadores de bancos de dados distribuídos, sistemas distribuídos e redes de
computadores, visando embasamento teórico necessário ao desenvolvimento do protótipo
proposto.
•
Pesquisar métodos computacionais aplicados à distribuição de dados.
•
Pesquisar métodos computacionais aplicados à replicação de dados.
13
1.3
JUSTIFICATIVA E PROBLEMATIZAÇÃO
Tendo em vista que a empresa, objeto deste estudo, é uma transportadora que atua
em toda a região sul do país. Cada filial tem um banco de dados local que deve ser replicado
para um único banco de dados central. Diante disso, pode-se dizer que é de suma importância
o uso de uma tecnologia confiável para a distribuição e replicação dos dados.
Existe, na atualidade, a necessidade da disponibilização diária dos dados para todas
as filiais, pois através desta integração torna-se possível à entrega das encomendas com
maior agilidade, sendo nos dias de hoje um grande diferencial para empresas do ramo de
transportes.
Atualmente a empresa utiliza-se de um método de replicação import/export em
arquivos texto, este método atende as necessidades básicas da empresa, porém oferece
pouca segurança, deixando a empresa vulnerável e comprometendo assim seu crescimento.
Com a utilização de um banco de dados com suporte na distribuição e com a utilização
de técnicas de fragmentação e alocação de dados, propõe-se a implementação de um
protótipo na empresa, buscando adquirir uma performance desejável e um nível de segurança
adequado.
Os procedimentos metodológicos aplicados no projeto em questão serão: pesquisa em
livros que abordem o tema escolhido, artigos publicados, sites da internet relacionados ao
assunto e com a empresa que representa o banco de dados utilizado. Também busca-se
compreender o sistema computadorizado já existente na empresa e projetar a distribuição e
implementação do protótipo.
2
SISTEMAS DISTRIBUÍDOS
Os primeiros computadores produzidos para uso comercial, tinham uma estrutura
padrão baseada em processador, memória e armazenamento de dados. Devido ao alto custo
dos componentes na época, as capacidades de memória e de discos destes equipamentos
conhecidos como mainframe, eram mínimas se comparadas com equipamentos atuais. Na
evolução têm-se os minicomputadores, os microcomputadores, os computadores pessoais ou
PCs e a interligação dos equipamentos em rede. Essa interligação das máquinas em redes
propiciou o surgimento do conceito de sistemas distribuídos, aproveitando o potencial das
máquinas interligadas.
Um sistema distribuído proporciona ao usuário a impressão de que o software esta
completamente independente e que o hardware são computadores independentes. Isso
somente é possível graças a um conjunto de hardware e software preparados para a interação
de programas, que significa a adaptação tanto por parte do sistema operacional que é capaz
de operar sobre varias máquinas, tanto por parte das máquinas capazes de se comunicar
entre si (VERÍSSIMO;RODRIGUES,2001).
Um Sistema Distribuído é uma coleção de computadores autônomos, ligados
por uma rede, com software projetado para produzir uma facilidade de
computação integrada. (COULORIS;DOLLIMARE;KINDBERG, 2001,p 65)
Pode-se dizer que o hardware deve possuir uma infra-estrutura capaz de
desempenhar o papel de coordenação na comunicação dos programas paralelos, isso para
evitar eventuais problemas relacionados à heterogeneidade das máquinas. Com tudo faz-se
necessário à criação de um protocolo de comunicação para traduzir as diferentes linguagens
faladas.
Do mesmo modo, o software deve possuir uma infra-estrutura diferente, em que o
sistema operacional deve ser capaz de transformar seus mecanismos de gerenciamento
convencional em um mecanismo que opere em várias máquinas. Isso tudo para tornar o
paralelismo transparente para o usuário, ou seja, se o usuário solicitar um processo o mesmo
pode ser executado em qualquer uma das máquinas de uma rede de computadores sem que
o usuário perceba.
15
Os sistemas distribuídos possuem um ambiente de memória compartilhada e podem
se valer desta memória para ativar os processos paralelos através da utilização de troca de
mensagens para comunicação e sincronização das tarefas (FRIEDRICH, 2000,p66).
Segundo Friedrich (2000), há dois tipos principais de troca de mensagem:
PVM – Parallel Virtual Machine: é o conjunto integrado de bibliotecas e de ferramentas
de software, cuja finalidade é emular um sistema computacional concorrente, heterogêneo,
flexível e de propósito geral.
MPI – Message Passing Interface: Padrão de interface de troca de mensagens para
aplicações que utilizam computadores com arquitetura formada por processadores que
executam instruções independentemente com memória distribuída.
2.1
ARQUITETURAS PARALELAS:
Para Friedrich (2000) a classificação de Flynn é a mais utilizada embora não seja
muito abrangente:
•
SISD (Single Instruction Single Data):computadores com um único processador.
•
SIMD (Single Instruction Multiple Data): Computadores vetoriais, refere-se a um conjunto
(array) de processadores.
•
MISD (Multiple Instruction Single Data): O mesmo fluxo de dados percorre um array linear
de processadores.
•
MIMD (Multiple Instruction Multiple Data): A arquitetura formada por processadores que
executam instruções independentemente.
Já para Özsu(2001), outra dimensão de sistema de computação distribuída, é
classificada em dois tipos:
16
•
Sistemas fortemente acoplados: caracteriza-se pela existência de uma única memória
para todo o sistema que é compartilhado por todos os processadores. A comunicação
neste tipo de sistema é feita através de memória compartilhada.
•
Sistemas fracamente acoplados: neste tipo de sistema cada processador possui sua
memória local e a comunicação entre eles é feita através da passagem de mensagem por
uma rede de interconexão.
2.2
CARACTERÍSTICAS
Algumas características desses sistemas ou aplicações são (TANEMBAUM &
MARTEN VAN STEEN, 2002):
•
ESCOPO GEOGRÁFICO: diz respeito à disposição geográfica em que as máquinas
estarão fisicamente localizadas podendo ser em um mesmo escritório, na mesma cidade,
em outras cidades, estados e países.
•
HETEROGENEIDADE: são as diferentes configurações de hardware e software é um dos
principais problemas em um projeto de sistema distribuídos. Pode-se encontrar diversos
tipos de arquitetura de hardware em diversos tipos de software de gerenciamento.
•
MODULARIDADE: a modularidade diz respeito à integração entre os diversos sistemas
que poderão estar sendo utilizados na mesma rede de computadores e a capacidade de
interação entre os mesmos.
•
COMPARTILHAMENTO: a capacidade de compartilhamento dos sistemas distribuídos
deve ser alta e bem projetada para que todos os sistemas possam ter a sua disposição os
serviços necessários.
•
SEGURANÇA: como os dados estão disponíveis em várias máquinas, os dados secretos
também são acessíveis facilmente. Isto significa que ficaria fácil acessar dados que em
tese não deveriam ser acessados.
•
ESCALABILIDADE: um sistema distribuído está sujeito a um grande crescimento, e com
isso aumenta a probabilidade de ocorrerem
falhas. Com o aumento do número de
máquinas na rede, o grande desafio é o projeto de software de sistema distribuído, que
17
deve ser proporcional ao crescimento. O requisito principal é projetar serviços distribuídos
que continuem operando de maneira efetiva com centenas ou milhares de clientes.
•
CONCORRÊNCIA: ocorre quando dois ou mais processos começaram sua execução,
mas não terminaram. A concorrência em sistemas distribuídos ocorre a todo o momento
devido às atividades separadas dos usuários, a independência
dos recursos e a
localização de servidores em máquinas separadas.
•
ISOLAMENTO: é a capacidade que tem uma transação de não intervir em outras
transações que estejam sendo realizadas ao mesmo tempo.
2.3
TIPO DE SISTEMAS DISTRIBUÍDOS
Alguns tipos de Sistemas distribuídos são (ÖZSU; VALDURIEZ, 2001):
•
Serviços de nomes : são componentes da computação distribuída onde os usuários e
programas podem localizar pessoas, lugares, aplicações e serviços em ambientes
distribuídos.
•
Serviços de registros, autorização, autenticação: são os serviços de gerenciamento e de
controle da internet por exemplo a AT&T,PSI e General Atomics, que organizam a
distribuição dos endereços e registros de domínios e também das RFC’s.
•
Serviços de Rede: são serviços voltados a redes de computadores,
por exemplo, o
Classical IP que ocorre de modo nativo e também o serviço LANE - LAN Emulation. Outro
exemplo muito utilizado é o Sockets que implementa os protocolos TCP/IP. É um conjunto
de chamadas possíveis a bibliotecas que contém rotinas implementando determinados
objetivos.
•
Serviços de Tempo: como um sistema distribuído é um conjunto de computadores
conectados por meio de uma rede de comunicação onde não há compartilhamento de um
relógio comum. Existem uma necessidade de se tratar o tempo, para isso, usam-se alguns
serviços, como:
•
Tempo Universal Coordenado (UTC)
18
2.4
•
Algoritmos de Sincronização de Relógios
•
NTP: Network Time Protocol
•
Relógios Lógicos
•
Representações e Serviços de Tempo: Unix e CORBA
ARQUITETURA DE SISTEMAS DISTRIBUÍDOS
•
Acesso Remoto
•
Arquitetura Cliente/Servidor
•
Arquitetura Cliente/Servidor em 3 camadas
•
Arquitetura de Site Móvel
Acesso remoto: é uma das formas primordiais de distribuição e visa distribuir acesso
remoto a facilidades centralizadas, como sessão remota e transferência de arquivos.
Site 1
Site 2
Site 3
Figura 1. Modelo arquitetura de acesso remoto.
Um exemplo de acesso remoto são os terminais burros onde o processamento é feito
todo no servidor e apenas os dados são acessados remotamente.
19
Arquitetura Cliente/Servidor: Onde os serviços residem em servidores centrais, mas as
estações são independentes para rodar aplicativos e executar alguns dos processos
localmente, minimizando a grande carga do servidor.
Figura 2. Arquitetura Cliente-Servidor1.
Arquitetura Cliente/Servidor em três camadas: um passo a frente da arquitetura
cliente/servidor a arquitetura cliente/servidor em três camadas proporciona uma camada
intermediária entre a interface e o banco de dados. Essa camada também é chamada de
servidor de aplicação que é uma espécie de gerente de transações, é por onde todas as
requisições ao banco de dados devem passar.
1
http://www.juliobattisti.com.br/artigos/ti/ncamadas.asp, 2004,23:40
20
Figura 3. Arquitetura cliente-servidor em três camadas2
A arquitetura em três camadas se caracteriza pela camada intermediária entre a
aplicação e o banco de dados, esta camada é chamada de servidor de aplicação. Pois é uma
espécie de gerente da aplicação, é neste servidor de aplicação que se aplicam às regras de
transação e a lógica do negócio. A camada cliente é a camada que trata da interface com o
usuário, ou seja, nela podemos encontrar apenas algumas regras ou procedimentos
específicos de cada aplicação. E o banco de dados é a última camada e também onde os
dados são armazenados para possíveis acessos de alteração ou consulta.
Arquitetura de Site Móvel: são sites clientes ou servidor, se movem de um lugar a outro
da rede, e apenas off-line, ou seja, desligados como, por exemplo, notebooks e PDAs. Este
tipo de arquitetura é muito encontrado em sistema de representantes comercias e
vendedores.
2.5
COMUNICAÇÃO EM SISTEMAS DISTRIBUÍDOS
Nos sistemas distribuídos os componentes estão logicamente e fisicamente
separados, mas precisam se comunicar para interagir. Podemos dizer que os componentes
que fornecem e requerem acesso a recursos são implementados como processos, e a
comunicação entre eles envolve operações tanto no processo que envia como no processo
2
http://www.juliobattisti.com.br/artigos/ti/ncamadas.asp,2004,23:40
21
que recebe. Para que esta comunicação seja possível estes processos precisam de regras
como protocolo de comunicação, primitivas de comunicação e modelos de comunicação
(OZSU; VALDURIEZ, 2001).
2.5.1 Redes e Sistemas Distribuídos
Algumas das facilidades de rede que podem ser implementadas em sistemas
distribuídos são exploradas através de componentes de hardware (switches, interfaces) e de
software (protocolos e tratadores) e esta coleção pode ser chamada de subsistema de
comunicação. Alguns fatores que influenciam para um bom projeto de subsistema de
comunicação são:
a) Os Parâmetros de performance que influenciam na velocidade de transferência das
mensagens como latência e a taxa de transferência:
Latência: é o tempo que uma mensagem vazia leva para ser transmitida, ou
seja, é os retardos de software para acessar a rede.
Taxa de transferência: velocidade de transferência dos dados entre
computadores da rede.
b) Requisitos de performance: referem-se ao tempo de acesso a arquivos, em uma
arquitetura cliente servidor adiciona-se ainda o tempo de envio da requisição e a recepção
da resposta. Este tempo não deveria ser maior que o tempo de acesso ao disco. Esta
performance é conseguida com latência menor que 5 mili-segundos e taxa de
transferência maior que 200 Kbytes por segundo.
c) Requisitos de confiabilidade: este tipo de requisito é necessário à maioria das aplicações
de sistemas distribuídos. Grande parte dos erros que ocorrem são devidos à falhas de
temporizacão do software na transmissão e recepção do que na rede por causa dos
protocolos de controle (TANEMBAUN,1997).
22
2.5.1.1 Comunicação Cliente Servidor
Segundo Tanenbaum (1995), uma das estruturas mais comuns para os sistemas
distribuídos é a do cliente-servidor. A principal idéia deste modelo é estruturar o sistema
operacional como um grupo de processos cooperantes, denominados servidores, que
oferecem serviços a processos usuários, denominados clientes. As máquinas clientes e
máquinas servidoras normalmente rodam o mesmo microkernel, onde tanto os clientes quanto
os servidores rodam como processos usuários. Uma única máquina pode estar rodando um
processo, vários clientes, vários servidores, ou uma mistura dos dois.
Figura 4. Comunicação Cliente Servidor(TANENBUM,1995)
O modelo cliente/servidor é baseado em um protocolo muito simples, sem conexão, do
tipo solicitação/resposta, de tal forma a evitar overhead dos protocolos orientado a conexão,
tal como o OSI ou o TCP/IP, com a vantagem da simplicidade, onde o cliente envia uma
solicitação ao servidor e recebe dele uma resposta. Nenhum tipo de conexão deve ser
estabelecido antes do envio da solicitação, nem desfeito após a obtenção da resposta. A
própria mensagem de resposta serve como uma confirmação do recebimento da solicitação.
Devido a esta estrutura extremamente simples, os serviços de comunicação fornecidos pelo
microkernel podem, por exemplo, ser reduzidos a duas chamadas de sistema, uma para envio
de mensagens e outra para a recepção das mesmas.
23
2.6
RPC (REMOTE PROCEDURE CALL)
RPC (Remote Procedure Call) é um método comum e largamente aceito para o
encapsulamento de mensagens em um sistema distribuído. A essência desta técnica é
permitir que programas em diferentes máquinas possam interagir usando simples semântica
de procedimentos call/return, ou seja, é como se os dois programas estivessem na mesma
máquina(STALLINGS, 1998).
Segundo Kindberg(2001), este tipo de comunicação é bastante aceito pelas seguintes
características:
•
A chamada de um procedimento é amplamente aceita, usada e de abstração entendida.
•
O uso de chamadas remotas de procedimentos permite que interfaces remotas sejam
designadas como um conjunto de operações nomeadas com tipos designados. Assim esta
interface pode ser claramente documentada e os programas distribuídos podem ser
conferidos estaticamente, em tempo de compilação, para validar os erros de tipos (permite
conferir os tipos de dados que estão sendo usados nas chamadas, em tempo de
compilação)
•
Devido à especificação de uma interface padronizada e precisa, o código de comunicação
para uma aplicação pode ser gerado automaticamente.
•
Devido à especificação de uma interface padronizada e precisa o programador pode
escrever módulos clientes e módulos servidores que podem ser usados em diferentes
computadores
recodificação.
e
sistemas
operacionais
com
pequenas
modificações
e
pouca
24
Figura 5. Representação do mecanismo de RCP (GALLI,1998)
Já para Friedrich (2000), a principal meta do mecanismo de chamada remota de
procedimento é o de manter o máximo possível à semântica da chamada de procedimento
convencional em um ambiente de implementação totalmente diferente, ou seja, em um RPC
os parâmetros de entrada são enviados para o servidor através da passagem de mensagem e
os parâmetros de saída são enviados ao cliente na mensagem de resposta. Tudo isso só é
possível graças à tecnologia de redes computadores.
3
REDES DE COMPUTADORES
Para Tanenbaum (1997,p.16), “uma rede de computadores é como uma coleção de
computadores autônomos interconectados que são capazes de trocar informações entre si ”.
Os sistemas são ditos como autônomos por razão de que cada máquina deve ser
capaz de executar programas isoladamente, desde que as máquinas estejam interconectadas,
para que essas sejam capazes de trocar informações.
Em banco de dados distribuídos as redes são o suporte básico para que se tenha
comunicação de dados, sem rede não haverá comunicação, e sem comunicação não tem por
que fazer distribuição de dados.
3.1
TIPOS DE REDES
Redes locais (LAN): as redes locais (LANs), são redes de pequena dimensão que
interligam computadores e dispositivos periféricos de um mesmo estabelecimento e possuem
uma pequena extensão geralmente inferior a 10 kilometros. As taxas de transferência podem
variar entre 0.2 ate 100 Mbps.
Redes metropolitanas(MAN): as redes metropolitanas (MANs) são redes de dimensão
média aproximadamente o espaço de uma cidade constituídas por duas ou mais redes locais.
Este tipo de rede é comum em instituições como universidades, hospitais ou em delegações
espalhadas ao longo de uma cidade. Exemplos típicos de instituições que utilizam este tipo de
rede são os bancos, as grandes empresas nacionais e multinacionais e as instituições de
âmbito científico.
Redes de longa distancia(WAN): as redes de longa distância são redes de grande
dimensão com abrangência nacional ou até mesmo internacional.Este tipo de rede é
composta por outras redes e computadores isolados e são normalmente interligadas por
agentes de telecomunicação (TANEMBAUM,1997).
26
3.2
PROTOCOLOS
Não basta apenas ligar fisicamente dois ou mais computadores para que eles se
comuniquem, mas para que se tenha uma comunicação confiável e segura necessita-se de
um sistema de software que irá definir algumas regras para a comunicação entre os
computadores. Estes sistemas são chamados de protocolos de comunicação. A complexidade
desses protocolos difere entre as redes remotas, locais e metropolitanas (OZSU; VALDURIEZ,
2001).
Figura 6. Modelo OSI3
Podemos dizer que as WANs por serem redes de longa distância e por terem que
acomodar diversos tipos de equipamentos e conexões, que às vezes possuem diferentes
velocidades e até mesmo tamanhos de palavras, tem uma maior necessidade de protocolos
de comunicação. Exemplo deste tipo de protocolo e mais conhecido se baseia na arquitetura
3
http://www.juliobattisti.com.br/artigos/ti/ncamadas.asp,2004,23:40
27
de interconexão de sistemas abertos da Internation Stadards Organization(OSI) na figura
acima. Este modelo diz que a rede deve ser construída em camadas, e entre estas camadas
devem ser definidas as interfaces que facilitam a passagem de informação entre o software e
o hardware. Este modelo é composto por sete camadas sendo elas a camada física, a
camada de link de dados, a camada de rede, a camada de transporte, a camada de sessão, a
camada de apresentação e a camada de aplicação. Mais detalhes sobre as camadas do
modelo OSI pode-se encontrar em (TANEMBAUM,1997).
Outro modelo de protocolo utilizado em WANs é o TCP/IP, que segue a mesma idéia
do modelo OSI, porém este modelo possui apenas quatro camadas.
Figura 7. Modelo TCP/IP
O modelo representado na figura acima, apresenta apenas quadro camadas, porém
seguem o mesmo padrão de referencia do modelo OSI.
Pode-se dizer que para composição de um sistema de banco de dados distribuídos
também é necessário que se apresente os conceitos que seguem.
4
BANCO DE DADOS
4.1
BANCO DE DADOS E SGDBS
Existem vários conceitos sobre banco de dados. Resumidamente podemos entender
por banco de dados qualquer sistema que reúna e mantenha organizada uma série de
informações relacionadas a um determinado assunto em uma determinada ordem. Outros
conceitos sobre banco de dados podem ser analisados a seguir:
Um sistema de Banco de dados não é nada mais do que um sistema de
manutenção de registros por computador. O próprio banco de dados pode
ser considerado uma espécie de sala de arquivo eletrônica – ou seja, um
depósito de um conjunto de arquivos de dados computadorizados que
oferece diversos recursos ao usuário, possibilitando-lhe a realização de várias
operações. ( DATE, 1991,p.3).
Já Korth (1989), diz simplesmente que banco de dados é uma coleção de dados
comumente usada, que contêm informações de um empreendimento em particular, ou seja, é
o arquivo físico onde estão armazenados os dados de um determinado sistema para consulta
e atualização dos dados pelo usuário.
Segundo Engles apud DATE (1991, p.9), banco de dados é :“uma coleção de dados
operacionais armazenados, usados pelos sistemas de aplicações de uma organização.” Para
ele as informações contidas em um banco de dados são chamadas de dados operacionais.
Os dados estão divididos em dados de entrada que são os dados que entram pela primeira
vez no sistema, e dados saída que são resultados do sistema.
A expressão banco de dados passou a identificar qualquer coleção de
informações na vida cotidiana, ainda que muitas vezes, sob o ponto de vista
estritamente técnico não mereceria ser assim qualificada ( JAMIL, 2001,
p.266).
Com o grande crescimento dos bancos de dados surge a necessidade de desenvolver
uma ambiente de gerenciamento de funções como manipulação, armazenamento e
recuperação da informações, dando origem aos Sistema Gerenciadores de Bancos de Dados
- SGBD.
29
Segundo Korth (1989) em um Sistema de gerenciamento de banco de dados consiste
numa coleção de dados inter-relacionados e um conjunto de programas para acessar esses
dados. “O principal objetivo de um SGBD é proporcionar um ambiente, conveniente e
eficiente, para retirar e armazenar informação no banco de dados.” O gerenciamento dos
dados envolve tanto a definição de estrutura para armazenamento como a provisão de
mecanismos para manipulá-la. Além disso, o sistema deve proporcionar a segurança das
informações armazenadas no banco de dados em situações como quedas do sistema ou
tentativas de acesso não autorizado. “E se os dados são compartilhados por diversos usuários
o sistema precisa evitar possíveis resultados anômalos”.
Figura 8. Um Sistema de Banco de Dados4
Para Date (1991) os objetivos de um SGBD são:
•
4
Isolar os usuários de detalhes mais internos do banco de dados - Abstração de dados.
www.abed.org.br/antiga/htdocs/paper_visem/ rafael_scapin/rafael_scapin01.htm
30
•
Prover independência de dados as aplicações (estrutura física de armazenamento e a
estratégias de acesso).
Algumas vantagens no uso de SGBD também apresentadas por Date (1991) são:
•
Rápidez no acesso e na manipulação à informação.
•
Redução do esforço humano (desenvolvimento e utilização).
•
Redução da redundância e na inconsistência de informações.
•
Redução de problemas de integridade.
•
Compartilhamento de dados.
•
Aplicação automática de restrições de segurança.
•
Controle de informações distribuídas fisicamente.
Já para Silberschatz (1999) algumas vantagens consideráveis são:
•
Consistência de dados, que é a padronização dos dados a serem armazenados. “O SGDB
permite que se tenha um relacionamento entre as tabelas do sistema criando com isso a
consistência nos dados armazenados”, ou seja, evitando a redundância da informação.
•
Integridade faz a manutenção da consistência dos dados, ou seja, assegura que os dados
o banco de dados estejam corretos.
•
Segurança restringe acesso a usuários que não possuem permissão para acessar certas
informações.
•
Compartilhamento de dados assegura que o efeito de qualquer transação completa seja
preservada mesmo que o sistema falhe.
31
Com a criação dos Bancos de Dados e os Sistemas Gerenciadores de Banco de
Dados, as corporações cada vez mais vêm adotando a utilização dos mesmos, e com isso à
necessidade de aprimoramento destas ferramentas como a criação dos Bancos de Dados
Orientado a Objetos, a criação de Sistemas Gerenciadores de Bancos de Dados
Distribuídos(SGBDD) e outras tecnologias como DatawareHouse e Data Mining.
Também para Korth, uma preocupação que deve ser levada em consideração é a
abstração dos dados, ou seja, o sistema deve oferecer uma visão abstrata dos dados
escondendo certos detalhes de como os dados são armazenados ou mantidos. Porém, para
que o sistema seja utilizável, os dados precisam ser recuperados eficientemente. Esta
preocupação com eficiência nos leva ao desenvolvimento de estruturas complexas para
representação dos dados no banco de dados. Com isso Korth define alguns níveis de
abstração pelos quais os banco de dados podem ser vistos.
O Nível físico: é o nível mais baixo de abstração, no qual se descreve como as dados
são armazenados. Neste nível encontramos estruturas complexas, de baixo nível, que são
descritas em detalhes.
Nível conceitual: nível onde se descreve quais dados são realmente armazenados no
banco de dados e quais os relacionamentos existentes. O nível conceitual de abstração é
mais utilizado pelos administradores de banco de dados, que devem decidir quais as
informações devem ser mantidas no banco de dados.
Nível visão: nível mais alto de abstração é o nível onde se encontra apenas partes do
banco de dados, porém podem se encontrar vários níveis dentro de um único banco de dados.
4.2
MODELO DE BANCO DE DADOS
Segundo Silberschatz (1999, p.7), modelo de dados é um conjunto de ferramentas
conceituais usadas para a descrição dos dados, relacionamentos, semântica e regras de
consistência. Já para Korth necessitamos de modelos de dados para descrever a estrutura de
um banco de dados, um modelo de dados é uma coleção de ferramentas conceituais para
descrição dos dados, relacionamentos entre os dados, semântica e restrições dos dados.
Tanto para Silberschatz (1999) como para Korth os modelos de dados estão divididos
em três diferentes grupos: modelos conceitual, modelos lógico e modelos físicos.
32
4.2.1 Modelo Conceitual
Para Korth este modelo se caracteriza por proporcionar uma ampla e flexível
capacidade de estruturação e por permitir a especificação de restrições de dados de forma
visível. Também diz que possuem vários modelos deste tipo e os mais conhecidos são:
•
Modelo entidade-relacionamento.
•
Modelo binário.
•
Modelo de semântica de dados.
•
Modelo infológico.
Neste trabalho o modelo a ser usado é o modelo entidade-relacionamento, conforme
segue.
O modelo conceitual possui alto nível de abstração e representa de forma mais natural
os fatos do mundo real e seus relacionamentos, além de ser independente do banco de dados
utilizado.
Figura 9. Modelo entidade-relacionamento
Como podemos ver na figura acima com o modelo conceitual entidade-relacionamento
pode-se definir quais são as entidades utilizadas, seus atributos e o relacionamento entre elas,
tornando assim de maior compreensão aos usuários do banco de dados.
33
4.2.2 O Modelo Entidade-Relacionamento
Como já vimos este modelo se caracteriza pela percepção do mundo real e é
composto por objetos que são as entidades e os relacionamentos que são as ligações entre
estas entidades, além de facilitar o projeto de banco de dados e permitir a especificação do
esquema.
O modelo de dados entidade-relacinamento baseia-se na percepção de um
universo constituído por um grupo básico de objetos chamados entidades e
por relacionamentos entre estes objetos. Ele foi desenvolvido a fim de facilitar
o projeto de banco de dados permitindo a especificação de um esquema de
empreendimento.Tal esquema representa a estrutura lógica global do banco
de dados.(KORTH,1989)
O modelo ER é baseado nas bases teóricas de Edgar Frank Codd de 1970 e retratam
uma visão da realidade, mostrando os relacionamentos entre os objetos. Este modelo foi
criado por Peter Chen em 1976 e foi desenvolvido para facilitar os projetos de banco de
dados, permitindo uma modelagem possível de fazer uma abstração do mundo real formando
uma visão única de todo o esquema, assim tornando possível o entendimento dos dados de
um sistema de informação. Para Silberschatz (1999, p.7), “uma regra importante é o
mapeamento das cardinalidades, as quais expressam o número de entidades as quais a outra
entidade se relaciona por meio daquele conjunto de relacionamentos”.
4.2.3 Entidades e conjuntos de entidades
Entidade é um objeto real do empreendimento relativo ao banco de dados. Por
exemplo, uma pessoa com seu CPF, é uma instância de entidade, pois esta pessoa com este
CPF é única no universo. Podendo ser concreta, uma pessoa, um computador, ou abstrata,
como um feriado, um conceito, um empréstimo ou uma consulta médica.
Então várias entidades são chamadas de conjunto de instância de entidades. Como
por exemplo, os empregados de uma empresa formam um grupo de instância de entidade que
podemos chamar de funcionário.
34
Funcionário
Depto
Figura 10. Representação de como uma entidade é especificada em um DER
4.2.4 Relacionamento e conjuntos de relacionamentos
Como já vimos anteriormente um relacionamento é uma associação entre várias
entidades. Podemos representar um relacionamento fazendo uma relação entre as duas
entidades criadas anteriormente.
Funcionário
Depto
Lotação
Figura 11. Representação de um relacionamento
Normalmente um relacionamento é identificado pela figura geométrica de um losango.
Normalmente para facilitar a visualização do esquema do banco de dados e também para
melhor entendimento dos projetistas é dado um nome ao relacionamento. No nosso caso o
nome do relacionamento entre as entidades Funcionário e Dpto é chamado de Lotação.
Um conjunto de relacionamento é um grupo de relacionamento do mesmo tipo. Que
formalmente, é uma relação matemática em que n >= 2
em um conjunto de entidades
(KORTH,1989).
4.2.5 Atributos
São dados que são associados a cada ocorrência de uma entidade ou de um
relacionamento. Uma entidade pode possuir vários atributos como, por exemplo, a nossa
entidade Funcionário pode possuir Nome, CPF, Telefone etc. Os atributos são representados
no modelo conceitual da seguinte maneira:
35
CPF
Nome
Figura 12. Representação de atributos
Para Heuser (2000) existem vários tipos de atributos que são eles:
Atributos Identificador: Cada entidade possui um identificador, este é um conjunto de
um ou mais atributos, que serve para identificar uma ocorrência da entidade das outras
ocorrências da mesma entidade.
No exemplo acima define-se o atributo CPF como
identificador, ou seja, isso significa que não haverá dois valores de CPFs iguais na entidade.
Atributos monovalorados e multivalorados: Os atributos monovalorados são os que
têm um valor específico, o atributo CPF, refere-se unicamente a um número que identifica o
funcionário.
4.2.6 Cardinalidade
Visto em Heuser (2000) cardinalidade é o número de ocorrências de uma entidade em
outra entidade através do relacionamento. Indica o número máximo de ocorrência de
entidades que pode estar associadas a uma ocorrência da outra entidade (1 ou N).
Um para um: quando um elemento da entidade A relaciona-se somente com um
elemento da entidade B. Exemplificando: um Funcionário possui uma mesa e uma mesa só
pode ser usada por um funcionário, aquela a que esta destinada.
Funcionário
Alocação
Mesa
Figura 13. Representação de cardinalidade um para um
36
Um para Muitos: Quando um elemento da entidade B relaciona-se com muitos
elementos da entidade A, mas cada elemento de A pode relacionar-se somente com um
elemento em B. Como no exemplo abaixo onde um funcionário pode estar lotado em vários
projetos, mas um projeto só pode ser gerenciado por um funcionário.
Funcionário
Gerencia
Projeto
Figura 14. Representação de cardinalidade um para muitos
Muitos para Muitos: quando muitos elementos da entidade A relacionam-se com
muitos elementos em B e vice-versa. Imagina-se agora o seguinte exemplo: um funcionário
pode fazer parte de vários projetos e os projetos tem a participação de vários funcionários.
Funcionário
Projeto
Lotação
Figura 15. Representação de cardinalidade muitos para muitos
4.2.7 Modelo Lógico
Segundo Heuser (2000) , o modelo lógico é uma espécie de visão do banco de dados
tanto para o programador como para o analista de sistema como também para o
administrador de banco de dados. Já Korth diz que o modelo lógico é usado na descrição de
dados nos níveis conceitual e visão, e estes modelos são usados para especificar a estrutura
lógica global do banco de dados e que também nos dá uma visão em alto nível de
implementação.
37
Figura 16. Modelo Lógico
4.2.8 Modelo Físico
O modelo físico é o de mais baixo nível, é onde se escolhe o tipo de estrutura de
armazenamento que será utilizada e os caminhos de acesso aos arquivos, para que as
aplicações alcancem o desempenho desejável. Neste modelo os administradores de banco de
dados devem conhecer quais são os pontos de acesso mais utilizados para criação de índices
para consultas, e também deve conhecer muito bem a arquitetura do SGBD que irá utilizar a
fim de projetar da melhor maneira o modelo físico (RAMAKRISHNAN,1997).
4.2.9 Generalização e Especialização
Generalização é um conjunto de entidades visto como uma entidade genérica que para
Korth (1989) é o resultado da união de dois ou mais conjuntos de entidades de nível mais
baixo produzindo um conjunto de entidades de nível mais alto. A generalização é possível por
que duas entidades possuem atributos em comum.
Especialização
ocorre
quando
algumas
entidades
possuem
atributos
ou
relacionamentos adicionais, sendo especializados em uma ou mais entidades. Segundo Korth
(1989) especialização é o resultado da separação de um subconjunto de entidades de nível
mais alto, formando um conjunto de entidades de nível mais baixo.
38
Figura 17. Exemplo de Generalização
4.3
O MODELO RELACIONAL
Percebemos na história de banco de dados que, o modelo relacional é relativamente
novo. Os primeiro sistemas de banco de dados se basearam no modelo hierárquico ou no
modelo em rede. Estes dois modelos mais antigos estão mais ligados a estrutura da
implementação do banco de dados do que o modelo relacional.
O modelo de dados relacional representa o banco de dados como uma
coleção de tabelas. Muito embora tabelas envolvam noções simples, e
intuitivas, há uma correspondência direta entre o conceito de uma tabela e o
conceito matemático de uma relação(KORTH,1989).
Um banco de dados relacional esquematizado cria um conjunto de relações que
permitem armazenar informações como integridade, sem redundância, tudo isso para suportar
as necessidades dos usuários na recuperação das informações armazenadas no banco. Isto é
possível quando se projeta um modelo de banco de dados onde não se armazene
informações repetidas. Neste modelo também se aplicam chave-estrangeira e chaveprimária. Um banco de dados é chamado de relacional porque o nome matemático dado para
as tabelas é “Relação”, então um banco de dados relacional é um conjunto de relações. A
relação é formada pela associação entre “Conjuntos” de dados, definidos pelos atributos de
uma entidade.
39
4.3.1 Estrutura do banco de dados
O modelo de dados relacional consiste em uma coleção de tabelas onde cada uma
destas tabelas se identificam com um nome único. O modelo relacional é claramente baseado
no conceito de matrizes, onde as chamadas linhas das matrizes seriam os registros e as
chamadas colunas das matrizes seriam os campos. As linhas de nossa relação são chamadas
de TUPLA cada coluna de nossa relação é chamada de ATRIBUTO, onde o conjunto de
possíveis valores para esses atributos são chamados de DOMÍNIO.
O esquema de uma relação, nada mais é do que os campos (colunas) existentes em
uma tabela. Já a instância da relação consiste no conjunto de valores que cada atributo
assume em um determinado instante. Portanto, os dados armazenados no Banco de Dados,
são formados pelas instâncias das relações (HEUSER, 2000, p.82).
Os valores não podem ser duplicados, não pode existir dois estados do Paraná no
conjunto de estados brasileiros, e a ordem de entrada de dados no Banco de Dados não deve
ter qualquer importância para as relações.
4.3.2 Chaves
Temos basicamente três tipos de chaves que podemos utilizar em um modelo de
banco de dados relacional e estas servem para identificar a relação entre as tuplas das
entidades, as chaves primárias, chaves alternativas e chaves estrangeiras.
Chave primária é um valor definido para uma coluna ou para um conjunto de colunas
que não se repetem dentro de uma mesma tabela. Pode se definir mais de uma coluna como
chave, então chama-se de chave primária composta.
Chave Secundária (Ternária, etc), serão chaves que possibilitarão pesquisas ou
ordenações alternativas, ou seja, diferentes da ordem criada a partir da chave primária ou da
ordenação natural (física) da tabela.
Chave Estrangeira, aquela chave que permite a ligação lógica entre uma tabela onde
ela se encontra com outra na qual ele é chave primária, além de, definir o relacionamento e
impor a integridade referencial.
40
Exemplo:
CID_CODIGO e EST_UF são chaves primárias respectivamente das tabelas Cidade e
Estado, enquanto EST_UF é chave estrangeira na tabela de cidades. É precisamente por este
campo (atributo ou coluna), que será estabelecida a relação entre as tabelas Cidade->Estado.
4.3.3 Domínios
O domínio consiste de um grupo de valores atômicos a partir dos quais um ou mais
atributos retiram seus valores reais. Por exemplo, Santa Catarina, Paraná e Rio Grande do
Sul são estados válidos para o Brasil, enquanto que Califórnia não é um estado válido pois
não pertence ao Brasil e sim aos Estados Unidos.
5
ÁLGEBRA RELACIONAL
Pode-se dizer que a álgebra relacional é um tipo de linguagem de consulta que
consiste em um conjunto de operações de entrada e produzem uma nova relação como
resultado(SILBERSCHATZ, 1999). As consultas algébricas são compostas de uma coleção de
operadores que se dividem em dois grupos:
Operações Tradicionais:
•
União
•
Intersecção
•
Diferença
•
Produto Cartesiano
Operações Especiais:
5.1
•
Seleção
•
Projeção
•
Junção
•
Divisão
SELEÇÃO
A seleção é representada pelo símbolo:
σ
e equivale a cláusula where da linguagem
SQL. Busca na tabela e retorna apenas o que atende a condição. Exemplo:
Relação = σ < predicado> (Relação).
Exemplo:
R1 = σ <emp_codigo = 1> (empresa).
42
No modelo irá retornar a empresa em que o código é igual a um.
5.2
PROJEÇÃO
Já o símbolo que representa a projeção é π. Representada pela cláusula select da
linguagem SQL. A projeção retorna todos os atributos de uma relação de acordo com a
especificação.
Notação:
π <lista de atributos> (Relação )
Exemplo:
R2 = π <emp_descricao> (empresa)
No exemplo acima será projetada a emp_descricao da relação empresa.
5.3
PROJEÇÃO E SELEÇÃO
Usam-se as duas operações juntas para que se possa projetar os atributos de acordo
com a condição estipulada. Deve-se usar uma seleção primeiro, para depois projetar os
atributos.
Exemplo:
R1 = σ <cod_emp= 1> (empresa)
R2 = π <emp_desc> (R1)
No exemplo acima retorna a descrição quando o código da empresa for igual a um.
43
5.4
OPERAÇÃO DE UNIÃO
A simbologia que representa a operação de união é
∪,e
consiste em uma união de
linhas de duas relações. Tem-se apenas a particularidade de que, as relações devem ter o
mesmo grau (mesmo número de atributos) e os atributos devem pertencer ao mesmo
domínio.
Exemplo:
R1 = π <cod_empresa> (empresa)
R2 = π <codempresa> (empresa)
R3 = R1 ∪ R2
No exemplo acima R3 irá representar a união de R1 com R2.
5.5
DIFERENÇA
Pode-se dizer que na diferença é construída uma relação, a qual terá como
resultado todas as linhas da primeira relação que não estão presentes na segunda relação e é
representada pelo sinal de subtração(-).
Segue abaixo um exemplo de uma operação de diferença, no qual R3 armazenará os
dados que estão em R1 e não estão em:
Exemplo:
R1 = π <codempresa> (empresa)
R2 = π <codempresa> (funcionario)
R3 = R1 - R2
5.6
INTERSECÇÃO
Na intersecção tem-se o retorno das linhas que estão presentes nas duas
relações. A intersecção é representada pela seguinte denotação: ∩
44
Exemplo:
R1 = π <codempresa> (empresa)
R2 = π <codempresa> (funcionario)
R3 = R1 ∩ R2
No exemplo acima R3 retornara os dados que são comuns entre R1 e R2.
5.7
JUNÇÃO
A junção é função representada pela seguinte simbologia:
a mesma constrói uma
relação a partir de duas relações específicas, nada mais é que todas as possibilidades de
pares de linhas resultantes combinadas, uma de cada relação específica, de forma que cada
par de linhas satisfaça uma condição específica. Deve-se considerar as chaves primárias e
estrangeiras ou valores iguais para a junção. Como exemplo utiliza-se duas relações empresa
e funcionário.
R1 = empresa
funcionario
R2 = π <emp_fantasia, fun_nome > (R1)
5.8
PRODUTO CARTESIANO
Para que se tenha produto cartesiano de duas relações, a relação resultante de duas
relações X e Y deve haver
constrói uma relação a partir de duas relações específicas, que
consiste na combinação de todas as linhas das duas relações. O mesmo tem representado
por X. Como exemplo, o seguinte produto cartesiano, é composto de relações, cidade e setor,
conforme segue:
5.9
DIVISÃO
A divisão é uma operação adicional que produz como resultado a projeção de todos os
elementos da primeira relação que se relacionam com todos os elementos da segunda
relação. É denotada pelo sinal aritmético da divisão (÷).
45
Exemplo:
R1 = π <nome,cód_Loc> (Empresa)
R2 = π <cód_loc=1> (Localidade)
R3 = R1 ÷ R2.
Retorna todas as empresas da seleção aplicada.
6
SISTEMA DE BANCO DE DADOS DISTRIBUÍDOS
Para Özsu e Valduriez (2001, p.1), o conceito de sistema banco de dados distribuído
(SBDD) pode ser definido como uma coleção de vários bancos de dados logicamente interrelacionados, distribuídos ao longo de uma rede de computadores. Um sistema de
gerenciamento de banco de dados distribuído(SGBDD) é definido como um sistema de
software que permite o gerenciamento do banco de dados distribuído e que torna a
distribuição transparente para o usuário.
A tecnologia de sistemas de bancos de dados distribuídos (SBDDs) é a união
daquilo que consideramos duas abordagens diametralmente opostas para
processamento de dados: as tecnologias de sistemas de banco de dados e
rede de computadores(OZSU;VALDURIEZ,2001).
Algumas características que devem ser levadas em consideração para que não se
confunda um SBDD com uma simples coleção de arquivos são: além de estarem interrelacionados deve existir uma estrutura entre os arquivos, o acesso aos dados deve ser feito
por uma interface comum e o único meio compartilhado que é usado para comunicação entre
as bases é a rede (ÖZSU; VALDURIEZ, 2001, p.5).
Em Bell e Grimsom (1992, p.44), banco de dados distribuído pode ser definido como
uma coleção integrada logicamente compartilhada de dados fisicamente distribuídos entre nós
de uma rede de computadores. “Um SGBD distribuído é o software para gerenciar um banco
de dados distribuído de maneira que os aspectos de distribuição sejam transparentes ao
usuário”.
Desde o início da utilização dos sistemas de banco de dados a idéia que prevalecia é
a que os dados operacionais de um empreendimento deveriam estar centralizados, por outro
lado, as redes de computadores promovem um modo de trabalho que se opõe a todos os
esforços de centralização, e a união destas duas linhas de pensamento nos leva ao que
chamamos hoje de sistema de banco de dados distribuído. Vale também dizer que o objetivo
mais importante de um sistema de banco de dados não é a centralização e sim a integração.
Pode-se classificar os SGBDD em dois tipos separados baseados em diferentes
filosofias:
a) SGBDD Homogêneo
47
b) SGBDD Heterogêneo.
Um SGBD distribuído homogêneo tem múltiplas coleções de dados e integra múltiplos
dados e recursos. Este se assemelha a um banco de dados centralizado, mas ao invés disso,
o dado é distribuído através de um número de sites de uma rede.
Características:
•
Todos os sites têm software idêntico;
•
Estão conscientes uns dos outros e cooperam no processamento dos pedidos dos
utilizadores;
•
Cada site aceita perder parte da sua autonomia em termos de direitos de mudança de
esquema e software;
•
O usuário tem a impressão de um sistema único.
Figura 18. Arquitetura de um SGBDD homogêneo (DISTRIBUTED DATABASE SYSTEMS,
p.46)
48
Já os SGBDD heterogêneos são caracterizados pelo uso de diferentes bancos de
dados, diferentes sistemas
incluindo hardware e software diferentes em sites diferentes,
diferentes sistemas operacionais e diferentes protocolos.
Características:
•
Sites diferentes podem usar esquemas e software diferentes, diferenças nos esquemas
constituem problemas complicados no processamento de consultas e diferenças no
software constituem problemas complicados no processamento de transações;
•
Os
sites podem não estar conscientes uns dos outros e poderão fornecer apenas
capacidades limitadas para cooperação no processamento de transações.
Na figura abaixo podemos ver graficamente um exemplo de modelo que ilustra o
propósito deste trabalho onde o site 1 é a matriz de uma transportadora e os sites 2, 3, 4 são
as filias que terão acesso aos dados da matriz e vice-versa. Cada site terá sua própria base
de dados e a união de todos os sites formam um único banco de dados onde o SGDB através
de seus recursos mantém a integridade de cada banco de dados local e do banco de dados
geral.
Site 1
Site 4
Rede de
Site 2
Comunicação
Site 3
Figura 19. Exemplo de um Sistema de Banco de Dados Distribuídos(OZSU; VALDURIEZ,
2001, p.8)
49
6.1
CARACTERÍSTICAS DE SBDDS
6.1.1 Gerenciamento transparente de dados Distribuídos
A principal característica de um sistema transparente é a capacidade de não mostrar
os detalhes de implementação para o usuário, e o suporte para desenvolvimento de vários
tipos de aplicativos. Em, Özsu e Valduriez (2001,p 9) todos os SGBDs podem ser totalmente
transparentes tanto os distribuídos como os centralizados, mas, para que a transparência
ocorra, o sistema deve gerenciar várias características para oferecer transparências, as quais
são descritas abaixo.
6.1.1.1 Independência de dados
Consiste na capacidade de tornar as características físicas dos dados (como
localização, estrutura, tamanho, etc) transparentes para a aplicação. Com isto, os programas
aplicativos passam a ter apenas uma visão lógica da base de dados, que não é influenciada
por eventuais modificações na forma de armazenamento dos dados. Significa também que
devem existir duas sub-linguagens incorporadas ao banco de dados: uma Linguagem de
Definição de Dados (LDD) e uma Linguagem de Manipulação de Dados (LMD).
A independência de dados consiste em uma forma fundamental de transparência é
também o único tipo importante dentro do contexto de um SGBD centralizado. Ela se refere à
imunidade de aplicativos do usuário a mudanças na definição e na organização de dados, e
vice-versa. A definição dos dados pode ocorrer em dois níveis, o primeiro é conhecido como
definição do esquema
onde a estrutura lógica é especificada e o outro é chamado de
descrição dos dados físicos e é onde a estrutura física dos dados é definida (OZSU;
VALDURIEZ, 2001, p.10).
6.1.1.2 Transparência de rede
O comportamento dos programas aplicativos deve ser o mesmo independentemente
da distribuição na rede, ou seja, em um ambiente de gerenciamento de banco de dados
distribuído existe
mais um recurso compartilhado que para o usuário deve parecer
50
transparente. Esse requisito possui como base a criação de um Espaço Computacional
Compartilhado Distribuído (ECCD), que cria a ilusão de um único espaço de endereçamento
para todas as entidades do sistema. Assim não haveria nenhuma diferença entre aplicativos
de banco de dados que fossem executados em um banco de dados centralizado e aqueles
executados em um banco de dados distribuído.
A transparência de rede pode ser dividida em dois pontos de vista, dos serviços
fornecidos e dos dados. Na primeira perspectiva é desejável que os serviços sejam acessados
por meios uniformes. Já na perspectiva de SGBD a transparência de rede exige que o usuário
não tenha que especificar onde os dados estão localizados.
6.1.1.3 Transparência de replicação
Pode-se dizer que replicação é a copia de informações de um ou mais banco de dados
para outro semelhante. É desejável distribuir os dados de forma replicada pelas máquinas de
uma rede por razões de desempenho, confiabilidade e disponibilidade. A transparência de
replicação refere-se apenas a existência de réplicas pela rede, e não a sua posição real. Se
existem réplicas de objetos (relações/tabelas, tuplas/registros, atributos/colunas) do banco de
dados, sua existência deve ser controlada pelo sistema e não pelo usuário. A criação de
réplicas auxilia nos fatores de desempenho, confiabilidade e disponibilidade, pois requisitos de
um usuário distinto e comumente acessado podem ser acomodados com maior facilidade.
Além disso, como existe mais de uma cópia dos dados, se uma máquina falhar os dados irão
continuar disponíveis na rede de tal forma que o usuário não perceba onde está acessando
estas informações.
6.1.1.4 Transparência de fragmentação
Consiste em dividir as relações/tabelas em fragmentos menores e tratar cada
fragmento como uma relação de um banco de dados separado. Se as relações/tabelas do
banco de dados são fragmentadas, então o sistema tem que lidar com a conversão de
consultas do usuário definidas em relações globais para consultas definidas em fragmentos.
51
Existem dois tipos gerais de fragmentação, fragmentação horizontal e fragmentação
vertical. As formas de fragmentação serão apresentadas e aprofundadas mais à frente.
6.1.2 Confiabilidade em transações distribuídas
Pode-se dizer que os SGBDs distribuídos nos proporcionam uma maior confiabilidade
por possuírem componentes compartilhados que eliminam pontos únicos de falha. Isso
significa que se houver falha em um único site ou em um “link” de comunicação apenas o
ponto que falhou vai ficar inativo e não todo o sistema, assim o usuário continua tendo acesso
a uma parte dos dados. No caso de banco de dados distribuído, as transações distribuídas e
os protocolos de aplicativos têm a responsabilidade de controlar as permissões de acesso das
partes disponíveis do banco de dados.
Uma transação é uma unidade básica de computação consistente e confiável,
formada por uma seqüência de operações de banco de dados executadas
como uma ação atômica. Ela transforma um estado consistente do banco de
dados em outro estado consistente de banco de dados, mesmo várias dessas
transações são executadas de forma concorrente, e até mesmo quando
ocorrem falhas(OZSU; VALDURIEZ,2001,p.16).
Pode-se dizer também que os SGBD distribuídos não impõe a atomicidade de
transações distribuídas, mas fornece as primitivas básicas pelas quais os aplicativos do
usuário podem impor essa atomicidade. Estas primitivas são conhecidas como propriedades
ACID que indicam a preservação da integridade dos dados do banco, e são:
1. Atomicidade: ou todas as operações da transação são apropriadamente refletidas no
banco de dados ou nenhuma é.
2. Consistência: A execução de uma transação preserva a consistência do banco de dados.
3. Isolamento: embora múltiplas transações possam ser executadas concorrentemente, cada
transação deve desconhecer as outras transações concorrentes em execução. E
resultados intermediários de transações devem ser escondidos de outras transações
concorrentes.
52
4. Durabilidade: após uma transação ser completada com sucesso, as mudanças que ela fez
no banco de dados persiste, mesmo se houver falha no sistema.
6.1.3 Desempenho otimizado
Em geral o desempenho otimizado de um SGBD distribuído se baseia em dois pontos:
1. SGBD distribuído é fragmentado permitindo que os dados fiquem armazenados próximos
a seus pontos de acesso proporcionando duas vantagens consideráveis:
•
As transações agem sobre parte do banco de dados fazendo com que a
concorrência pela CPU e pelos periféricos de entrada e saída (E/S) sejam menos
executadas do que nos bancos de dados centralizados;
•
E a localização reduz os atrasos de acesso remoto e conseqüentemente o tempo
de recuperação dos dados.
2. paralelismo entre consultas é o outro ponto do desempenho onde um SGBD distribuído
torna possível a execução de mais de uma consulta ao mesmo tempo, ou desmembrar
essa consulta em várias subconsultas denominadas de intraconsultas.
6.1.4 Expansão de sistemas mais fácil
Para Özsu e Valduriez (2001, p.20), é mais fácil acomodar tamanhos crescentes de
banco de dados em um ambiente distribuído, pois raramente são necessárias revisões
importantes do sistema, a expansão pode ser manipulada aumentando a capacidade da rede.
Um outro aspecto que pode ser levado em consideração é o aspecto econômico, pois custa
muito menos formar um sistema usando computadores menores com capacidade equivalente
a uma máquina de grande porte.
53
6.2
PROBLEMAS E DIFICULDADES DA DISTRIBUIÇÃO DE BANCO DE DADOS
Os problemas encontrados em um sistema de banco de dados impõem uma
complexidade adicional em um ambiente distribuído, essa dificuldade adicional ocasiona
novos problemas influenciados principalmente em três fatores:
Ambiente distribuído: os dados podem ser replicados em um ambiente distribuído,
um banco de dados pode ser projetado de tal forma que o banco de dados inteiro, ou parte
dele, resida em locais diferentes. O banco de dados distribuído é responsável por escolher
uma das cópias dos dados solicitados para acesso em cada recuperação, assegurar que o
efeito de uma atualização se reflita em toda e qualquer cópia desse item de dados .
Falhas em sites isolados: em caso de falha ou se um site estiver fora do ar durante a
execução de uma atualização o sistema deverá assegurar que os efeitos se reflitam nos
dados residentes nos sites defeituosos assim que os mesmos se recuperarem.
Disponibilidade: como cada site não pode ter informações instantâneas sobre ações
que estão sendo realizadas no momento nos outros sites, a sincronização de transações em
vários sites é consideravelmente mais difícil que no caso de um sistema centralizado.
Além desses fatores de complicação outros fatores em potencial são discutidos em
seguida.
Complexidade : em fator da distribuição a complexidade de um sistema de
gerenciamento de banco de dados aumenta em relação a um sistema centralizado, pois além
de encontrar problemas idênticos aos encontrados em um sistema centralizado, encontra-se
um conjunto de problemas não resolvidos providos da distribuição.
Custo: os sistemas distribuídos além de exigirem hardware adicional por residirem em
locais diferentes, exigem alguns de itens software e de comunicação adicionais e mais
complexos para resolver alguns problemas técnicos. O fator de custo mais importante é o da
replicação do esforço. Como as instalações de computadores são configuradas em diferentes
locais, torna-se necessário empregar pessoas para manter estas instalações. Por isso o
compromisso entre o aumento da rentabilidade devido ao uso mais eficiente e oportuno das
informações e o aumento dos custos de pessoal tem de ser analisado com cuidado.
54
Distribuição de controle: pode ser visto tanto como uma vantagem como uma
desvantagem, pois, a distribuição cria problemas de sincronização e coordenação tornando o
controle distribuído uma obrigação.
Segurança: ao contrário dos bancos de dados centralizados que possuem uma certa
facilidade no aspecto segurança por estar em um único lugar, em um sistema de banco de
dados distribuído
além dos problemas encontrados em bancos de dados centralizados,
encontra-se uma rede envolvida, e esta possui seus próprios requisitos de segurança que se
agregam ao do banco de dados, tornando assim a segurança em um sistema de banco de
dados distribuído mais complexa do que em sistemas centralizados.
6.3
RECUPERAÇÃO
Para Bell e Grimson (2002, p.224) a habilidade de assegurar a consistência de um
banco de dados na presença de falhas imprevisíveis de componentes de hardware e de
software é uma característica essencial de todos os sistemas de gerenciamento de banco de
dados. O papel de gerenciamento de um banco de dados deve garantir a recuperação do
banco de dados em uma forma consistente.
6.3.1 Controle de Transações e Recuperação
A transação representa a unidade básica da recuperação em um sistema de
gerenciamento de banco de dados. O papel do gerente da recuperação é garantir duas das
quatro propriedades de A.C.I.D, a durabilidade e atomicidade na presença de falhas
imprevisíveis. A consistência e o isolamento, outras duas propriedades de A.C.I.D, são
principalmente de responsabilidade do módulo de controle da concorrência (BELL; GRIMSON,
1992, p.226).
O gerente de recuperação tem que se assegurar de que, na recuperação de falhas,
qualquer uns todos os efeitos de uma transação dada, que esteja gravado permanentemente
no Banco de Dados(BD). A situação é complicada pelo fato que a gravação no BD não é um
procedimento atômico (única etapa), e consequentemente é possível que uma transação
tenha cometido apenas uma etapa e não terem sido gravado permanentemente no BD por
55
não ter alcançado o mesmo. Quando uma transação emite uma gravação ao BD, os dados
estão transferidos do espaço de trabalho local para a uma área (buffer) da memória do BD.
Esta área ocupada é uma área especial na memória principal onde os dados são transferidos
para um armazenamento secundário. Está área de buffer opera como um esconderijo
temporário em que as parcelas do BD podem residir temporariamente. E somente quando
todos os índices do buffer
foram nivelados é que as operações de update podem ser
executadas ao armazenamento secundário e consideradas como permanentes.
As falhas podem variar desde falhas simples, que afetam somente uma transação a
uma falha maior que afeta todas as transações em um determinado local. Os meios de
armazenamento podem falhar em consequência dos ruídos elétricos, discos e pelas
conseqüências do ambiente distribuído estar em uma rede que pode falhar ao
fazer a
comunicação entre sites. A principal função do gerenciamento de recuperação é de identificar
quais as transações foram executadas com sucesso e quais as que tiveram problemas. Os
arquivos (logs) do banco de dados tem um papel essencial nesta recuperação.
6.3.2 Arquivos de Log
Todas as operações no BD realizadas por todas as transações são gravadas em um
arquivo de log. Tem-se um arquivo de log para cada SGBD que é compartilhado por todas as
transações sob o controle daquele SGBD, em um ambiente de banco de dados
distribuído(BDD), cada local terá seu próprio registro separado. Estes arquivos são gerados
pelos SGBDS cada vez que um dos seguintes comandos é emitido por uma transação:
•
inicia transação;
•
escrita ( inclusão, exclusão e atualização);
•
confirma transação;
•
aborta transação.
Os registros de logs são vitais para o processo de recuperação, para tanto,
normalmente é duplicado de modo que, por acaso uma cópia for perdida ou danificada, uma
56
segunda possa ser usada. Essa cópia normalmente era feita em fitas magnéticas por serem
mais confiáveis e mais baratas. Entretanto, os SGBD’s de hoje podem recuperar-se
rapidamente das falhas por possuírem um sistema de armazenamento próprio, de acesso
rápido e mais confiável.
6.3.3 Ponto de checagem
Uma as principais dificuldades do gerenciamento de recuperação é descobrir qual a
principal falha e quais foram às transações que foram executas e quais não foram.
TC5
TC4
TC3
TC2
TC1
Assíncrono
(a)
tc
Falha
tf
TC5
TC4
TC1
(b)
Síncrono
tc
Falha
tf
Figura 20(a). Classificação para transação usando pontos de checagem assíncrono
Figura 20(b). Classificação para transação usando pontos de checagem síncrono.
Para limitar a busca, são criados pontos de verificação periódicos que é onde o
gerente de recuperação pode voltar a um ponto mínimo. Existem acessos para pontos de
checagem, nomeados síncronos e assíncronos. Com ponto de checagem assíncrono é
57
possível continuar o processo do sistema a partir de um ponto criado como mostra na figura
acima. Já com um checkpoint síncrono , o sistema pára, aceitando qualquer nova transação
até que todas as transações executadas tenham acabado.
6.4
CAUSAS DE FALHAS
Existem muitas causas diferentes para falhas, mas pode-se classificar como principais
causas de falhas em SGBDD as seguintes:
•
falha de transação local;
•
falhas em sites;
•
falhas midias;
•
falhas na rede de comunicação.
6.4.1 Falha do local da transação
As falhas de uma transação individual pode ser causadas em várias maneiras:
1) Aborto induzido da transação: neste caso o programador da aplicação escreveu o
código para prever um erro em particular, o gerenciamento recuperação executa
conseqüentemente rollback da transação e nenhuma outra transação é afetada.
2) Falha imprevista da transação : estes tipos de falhas são causadas por erros em
programas de aplicações. Neste caso o sistema deve detectar que a transação falhou e
informar ao gerente de recuperação que deve fazer rollback da transação. Nenhuma outra
transação deve ser afetada.
3) Aborto induzido pelo sistema: ocorre quando uma transação que está sendo executada
se opõe a uma outra transação, neste caso o sistema deve prover além de rollback da
transação um bloqueio das demais transações que estão sendo executadas.
58
As falhas de transação são diretamente voltadas ao software, por isso, as estatísticas
a respeito das falhas em transações são escassas e mesmo que houvessem poderiam ser
consideradas duvidosas, pois retratariam a análise de um sistema ou caso em especial.
6.4.2 Falhas em sites
Estes tipos de falhas geralmente estão relacionadas à falhas de hardware. Desta
forma a análise e caracterização da falha tornam-se difícil. Considerando que a falha está
geralmente associada à perda de informação, uma solução considerada simples é a utilização
de banco de dados secundários podendo ser até mesmo em um outro site.
6.4.3 Falhas de mídia
As falhas de mídia geralmente são representas como erro de sistema operacional,
uma solução rápida e simples para o problema é a utilização de algum sistema de
espelhamento ou replicação local do sistema de armazenamento (discos
ou fitas
magnéticas).
6.4.4 Falhas na rede de comunicação
As falhas apresentadas acima são tanto de caráter centralizado como distribuído,
porém, as falhas de comunicação são unicamente de caráter distribuído. Uma característica
interessante é o particionamento da rede, ou seja, quando a linha cai forma-se duas sub-redes
isoladas, o que pode não acarretar grandes prejuízos, principalmente caso as técnicas de
replicação tenham sido utilizadas. Em caso de uma mensagem não alcançar seu destino, dois
procedimentos podem ocorrer, a mensagem pode ser bufferizada para posterior envio assim
que o site remontar sua conexão, ou simplesmente ser perdida.
A utilização de sistemas de temporização são imprescindíveis neste contexto, bem
como deve-se prover um mecanismo de informação ao remetente da mensagem, segundo
Bell e Grimson.
59
6.5
PROTOCOLOS DE EFETIVAÇÃO
Pode-se dizer que para garantir atomicidade entre os sites, quando uma transação T é
iniciada e envolve mais de um site, todos os sites envolvidos com a transação T devem
concordar com o término da mesma. É preciso que T seja efetivada em todos os sites, ou
então, deverá ser abortada em todos eles. Para assegurar que isso ocorra, o coordenador da
transação T precisa executar um protocolo de efetivação.
Para Silberschatz, Korth e Sudarshan(1999) os protocolos de efetivação mais simples
e mais utilizados são os protocolos de efetivação em duas fases(two-phase commit protocol –
2PC) e o protocolo de efetivação em três fases (three-phase commit protocol- 3PC) que um
pouco mais complexo mas elimina algumas desvantagens do protocolo de efetivação em duas
fases.
6.5.1 Protocolo de efetivação em duas fases (2PC)
Em Silberschatz, Korth e Sudarshan (1999, p. 606) efetivação em duas fases pode ser
exemplificada por: “ Seja T uma transação iniciada no site S1 e seja C1 o coordenador da
transação S1”.
Quando a transação T termina, isto é, quando todos os sites em que T é executada
informam a C1 que a transação esta completa é que se inicia o protocolo 2PC, ou seja, um
único coordenador global é que decide se a transação vai ser validada ou se vai ser abortada,
e os demais participantes que executam os acessos e os recursos da transação, apenas
votam se a transação vai ser validada ou abortada. Se um participante votar para abortar a
transação, o coordenador tem que aceitar sua decisão e aborta a transação, se todos os
participantes votarem para que se efetive a transação então o coordenador deve efetivá-la
para todos.
A idéia central do protocolo de efetivação em duas fases denota a conversa entre um
site coordenador e os demais sites. A troca de mensagens retrata considerações a respeito de
bloqueio de recursos e da possibilidade de execução da transação corrente. O protocolo 2PC
pode ocorrer de forma centralizada (em um único site) ou de forma distribuída (a partir de um
60
site especifico),
tendo os mesmos passos e a mesma metodologia iguais para as duas
situações.
6.5.1.1 Variações no modelo 2PC
Segundo Bell e Grimson(1992) o protocolo de efetivação em duas fases é eficiente do
ponto de vista da transação, porém pode-se realizar algumas variações no modelo a fim de
aumentar sua performance, principalmente se considerada a característica dinâmica do
processo como um todo.
Protocolo 2PC com Abort Presumido: Esta técnica presume-se em otimizar o
protocolo utilizando-se de informações a respeito de estados anteriores dos sites. Com isso é
possível que se tenha um histórico de disponibilidades dos sites, encontrando assim
informações indisponíveis. A vantagem na utilização desta metodologia é que antes mesmo
do inicio da troca de mensagens o sistema irá presumir um abort, melhorando a perfomance.
Protocolo 2PC com Commit Presumido: Este protocolo baseia-se na idéia de que se
nenhuma informação sobre uma transação existir, esta poderá ser considerada executada. A
utilização deste protocolo visa eliminar o problema que pode ocorrer com o protocolo com
abort presumido, que diz respeito à possibilidade do coordenador considerar erroneamente o
abort presumido.
6.5.2 Protocolo de efetivação em três fases (3PC)
O protocolo de efetivação em três fases designa um protocolo de não utilização de
bloqueio. A idéia baseia-se em não bloquear um certo recurso quando este fizer parte de um
site que esteja em um estado de falha. Porém deve-se criar um ambiente onde se garanta a
atomicidade das transações, tal como o 2PC.
Pode-se dizer que a grande diferença do protocolo 2PC para o 3PC é que o no 3PC
existe uma fase de controle a mais no protocolo, assim, tem-se a possibilidade de gerar o
bloqueio dos recursos em uma fase mais adiante do processo, e o que diminuirá o número de
conflitos a recursos, e aumentará a performance geral do sistema. As mesmas considerações
deverão ser feitas quanto ao protocolo de 2 fases, com a significativa diferença de que há um
61
estado de pre-commit. Assim, antes de se enviar um comando de commit e finalizar a
operação o coordenador enviará um pre-commit, que é o momento quando a transação será
preparada. Nota-se que com esta técnica pode reduzir o tamanho do átomo da transação,
reduzindo consideravelmente o risco de conflitos e a necessidade de reinicializações.
Novamente, todas as considerações quanto a timeouts para os participantes deverão
ser feitas, considerando agora o novo estado agregado de pre-commit.
Da mesma forma devem ser feitas considerações quanto à falhas que venham a
ocorrem durante o estado de pre-commit, exatamente da mesma forma que foi mencionado
no protocolo 2PC. Sendo este o último momento em que o procedimento poderá ser
recuperado, do ponto de vista de sua recuperação.
Concluindo a análise do 3PC perante o 2PC evidencia-se a vantagem do não bloqueio
(durante o processo) dos dados pelo 3PC, porém atesta-se no mesmo instante a sua
vulnerabilidade, que culmina em um ganho da performance total, devido a redução do número
de bloqueios, que gerarão menos conflitos culminando em menos reinicializações.
7
ARQUITETURA DE SGBDS DISTRIBUÍDOS
A arquitetura de um sistema define sua estrutura, ou seja, identificam-se os
componentes a serem utilizados, atribui-se funções aos componentes e especificam-se os
inter-relacionamentos e interações entre esses componentes.
Segundo Ozsu e Valduriez(2001) para projetar um modelo arquitetônico de um
SGDBDS distribuído deve-se levar em consideração três características: a autonomia de
sistemas locais, sua distribuição e sua heterogeneidade.
7.1
AUTONOMIA
Para Özsu e Valduriez (2001, p.88), “a autonomia se refere à distribuição de controle,
não de dados. Ela indica até que grau SGBDs individuais podem operar independentemente”.
Alguns fatores da autonomia são explícitos, como, o fato dos sistemas componentes trocarem
ou não informações, de executar transações independentemente e de um deles ter ou não
permissão para modificá-las.
Segundo Gligor e Popescu-Zeletin apud Özsu (2001), especificam as dimensões de
autonomia como:
1. As operações locais dos SGBDs individuais não são afetadas por sua participação no
sistemas de vários bancos de dados;
2. A maneira pela qual os SGBDs individuais processam suas consultas não deve afetar o
conjunto;
3. A consistência do sistema também não pode ser afetada quando ocorre a junção dos
bancos ou um deles desliga-se do conjunto.
Já segundo Du e Elmagarmid apud Özsu (2001), especifica as dimensões de
autonomia como:
1. Autonomia de projeto: SGBDs individuais são livres para usar o modelo de dados e as
técnicas de gerenciamentos que preferirem.
63
2. Autonomia de comunicação: cada SGBD é livre para tomar sua própria decisão quanto ao
tipo de informação que deseja fornecer ou ao software que controla sua execução.
3. Autonomia de execução: cada SGBD executa as transações do modo que desejar.
Uma última característica importante é o isolamento total, onde os sistemas individuais
são SGDBs independentes, não sabendo da existência de outros SGBD e sem capacidade de
comunicação.
7.2
DISTRIBUIÇÃO
Pode-se dizer que autonomia trata de questões sobre distribuição de controle, e a
distribuição refere-se aos dados, ou seja, a distribuição física dos dados. Em
Özsu e
Valduriez (2001, p.89) diz que existem várias maneiras de se distribuir SGBDs, mas pode-se
dividir as alternativas de distribuição em duas classes: a distribuição cliente/servidor e a
distribuição não hierárquica.
7.3
HETEROGENEIDADE
Observa-se com a utilização de SGBDs distribuídos vários níveis de heterogeneidade,
por exemplo, diferenças em hardware, software, protocolos de interligação de rede e até
mesmo variações em gerenciadores de dados. Para este trabalho pode-se dizer que as
diferenças mais importantes esta relacionada a : modelos de dados, linguagens de consulta e
protocolos de gerenciamento de transação.
Muitos estudos são feitos para padronização dos SGBDS distribuídos, mas neste
trabalho veremos duas arquiteturas de referência para um SGBD distribuído: sistemas clienteservidor, SGBDs distribuído não hierárquicos.
64
7.4
SISTEMA CLIENTE-SERVIDOR
Uma arquitetura criada na década de 1990, caracterizada por fornecer uma arquitetura
em dois níveis, dividindo as funções um duas classes, funções de servidor e funções de
cliente, tornando-se assim mais fácil de gerenciar a complexidade dos SGBDs modernos e a
complexidade da distribuição (LONEY, 1999, p.504). No entanto, é importante observar que,
computação cliente/servidor é diferente de SGBD cliente/servidor, pois uma trata apenas dos
processos e a outra refere-se a máquinas reais em locais diferentes.
Figura 21. Arquitetura cliente/servidor
Pode-se dizer que a maior parte do gerenciamento dos dados é feita pelo servidor, ou
seja, todo o processamento de otimização de consultas, gerenciamento de transações e
gerenciamento de armazenamento são administrados pelo servidor. No cliente fica apenas à
parte de interface com o usuário e alguns processos que podem ser tratados em cachê como,
por exemplo, o gerenciamento dos bloqueios de transações. Este tipo de arquitetura é
bastante comum em sistemas relacionais, nos quais a comunicação entre o cliente e o
servidor é feita através de instruções SQL. Sendo assim o servidor faz todo o trabalho e
devolve ao cliente apenas a relação resultante.
Segundo Ozsu; Valduriez(2001) existe vários tipos de arquitetura cliente/servidor,
porém o mais simples e mais utilizado é o caso em que existe um único servidor e vários
clientes, esta arquitetura é chamada de vários clientes-servidor único.
Deve-se salientar que a arquitetura de um sistema de banco de dados distribuídos é a
de servidor/servidor, no qual os servidores compartilham os dados entre si. Quando um dos
65
servidores requer uma transação junto ao outro, o servidor remetente age como cliente, e o
outro executa as instruções que lhe são passadas, retornando os resultados obtidos.
Figura 22. Arquitetura servidor/servidor
7.5
SISTEMAS DISTRIBUÍDOS NÃO HIERÁRQUICOS
A grande diferença dos sistemas não hierárquicos é que não existe distinção entre
máquinas clientes e servidoras, ou seja, cada máquina tem a funcionalidade de SGBD e pode
comunicar-se com outras máquinas para executar transações nos bancos. Outras
características importantes a serem mencionadas são: os esquemas conceituais locais são
mapeamentos do esquema global em cada site, os banco de dados são projetados top-down,
ou seja, de cima para baixo e também tem-se a presença de um administrador de banco de
dados em cada site. Esse tipo de sistema pode ser definido como “sistemas completamente
distribuídos”.
Segundo Ozsu; Valduriez(2001) em um sistema não hierárquico as máquinas são
compostas de processador do usuário e o processador de dados. Essa divisão ocorre para
que haja um controle local sobre a administração dos dados. O processador do usuário possui
quatro elementos :
66
1. O tratador da interface do usuário: responsável pela interpretação dos comandos do
usuário e pela formatação dos dados do resultado conforme retornam.
2. O controlador de dados semânticos: utiliza as restrições de integridade e as
autorizações definidas como parte do esquema conceitual global, afim de verificar se a
consulta do usuário pode ser processada.
3. O otimizador e decompositor de consultas globais: é responsável por definir a
estratégia para executar consultas globais e transformá-las em consultas locais.
4. O monitor de execução distribuída: faz a coordenação da execução distribuída da
solicitação do usurário.
O processador de dados é composto por três elementos:
1. O otimizador de consulta local: atua como seletor de caminho de acesso, ou seja, é
responsável pela escolha do melhor caminho de acesso para acessar qualquer dado.
2. O gerenciador de recuperação local: garante que o banco de dados local permanecerá
consistente, mesmo na situação de falhas.
3. O processador de suporte runtime: além de conter o gerenciador de buffers do banco
de dados, que é responsável por manter os buffers de memória principal e gerenciar os
acessos aos dados, faz o acesso fisicamente ao banco de dados de acordo com a
estratégia gerada pelo otimizador de consultas.
7.6
PROJETO DE BANCO DE DADOS DISTRIBUÍDO
Pode-se dizer que até este momento vimos vantagens, problemas, alternativas e
possibilidades de distribuição de banco de dados, mas em um projeto de banco de dados
distribuído é que percebemos realmente a complexidade da distribuição. Em um projeto de
sistemas de computadores distribuído tomam-se decisões sobre a distribuição dos dados, dos
programas pelos sites e até mesmo da própria rede.
Segundo Levin e Morgan apud Ozsu (2001) a organização de sistemas distribuídos
pode ser pesquisada através de três dimensões ortogonais:
67
•
Nível de compartilhamento: pode-se ter: nenhum compartilhamento; onde cada site
possui seus dados e os mesmos não possuem acesso a qualquer arquivo de outros sites.
Também temos o nível de compartilhamento de dados; onde todos os programas são
replicados em todos os sites. E por último o compartilhamento de dados mais programas;
neste caso tanto os programas como os dados podem ser compartilhados.
•
Comportamento dos padrões de acesso: os padrões de acesso podem ser estáticos ou
dinâmicos, ou seja, podem se alterar no decorrer do tempo ou não.
•
Nível de conhecimento sobre o comportamento do padrão de acesso: essa é uma
alternativa de dimensão teórica. As alternativas práticas são as que os projetistas tenham
informações completas ou parciais do padrão de acesso dos usuários.
Para Ceri et al. apud
Ozsu e Valduriez (2001) um projeto de banco de dados
distribuído pode ser resolvido de duas maneiras: abordagem top-down e a abordagem bottomup.
O processo de top-down caracteriza-se pelas atividades começarem com a análise dos
requisitos e em seguida duas atividades paralelas: projeto de visão e projeto conceitual. O
projeto de visão é responsável pela definição das interfaces para os usuários e o projeto
conceitual é responsável por determinar os tipos de entidades e seus relacionamentos.
Também no projeto top-down, devemos se preocupar em manter um relacionamento
entre o projeto conceitual e o projeto de visões para garantir que os requisitos de entidades e
relacionamentos façam parte do esquema conceitual para todas as visões.
68
Análise de
requisitos
Requisitos do
sistema
Entrada
Projeto
conceitual
Integração de visões
Informações
Esquema
Projeto de
visões
Definições do
esquema
Entrada
Projeto
e
distribuição
Do usuário
Esquemas
conceituais locais
Projeto
físico
Esquema
físico
Feedback
Observação e
monitoramento
Feedback
Figura 23. Processo do projeto top-down (ÖZSU; VALDURIEZ,2001)
Na abordagem bottom-up o principal objetivo é de integrar esquemas conceituais
locais em um único esquema global. Esta abordagem é apropriada para projetos de banco de
dados que esta sendo iniciado e está sendo projetado desde o início.
O processo de bottom-up existe principalmente em um contexto em que os bancos de
dados são heterogêneos.
Porém, este trabalho concentra-se nas principais questões do
projeto top-down: fragmentação e alocação.
Para Özsu; Valduriez (2001), existem duas formas fundamentais de fragmentação
horizontal e vertical, pode-se unir as duas estratégias formando a fragmentação híbrida. Uma
das principais razões para fragmentar as relações é que diminuirá o tráfego na rede cada vez
que o usuário fizer uma solicitação ao sistema ou efetuar uma transação, isso sem que haja
também uma degradação de performance.
69
7.7
FRAGMENTAÇÃO HORIZONTAL
Segundo Özsu; Valduries(2001) a fragmentação horizontal consiste em particionar
uma relação por suas tuplas fazendo com que cada fragmento tenha um subconjunto de
tuplas da relação que obedeça a um critério especifico. Pode-se dividir este tido de
fragmentação em: primária e derivada, sendo que a diferença entre a fragmentação horizontal
primária e a fragmentação horizontal derivada é que na primeira a fragmentação é executada
a partir do uso de predicados sobre a relação que se deseja particionar e, na segunda, a
relação resultado da definição de predicados sobre outra relação que não aquela que vai ser
fragmentada.
Empresa 1
EMP_COD EMP_NOME
EMP_CNPJ
EMP_TEL
LOC_COD
1
Expresso S. M
87.542.254/0001-20 323-1050
1
2
UnoChapeco
05.253.215/0001-55 323-2015
1
3
Coca-Cola
00.000.252/2253-22 362-2536
3
4
AMBEV
32.542.366/0001-23 586-3233
3
Figura 24. Base de Dados de exemplo de fragmentação horizontal
No caso da fragmentação horizontal primária é definida conforme o exemplo abaixo da
seguinte maneira:
R1 = σF(empresa), sendo que
F
representa a fórmula empregada para obter o
fragmento R1.
Pode-se também representar da seguinte maneira os fragmentos 1 e 2 do exemplo
abaixo:
70
EMPRESA1 = σ <loc_cód=1 > (EMPRESA)
EMPRESA2 = σ < loc_cod = 3 > (EMPRESA)
A partir da relação acima pode-se dividir em fragmentos baseados em suas tuplas:
EMPRESA1
EMP_COD EMP_NOME
EMP_CNPJ
EMP_TEL
LOC_COD
1
Expresso S. M
87.542.254/0001-20 323-1050
1
2
UnoChapeco
05.253.215/0001-55 323-2015
1
EMPRESA2
EMP_COD EMP_NOME
EMP_CNPJ
EMP_TEL
LOC_COD
3
Coca-Cola
00.000.252/2253-22 362-2536
3
4
AMBEV
32.542.366/0001-23 586-3233
3
Figura 25. Exemplo Fragmentação horizontal
A relação foi dividida em duas, mas a título de exemplificação uma única relação pode
ser particionada em quantos fragmentos forem necessários.
Na fragmentação horizontal derivada é necessário fazer uma semijunção para que
possa ocorrer o particionamento.
71
LOCALIDADE
LOC_COD LOC_DESC
1
Chapecó
2
Pinhalzinho
3
Nonoai
EMPRESA
EMP_COD EMP_NOME
EMP_CNPJ
EMP_TEL
LOC_COD
1
Expresso S. M
87.542.254/0001-20 323-1050
1
2
UnoChapeco
05.253.215/0001-55 323-2015
1
3
Coca-Cola
00.000.252/2253-22 362-2536
3
4
AMBEV
32.542.366/0001-23 586-3233
3
Figura 26. Base de Dados de exemplo de fragmentação horizontal
Fragmento1 = localidade
Desc = ‘Chapeco’
LOC_DESC
empresa
EMP_COD
EMP_NOME
Chapecó
1
Expresso S. M
Chapecó
2
UnoChapeco
Figura 26. Exemplo de fragmentação horizontal derivada
Essa técnica de fragmentação parece simples, mas deve se levar em conta que em
um grande modelo de banco de dados, as relações possuem ligação com mais de uma
relação, formando com isso mais de um fragmento derivado.
72
7.8
FRAGMENTAÇÃO VERTICAL
Segundo Özsu; Valduriez (2001) a fragmentação vertical é definida de acordo com as
aplicações que os usuários estão usando, consiste em particionar uma relação por seus
atributos.
EMPRESA
EMP_COD EMP_NOME
EMP_CNPJ
EMP_TEL
1
Expresso S. M
87.542.254/0001-20 323-1050
2
UnoChapeco
05.253.215/0001-55 323-2015
3
Coca-Cola
00.000.252/2253-22 362-2536
4
AMBEV
32.542.366/0001-23 586-3233
Figura 27. Exemplo de fragmentação vertical
Pode-se obter o seguinte fragmento a partir da relação empresa:
EMPRESA 3
EMP_COD EMP_NOME
1
Expresso S. M
2
UnoChapeco
3
Coca-Cola
4
AMBEV
Figura 28. Representação fragmentação horizontal
73
EMPRESA 4
EMP_CNPJ
EMP_TEL
87.542.254/0001-20
323-1050
05.253.215/0001-55
323-2015
00.000.252/2253-22
362-2536
32.542.366/0001-23
586-3233
Figura 29. Representação fragmentação horizontal
Neste caso a
partição criada a partir da relação empresa contém os atributos
EMP_COD e EMP_NOME mas poderia ser feito um particionamento com o número de
atributos necessários ao projeto. Tem-se uma particularidade na fragmentação vertical que
obriga que a relação resultante contenha todas as chaves primárias da relação proprietária,
tanto a fim de construir a relação original.
7.9
FRAGMENTAÇÃO HÍBRIDA
Em muitos casos apenas a fragmentação horizontal ou a fragmentação vertical são
suficientes para atender as necessidades de um determinado projeto, mas, em outros casos
necessitamos utilizar a fragmentação horizontal seguida da fragmentação vertical ou viceversa o que chamamos de fragmentação híbrida. Este tipo de particionamento é estruturado
em árvore, pois as duas estratégias são aplicadas uma após a outra formando assim uma
árvore de decisão. Este tipo de fragmentação também pode ser denominada de fragmentação
mista ou fragmentação aninhada.
74
R
R1
R1
R2
R1
R1
R1
Figura 30. Fragmentação híbrida
Em uma estrutura de fragmentação híbrida os níveis de aninhamento podem ser
grandes e variam conforme necessidade do projeto, porém, temos algumas regras a seguir,
no caso da fragmentação horizontal, deve-se parar quando cada fragmento consistir em uma
única tupla, já na fragmentação vertical o ponto de término é um atributo por fragmento.
7.10
REGRAS DE FRAGMENTAÇÃO
Para assegurar que os fragmentos manterão a consistência e o banco de dados não
sofrerá nenhuma mudança durante o processo de fragmentação, existem 3 regras básicas
que garante essas condições (ÖZSU; VALDURIEZ,2001):
Completeza: Quando fragmenta-se uma relação em N fragmentos, a completeza
garante que não haverá perda de dados, ou seja, será possível encontrar todos os dados da
relação global nos fragmentos, sendo que na fragmentação horizontal a completeza atua com
as tuplas e na fragmentação vertical com os atributos.
Reconstrução: a reconstrução garante que seja possível reconstruir uma relação
global a partir de seus fragmentos através de uma operação de álgebra relacional, garantindo
que sejam mantidas as restrições definidas sobre os dados.
No caso da fragmentação
horizontal a reconstrução é obtida através da operação de união e na vertical pela operação
de junção.
75
Disjunção: se uma relação for fragmentada horizontalmente em N fragmentos, os
dados de N1 não poderão estar em N2. Esse critério garante que a relação global está
disjunta. No caso da fragmentação vertical, a disjunção é definida sobre os atributos que não
fazem parte da chave primária, pois cada fragmento deve conter todas as chaves primárias da
relação global.
8
REPLICAÇÃO
Para Buretta (1997), “replicação é um serviço de administração da cópia, que através da
análise, implementação, administração e monitoramento de um serviço, garante a
consistência e segurança nas informações replicadas”, ou seja, é a cópia de informações de
um ou mais banco de dados para outro semelhante, depois das informações estarem
consistentes.
Pode-se citar algumas funcionalidades de um serviço de replicação:
•
Deve ser escalonável – habilidade para reproduzir volumes pequenos e grandes de dados
por gerentes de recursos heterogêneos.
•
Transformação de dados e serviços – cópias podem ser idênticas ou possuírem uma
semântica equivalente. Cópias idênticas teriam a mesma plataforma, mesmo conteúdo, e
os mesmos dados, cópias com semântica equivalente teriam as mesmas informações mas
plataformas diferentes e tipos de dados possivelmente diferentes.
•
Permitir replicação em ambos os modos, síncrona (tempo real) assíncrona (tempo não
real).
•
Possuir um mecanismo para descrever os dados e objetos a serem reproduzidos.
•
Prover um mecanismo para subscrever os dados e objetos disponíveis para replicação.
•
Prover um mecanismo para inicializar a réplica receptora.
•
Apoiar a administração fim-a-fim na segurança e qualidade nos serviços – garantir a não
corrupção dos dados ou objetos durante o processo de replicação. Em outras palavras os
dados podem mudar de formato, mas não em conteúdo.
•
Deve prover um mecanismo que registre qualquer fracasso durante o trabalho de
replicação.
•
Deve ter um suporte para recuperação automática. Este mecanismo prevê recuperação
depois de tipos específicos de fracassos.
•
Suporte para uma interface ao usuário, para monitorar e prover informações relativas ao
estado da replicação.
77
Há dois tipos básicos de replicação – SÍNCRONA E ASSÍNCRONA
8.1
REPLICAÇÃO DE DADOS SÍNCRONA
A principal característica da replicação síncrona é que a atualização acontece em
tempo real, ou seja, quando um dado é atualizado em uma base de dados o mesmo é
atualizado em todas as outras bases. A grande vantagem deste tipo de replicação é a alta
disponibilidade dos dados que são disponibilizados na hora para todas as bases.
Pode-se dizer que a replicação síncrona é provida de duas maneiras, ou por um
software de administração de banco de dados, ou por um gerente distribuído ou também
chamado de monitor de transações. As atualizações acontecem como uma unidade lógica de
trabalho, em outras palavras, é uma transação tudo ou nada.
8.2
REPLICAÇÃO DE DADOS ASSÍNCRONA
Segundo Burreta (1997), sempre há um grau de atraso entre a transação efetuada na
base e a atualização dos resultados desta transação nas réplicas. Na replicação assíncrona o
processo de replicação ocorre assíncrono a transação originada, ou seja, o período de
latência deve ser maior que zero.
A replicação assíncrona pode ser implementada da seguinte maneira:
Completa por atualização incremental – A atualização incremental é executada
definindo-se um período de tempo, por exemplo, a cada minuto, 10 minutos, a cada hora. Este
implica em processamento em lote.
Propagação delta de eventos – divide-se em dois tipos distintos de implementação,
ou seja, a propagação de eventos pode acontecer pela comunicação de banco de dadospara-banco de dados ou pela comunicação processo-para-processo. A propagação de
eventos implica em processamento temporal.
78
8.3
ATUALIZAÇÃO DAS RÉPLICAS
As formas de atualização das réplicas pode ser dividida em dois modelos; o modelo
master/slave (mestre/escravo) e o modelo update-anywhere.
8.3.1 Modelo mestre/escravo
Pode-se dizer que o modelo mestre/escravo tem como principal característica uma
unidade primária de distribuição dos dados podendo ser centralizada ou distribuída,
fragmentada ou não fragmentada. Sendo que desta unidades todos os dados são atualizados
para os demais sites. Segundo Buretta (1997, p. 44), só existe um único site atualizando a
cópia máster, assim não haverá possibilidade de conflito de atualização.
Também para Buretta, deste modelo são:
-
múltiplas cópias/réplicas de dados;
-
única fonte primária, chamada mestre;
-
as réplicas escravas possuem atributos somente de leitura com a
consistência de dados mantida por meio de um serviço de replicação
assíncrona.
8.3.2 Modelo update-anywhere
No modelo update-anywhere todo e qualquer site tem o mesmo direito de atualizar os
dados que são replicados em qualquer momento ao contrário do modelo mestre/escravo.
Pode se dizer que com isso os sites locais funcionam de forma autônoma. O modelo updateanywhere é mais difícil de se administrar, pois precisa conciliar conflitos de atualizações, isso
faz com que a arquitetura tenha suporte para detectar e mediar os possíveis conflitos de
atualizações simultâneas.
79
“Se a replicação síncrona for usada, um protocolo de efetivação em duas fases
é usado para garantir a consistência das réplicas ao longo da rede. Em outras
palavras, os dados de todas as réplicas estão sempre consistentes, porque
todas as alterações ocorrem sincronamente para todas as cópias por meio de
transações distribuídas. Se a replicação síncrona é usada, todas as
propriedades ACID são preservadas. Adicionalmente, transações distribuídas
concorrentes são serializadas por mecanismos de bloqueios, exatamente
como se fossem executadas localmente”. (BURETTA, 1997).
Se for utilizada a replicação assíncrona para este modelo, o isolamento das
transações, a partir de uma visão global do empreendimento, não pode ser garantido.
Localmente é possível garantir o isolamento, porém, as transações que acontecem em
paralelo não tem qualquer garantia que a transação use o estado mais atualizado do banco de
dados antes de fazer a próxima modificação. É muito complexo manter a consistência dos
dados com replicação assíncrona no modelo update-anywhere.
Segundo Buretta (1997, p. 45), dois tipos de conflitos de atualizações podem ocorrer:
conflitos entre tabelas e conflitos intra tabelas. Os conflitos entre tabelas ocorrem quando
existe relacionamento entre tabelas, geralmente através de chaves primárias e como
resultante de um projeto mau feito de particionamento ao longo dos sites. Este tipo de conflito
pode ocorrer independentemente de os dados estarem armazenados de forma redundante ou
não, como no modelo mestre/escravo.
Os conflitos intra tabelas ocorrem quando dados são armazenados de forma
redundante ao longo de múltiplos locais e a todo momento qualquer uma das réplicas é
considerada uma réplica atualizável. No caso da replicação assíncrona, ambos os tipos de
conflitos são detectados somente após ocorrerem e reparados através de operações manuais
ou por transações de compensação geradas pelo sistema, desfazendo as transações antes
que sejam efetivadas.
A aplicação de transações de compensação significa que algumas vezes as
atualizações executadas por uma transação não são duráveis, assim, o “D” das propriedades
ACID é violado. A perda desta propriedade gera um efeito replicante em que as transações
são subseqüentemente desfeitas, podendo ser visualizadas por outras transações antes que o
processo de decomposição – rollback – ocorra. Por sua vez, estas transações ditas
secundárias também requerem ações de compensação para garantir a consistência do banco
de dados, continuando-se este processo. BURETTA (1997, p. 46) diz também que usar
replicação assíncrona no modelo update-anywhere é como desabilitar todos os mecanismos
80
de bloqueio em um banco de dados centralizado. Recomenda também que este modelo
somente seja usado para sistemas de bancos de dados com um baixo grau de atualização,
implementando-se esquemas de distribuição que minimizem o número de atualizações das
réplicas, aplicando-se regras de integridade referencial e notificando aplicações quando
conflitos de atualização forem detectados, mesmo que processos de reconciliação estejam
disponíveis, fornecidos através do próprio gerenciador de banco de dados ou através de
processos implementados através da aplicação.
9
INTERBASE
O Banco de dados Interbase é uma ferramenta de gerenciamento de banco de dados
relacional baseado em uma arquitetura cliente/servidor. Um banco de dados relacional nada
mais é do que um conjunto de objetos que proporcionam o armazenamento de dados e sua
organização de modo a se tornarem informações completas, provendo de segurança e
integridade relacional e referencial entre os dados. Pode-se citar algumas características
deste gerenciador:
•
Concorrência em ambientes de leitura e gravação;
•
Flexibilidade no suporte a trigger;
•
Recuperação rápida em queda de servidores;
•
Gerenciamento de eventos mais fácil;
•
Opções de distribuição;
•
Suporte à várias plataformas (Sistemas operacionais);
•
Requisitos de servidores menores;
•
Baixa exigência de hardware;
O Interbase foi desenvolvido em meados de 1985 por uma equipe de engenheiros da
DEC (Digital equipament Corporation). Tendo como nome inicial Groton, desde então foi
sofrendo várias alterações até que finalmente em 1986 onde recebe o nome de Interbase,
iniciando na versão 2.0. Nesta época, a idéia era produzir um SGBDR (Sistema Gerenciador
de Banco de Dados Relacional) que oferecesse benefícios não encontrados em outros da
época.
Pode-se dizer que ao longo de seu desenvolvimento foram-se introduzindo muitas
características, entre elas pode-se citar: Acesso nativo a driver JDBC Commit automático de
duas fases;Sombreamento do Banco de Dados Replicação; Tratamento de Blob´s, Sistema de
Eventos, entre outros.
82
9.1
IBREPLICATOR
Replicar bases de dados significa, copiar dados alterados em uma fonte de dados a
uma ou mais base de dados de destino. Quando ocorre replicação significa que os dados
estão sincronizados em cada site, e isso não necessariamente significa que as bases de
dados de destino sejam idênticas e nem que os valores reais dos dados são os mesmos. Na
maioria dos casos as bases de destino são idênticas, mas existem situações em que
encontramos apenas algumas tabelas replicadas, e também podemos encontrar algumas
tabelas em que apenas parte dos dados são replicados.
A replicação é uma arquitetura que permite que a aplicação mantenha múltiplas cópias
dos dados. Isto é feito normalmente para melhorar o acesso aos dados, permitindo que cada
local da organização mantenha uma cópia dos dados, além de que, os dados de cada site
podem ser alterados e replicados a um ou mais sites. A replicação permite também a
atualização do dados para um único site mestre, ou seja, no caso deste trabalho a matriz da
empresa em questão onde são feitas as movimentações diárias dos dados.
Pode-se implementar diferente arquiteturas de replicação com o IBReplication são
elas:
•
Cópia simples da base de dados;
•
Modelo Import/Export;
•
Modelo Síncrono;
•
Modelo Assíncrono;
Os modelos de replicação já foram explicados no trabalho, porém no caso deste
trabalho iremos utilizar o modelo assíncrono de replicação de dados, sabendo da necessidade
da empresa em questão de atualização diária, porém não constante dos dados em sites
isolados.
O Interbase Replication consiste de um gerente de replicação e um servidor de
replicação, um gerente de replicação funciona em qualquer host de uma rede enquanto um
servidor de replicação irá funcionar somente na máquina em que a base de dados Interbase
83
estiver instalada fisicamente. O servidor de replicação é escrito em linguagem “C” e usado
diretamente em chamadas API’s do Interbase, isto significa que funciona em qualquer
plataforma de suporte do Interbase, e não necessita de nenhum middleware como BDE ou
ODBC para conectar-se ao Interbase. Para funcionamento da replicação o servidor de
replicação precisa saber quais linhas foram modificadas desde a última replicação, e precisa
ler cada linha alterada e mover os dados para a base de destino. Na prática, isto requer um
número razoavelmente grande de tabelas de definições dentro da base de dados de
configuração, bem como determinadas tabelas e gatilhos de cada base de dados a ser
replicada.
A base de dados de configurações possui informações como os nomes das tabelas,
campos chaves e campos de dados e possui também o nome, a posição, os usuários e as
senhas de todas as bases de dados envolvidas na replicação. Cada fonte de dados tem uma
tabela de registro definida REPL_LOG, toda vez que uma linha for inserida, alterada ou
deletada em uma tabela replicada, é inserido um registro nesta tabela gravando a ação feita
na tabela, bem como, o valor dos campos chaves, existe também um outro campo de
seqüência o qual assegura que as linhas sejam replicadas exatamente na mesma ordem que
foram modificadas. Isto é indispensável para integridade de transação e para o
relacionamento de chaves estrangeiras.
9.2
CONFIGURAÇÃO
Para configurar um banco de origem e destino para replicação deve-se criar um novo
projeto no IBReplicator com um nome especifico, este projeto vai criar um banco de dados de
configurações com as seguintes tabelas : config, database, licenses, publisheddb,
relationkeyfields,
relationreplifield,
relations,
relationsyncinfo,
repltimes,
schemata,
subscribeddb. Internamente cria-se um número de Schema que representa cada esquema
criado. Esse número é usado na criação de triggers em cada tabela replicada. Em esquemas
de replicação mais complexos, onde múltiplos BD de configurações podem ser usados,
sugere-se que cada banco de dados use um número diferente para que não haja conflitos.
Após a criação de um novo projeto de replicação o passo seguinte é adicionar as base
de dados de origem e destino, para isso deve-se informar o caminho da base com usuário e
senha de cada base de dados, o dialeto específico de cada banco a ser replicado, a prioridade
84
que servirá para a resolução de conflitos, como por exemplo quando se tentar inserir um
registro que já existe. Outros parâmetros de configurações que podem ser usados são: TIME
FIELD, que é usado para resolução de conflitos em time stamped.Este tipo de configuração
apenas será útil se todos os timestamps nos BDs forem confiáveis e contenham valores
corretos. Assume-se que todas as tabelas tenham um campo de timestamp com o mesmo
nome. RAS information: Se você quer que o IB Replicator ligue para uma outra máquina,
então preencha esses campos. O RAS name é o nome de uma conexão Dial Up do Windows,
com seu nome e senha. Se você não quer desligar a conexão após a replicação ter sido
executada, marque a opção ‘Keep Connection’.
O próximo passo é criar o esquema de replicação, começando com o tipo de que poder
ser “Priority based”
onde cada banco configurado possui uma prioridade previamente
informada para resolução de conflitos. Pode-se ter também um esquema de replicação “timestampd” no caso de bases com confiabilidade no time stamped, ou, um esquema de
replicação “master-slave” onde tem-se um banco configurado para ser mestre e um ou mais
bancos de dados para serem escravos, ou seja, apenas o banco mestre fará replicação para
os demais.
Com a definição das bases de origem e destino e com a escolha do esquema de
replicação a ser usado basta apenas definir quais serão as tabelas e procedures que serão
replicadas. Pode-se também definir quais são as chaves primarias de cada tabela e define-se
também quais os campos que serão replicados caso as tabelas não sejam idênticas. E
finalmente instruir o IBReplicator a criar os gatilhos necessários que serão utilizados para
replicar os dados entre as tabelas origem e destino.Tem-se agora apenas que rodar o
aplicativo RepliServer para iniciar a replicação.
9.2.1 Características adicionais
Logs do sistema são gerados para que se possa ter informações de cada evento de
replicação, como por exemplo, conexões, erros, keyvalues, estatísticas e comandos SQL. A
ferramenta
proporciona uma replicação com esquema de tempo pré-definido, ou seja, o
IBReplServer tem um intervalo de tempo que corresponde a um certo tempo em segundos
entre cada evento de replicação, no entanto você pode configurar as replicações para
ocorrerem de hora em hora, toda sexta-feira ou, no caso deste trabalho, todo o final do dia.
Para que o esquema de replicação ocorra normalmente deve-se iniciar o serviço scheduler,
85
que para o sistema operacional windows NT/2000 deve-se instalar o serviço, e em outros
sistemas apenas deve-se inicia-lo.
10
PROTÓTIPO
O presente capitulo como objetivo apresentar a problematização e a melhor solução
encontrada para o estudo de caso deste trabalho. Além de apresentar passo a passo a
solução proposta.
10.1
CONTEXTUALIZAÇÃO DO AMBIENTE
A Expresso São Miguel, empresa onde será aplicado este protótipo é uma empresa
composta por 59 agências, sua matriz esta localizada na cidade de Chapecó – SC, sua
atividade principal é o transporte de cargas e encomendas, com abrangência nos estados de
Santa Catarina, Paraná e Rio Grande do Sul.
A replicação utilizada pela empresa era feita através da metodologia de exportação e
importação de dados de arquivos texto, processo este controlado por um campo que contem a
data da última alteração feita nos registros. Este método de replicação é chamado DataStamp
porém sujeito a falhas a aplicação. Com a utilização das tecnologias utilizadas e com os
métodos aplicados na distribuição e replicação pretende-se eliminar alguns pontos falhos
deste sistema.
10.2
POR QUE DA DISTRIBUIÇÃO
Podemos dizer que com todo o embasamento teórico pesquisado até o presente
momento neste trabalho, existem muitas vantagens e desvantagem ao utilizarmos tecnologias
de suporte a replicação e distribuição de dados, porém, no caso Expresso São Miguel é viável
a aplicação dessas técnicas para manter um nível de confiabilidade, disponibilidade e
segurança nas aplicações utilizadas. Também por que a possibilidade de utilização da
tecnologia de banco de dados centralizado se torna inviável pela indisponibilidade de acesso
por meio de internet, e por que a maior parte dos tomadores destes serviços são terceiros e
não possuem outros vínculos com a empresa em questão, além da prestação de serviço.
Para o não comprometimento do seu negócio principal que é o transporte de cargas e
encomendas para do o sul do Brasil, a empresa Expresso São Miguel tem a necessidade de
manter réplicas distribuídas de seu banco de dados em cada ponto de atuação, isto para que
as suas transações e seus acordos com clientes e agenciadores possam ser mantidos com
extrema confidencialidade e segurança.
87
Com a implementação deste trabalho os dados atualizados ficaram disponíveis em
uma base de dados para que as agências e filias possam acessá-los no momento em que se
fizer necessário, ou então duas fases por dia já configurado no gerenciador. Ao contrário do
que é feito na atualidade onde os dados ficam disponíveis para a aplicação acessá-lo apenas
no final de cada dia. Também é importante salientar que o método utilizado hoje pela empresa
não dispõe de mecanismos de gerencia e segurança nas transações.
10.3
CRITÉRIOS USADOS PARA FRAGMENTAÇÃO
Com a presença de vários pontos de atuação denominado de agências, e com a
necessidade da disponibilização de dados em cada ponto, definimos então alguns critérios de
fragmentação para alocação dos dados. Como este é apenas um protótipo iremos apresentar
apenas um exemplo de cada critério utilizado para fragmentação, também sabendo alguns
critérios são indispensáveis para fragmentação de uma relação como: a completeza,
reconstrução e disjunção relembrando o conteúdo apresentado neste trabalho.
Foram aplicadas técnicas de fragmentação horizontais, devido ao fato de que as
agências/filias da empresa diferem apenas em relação aos seus clientes e locais de
atendimento. Com isso as tabelas dispostas na modelagem no anexo (anexo II), todas elas
estão disponíveis a todas as agências/filiais da empresa através de suas tuplas.
Algumas tabelas não possuirão nenhum tipo de fragmentação e apenas serão
replicadas na integra para cada site. Estas tabelas que não foram fragmentadas são as
tabelas que devem ser visualizadas em todos os sites sem nenhuma alteração, e as possíveis
alterações destas tabelas serão apenas no site mestre.
Este protótipo fará uso do método de replicação mestre/escravo onde o site principal
(mestre) que é representado pela matriz da empresa faz o papel de administrador de
replicação, ou seja, é neste site que esta disposto todas as regras de replicação. Os demais
sites são fragmentados de tal forma que cada site específico apenas tenha acesso a dados de
seu interesse como por exemplo à relação a seguir:
Tabela de Frete Peso
REG_COD FPE_ATEPESO
EMP_CODIGO CLI_CGCCP
FPE_VALOR
88
1
10
1
89221212000112
10,00
2
15
3
01225325000133
20,00
3
12
1
32225665000102
10,00
4
20
2
04256896000109
30,00
Figura 31. Tabela exemplo de fragmentação horizontal.
Na álgebra podemos representar através das seguintes sentenças:
R1 = σ < EMP_COD=1> (T_FRETEPESO)
R2 = σ < EMP_COD=2> (T_FRETEPESO)
R3 = σ < EMP_COD=3> (T_FRETEPESO)
Onde R1, R2 e R3 são respectivamente ilustradas nas figuras abaixo:
Relação R1
REG_COD FPE_ATEPESO
EMP_CODIGO CLI_CGCCP
FPE_VALOR
1
10
1
89221212000112
10,00
3
12
1
32225665000102
10,00
A relação R1 contém todos os registro da tabela T_FRETEPESO com a cláusula emp_código
igual a “1”.
Relação R2
REG_COD FPE_ATEPESO
4
20
EMP_CODIGO CLI_CGCCP
2
04256896000109
FPE_VALOR
30,00
A relação R2 contém todos os registro da tabela T_FRETEPESO com a cláusula emp_código
igual a “2”.
Relação R3
REG_COD FPE_ATEPESO
EMP_CODIGO CLI_CGCCP
FPE_VALOR
89
2
15
3
01225325000133
20,00
A relação R3 contém todos os registro da tabela T_FRETEPESO com a cláusula emp_código
igual a “3”.
A partir das relações acima dividimos a tabela de frete peso em fragmentos baseados em
suas tuplas.
10.4
PROJETO GLOBAL
No projeto global temos a presença de todas as relações na sua integra e o conjunto
de todos os dados atualizados, pode-se chamar também de site mestre, ou seja, este site
contém todos as regras de replicação, e é nele que são feitas as alterações nos registros que
serão replicados. O modelo global pode ser visualizado no anexo I e vale salientar que este
modelo é apenas um protótipo do modelo real que por opção da empresa não pode ser
apresentado neste trabalho.
10.5
PROJETOS LOCAIS
O modelo local é a divisão do modelo global em partes menores, ou seja, é o modelo
global depois da fragmentação, cada fragmento do modelo global é uma base de dados de
uma agência/filial e é atualizado a partir do modelo global. Podemos visualizar um protótipo do
modelo local no anexo II.
10.6
CONFIGURAÇÃO DA REPLICAÇÃO
Por se tratar de um modelo de replicação mestre/escravo, todas as configurações da
replicação são feitas no site mestre, sendo que é este que coordena a replicação para os
demais sites.
Ao criarmos um mecanismo de replicação utilizando IBReplicator o primeiro passo é a
criação de um banco de dados de configurações, como pode-se observar na figura 32 e 33 os
parâmetro de configuração das bases de dados, este banco de dados não contém as regras
de replicação mas é nele que encontramos dados como por exemplo, os sites que iremos
replicar, quais os usuários de replicação que também se encontra neste banco dados como
90
quais tabelas serão replicadas e quais são as chaves de cada tabela, quais os atributos serão
replicados no caso de fragmentação vertical e o tempo de disparo para cada replicação.
Figura 32. Tela de configuração de Base de Dados.
91
Figura 33. Base de dados de configurações.
Neste exemplo temos a presença da base global e da uma base local, o campo
Descriptive name refere-se ao nome da base de dados, Server é o caminho da base que
estamos nos referindo, no caso de uma base remota coloca-se o endereço de IP da máquina
na referência e o caminho do banco de dados. Adiministrative user name é no nome do
administrador da replicação e sua respectiva senha no campo que segue Adminitrative
password. Após deve-se especificar o dialeto do banco, que para banco criados a partir do IB
6.0 é 3 e no caso de bases criadas com IB 5X é 1. O campo Priority é muito importante pois
especifica o nível de prioridade de cada banco de dados. Isso é utilizado na resolução de
conflitos, como por exemplo, quando se tentar inserir um registro que já existe.
Após a definição das bases de dados a serem replicadas o próximo passo é a criação de
um esquema de replicação que será utilizado na figura 34 abaixo.
92
Figura 34. Criando um esquema de replicação.
De um duplo click no ícone Edit Defaut Settings para marcar a opção
“Conflict
resolution” para garantir que seu esquema de replicação resolva os problemas de conflitos
conforme a configuração de cada bando de dados. Também marcar as opções de criação de
logs de connection, Erros, Key Values e Statistics.
Com estas configurações pode-se adicionar o banco de origem o banco de dados de
origem, ou seja, o banco de dados mestre. Estendendo a treeview até que aparecer os
campos de banco de dados de destino e de origem, click no BD origem e de um dublo click
no ícone add souce database do lado direito.
Informa-se então o banco de dados de origem da replicação e seu respectivo usuário e
senha para replicação conforme mostra figura 35 abaixo.
93
Figura 35. Tela de configuração da base de dados de origem.
Temos algumas configurações ao selecionarmos o BD de origem como: a estratégia
de resolução de conflitos, ou seja, o método de replicação a ser utilizado que no nosso caso
escolhemos a opção Master/slave onde o banco de dados de origem tem todos os privilegio
de alteração como mostra a figura 36.
94
Figura 36. Tela de definição do esquema de replicação.
O próximo passo é selecionar a/as bases de destino e definir quais as tabelas que
serão replicadas e como isso vai ser feito conforme figura 37. De um duplo click no campo
Generate tables, keys e fields então verá a tabela de auto definição. Esta opção só pode ser
utilizada se as tabelas de origem e destino tem a mesma estrutura e todas tenham chaves
primárias definidas. Click no botão generate e todas as suas tabelas origem e destino serão
configuradas.
95
Figura 37. Esquema de replicação
Agora precisa-se instruir o IBRelpManager para criar todos os triggers necessários que
serão utilizados para replicar os dados entre as tabelas origem e destino. Alguns exemplos de
triggers criados poderão ser vistos no anexo III deste trabalho. Pode-se então rodar o
IBRelpServer para iniciar a replicação.
O IBReplServer tem um intervalo de tempo que corresponde a um certo tempo em
segundos entre cada evento de replicação, no entanto você pode configurar as replicações
para ocorrerem de hora em hora, toda sexta-feira ou duas fezes ao dia que será neste caso.
Como mostra a figura abaixo.
96
Figura 38. Configuração do intervalo de replicação
Esta é à parte de configuração, é claro que isto não basta para se ter um sistema de
banco de dados distribuído e replicado, além disso, tudo temos que acompanhar e fazer o que
chamamos de administração da replicação, fazendo consultas a logs e usando de ferramentas
de monitoramento da replicação.
10.7
SOBRE O SISTEMA
O sistema é composto de quatro modelos envolvidos diretamente com a replicação
dos dados e distribuição dos dados, Módulo Agência que é onde necessita os dado
atualizados para emissão dos controles de frete, Módulo Faturamento que é onde o sistema
recebe diariamente o maior volume de dados para movimentação, Módulo Financeiro que é
onde os movimentos são realizados e Módulo Comercial responsável pela alimentação das
informações de tabelas de fretes.
Os módulos Faturamento, Comercial e Financeiro estão situados na Matriz da
empresa em um único banco de dados, ou seja, em um único local fisicamente, este banco
de dados principal contém todas os dados agrupados também chamado de modelo global.
Com relação a base de banco de dados, estão envolvidos dois modelos de dados
diferentes, o modelo local e o modelo global. No modelo local cada filial da empresa possui
97
um conjunto de dados específico e o modelo global também chamado de Mestre contém
todos os dados centralizados. Para suportar esta comunicação a empresa optou por adquirir
um link IPTurbo de 256kb e um sistema de replicação síncrono com o banco de dados
principal, ou seja, todas as transações realizadas internamente são replicadas para uma
segunda base de dados que está na internet e esta sim administra a replicação para as
demais bases localizados em pontos diferente. A base de dados principal é administrada
internamente e apenas dados relevantes as filias são disponibilizados para a replica, sendo
assim a necessidade de comunicação diminui, e o tráfego de rede e processamento
conseqüentemente diminui também.
O esquema proposto pode ser mais bem visualizado na figura 39 abaixo:
Site1
Site 4
Rede de
Site 2
Comunicação
Site 3
Figura 39. Esquema de distribuição proposto.
11
CONCLUSÃO
Ao iniciar o desenvolvimento deste trabalho, algumas dificuldades foram encontradas,
entre elas o modelo de fragmentação e alocação a ser utilizado? Como deveria ser a
replicação e com qual periodicidade deveria acontecer? Qual gerenciador de banco de dados
utilizar? Entre outras questões que envolvem as regras de negocio da empresa onde será
implementado o protótipo.
Com embasamento teórico proposto neste trabalho, contendo assuntos referentes a:
sistemas distribuídos, redes de computadores, banco de dados, sistemas gerenciadores de
bancos de dados, banco de dados distribuídos e replicação, pode-se ter as repostas
necessárias para desenvolvimento do modelo proposto, sendo de extrema importância tanto
para desenvolvimento do esquema de alocação e distribuição do banco de dados como para o
método de replicação dos dados.
Conclui-se com este trabalho que a utilização das tecnologias pesquisadas são de
extrema importância tanto para empresa em questão, como para a região e para o meio
acadêmico, dando suporte para novos trabalhos como para a pesquisa em outros
gerenciadores utilizando novas técnicas e para a empresa a satisfação de resolver um
problema que poderia comprometes ate mesmo o seu principal negócio.
Com a implementação destas tecnologias para disponibilização dos dados para as
agências da empresa, tem-se uma maior confiabilidade nas operações realizadas. Também,
pode-se dizer, que com os testes realizados tanto por parte do sistema gerenciador de banco
de dados (SGBD) como pelo sistema de replicação, constatou-se que as ferramentas suprem
a necessidade da empresa.
O protótipo passou a ser aplicado como projeto piloto na empresa e teve que se fazer
um investimento consideravelmente baixo, porém, terá um enorme retorno com a eliminação
de falhas na comunicação entre seus pontos de atuação trazendo assim maior agilidade e
confiabilidade na elaboração de seus serviços.Porém no caso de outras transportadoras este
modelo deverá sofrer adequações para melhor adaptação.
12
TRABALHOS FUTUROS
Os Sistemas de banco de dados distribuídos estão cada vez mais sendo utilizados
pelas corporações e com isso o surgimento de novas tecnologias, para tanto um sistema
deste tipo deve ser administrado da melhor maneira possível em busca da melhor
configuração. Como projetos futuros para este sistema sugere-se a aplicação de ferramentas
de gerenciamento de replicação e controle de acesso objetivando o monitoramento das
transações.
Com o uso de sistema de administração de banco de dados pode-se obter
informações como, por exemplo, locação com maior acesso a dados, consultas de maior
custo, horários de maior uso da rede para replicação entre outras informações que podem ser
utilizadas para otimização da replicação. Com acesso a estas informações podem-se criar
novos esquemas de replicação e distribuição do banco de dados para que se tenha um
aumento de performance desejado.
Também podem ser criados novos esquemas de replicação para outros sistemas que
a empresa utiliza com suas filias como o sistema de compras e o sistema de frota que fazem o
controle de compras, requisições de mercadoria e o controle da frota respectivamente. E a
utilização de novas tecnologias tanto da parte de gerenciadores de banco de dados como na
área de redes de comunicação como, por exemplo, a utilização de uma rede privada de
dados.
Este trabalho é uma colaboração importante para outros projetos da banco de dados
distribuídos, podendo ser referencia para implementação também de Data Mining, Data
Warehouse e Banco de dados moveis.
13
REFERÊNCIAS
BELL, David; GRIMSON, Jane. Distributd Database Systems. Addison-Wesley Publishing
Company,,1992
BUYYA, R. High Performance Cluster Computing: Architecture and Systems, vol 1. pags 345, New Jersey: Prentice Hall, 1999.
COULOURIS G.; DOLLIMORE J.; KINDBERG T. Distributed Systems Concepts and
Design. 3.ed. Harlow, England: Addison Wesley, 2001.
DATE, C. J.. Introdução a sistemas de Banco de Dados. Tradução da 4ª ed.,
Rio de Janeiro: Campus, 1991.
DIETZ, Hank LINUX Parallel Processing HOWTO, 1998 [online]. Disponível em:
<http://yara.ecn.purdue.edu/~ppLINUX/PPHOWTO/pphowto.html>. Acesso em: marco de
2004.
EMMERICH W. EngineeRING Distributed Objects. Chichester: John Wiley & Sons Ltd,
1999.
FRIEDRICH, Luiz Fernando Curso
Santa Catarina Florianopolis – SC.
de Sistemas de Distribuido, Universidade Federal de
GALLI, D.L. Distributed Operating Systems Concepts and Practice. New Jersey: Prentice Hall,
1998.
MELO, Rubens N.; SILVA, Sidney Dias da,
TANAKA, Asterio K., Banco de
Dados em Aplicações Cliente-Servidor.
Rio de Janeiro: Livraria e Editora
Infobook S.A., 1998.
MYRICOM
Myrinet
Overview,
2001
Disponível
<http://www.myri.com/myrinet/overview/index.html>. Acesso em: marco 2004.
em:
OMG – Object Management Group. The Common Object Request Broker: Arc hitecture and
Specification, Rev 2.3 OMG Inc., Framingham, Mass., March 1998.
ÖZSU, M. Tamer; VALDURIEZ, Patrick. Princípios de Sistemas de Banco de Dados
Distribuídos. Tradução da 2ª ed., Rio de Janeiro: Campus, 2001.
RADAJEWSKI, J., EADLINE D. Beowulf HOWTO. 1998. [online] Disponível
em:<http://www.LINUXvoodoo.com/howto/HOWTO/Beowulf-HOWTO/Beowulf-HOWTO4.html>. Acesso em: marco de 2004.
STALLINGS, W. Operating Systems Internals and Design Principles. 3.ed. New
Jersey:Prentice -Hall, 1998.
TANENBAUM, Andrew S. Redes de Computadores. Rio de Janeiro: Campus, 1997.
TANENBAUM A. S. Sistemas Operacionais Modernos, Rio de Janeiro: Prentice-Hall do
Brasil Ltda, 1995.
101
TANEMBAUM, Andrew S. & STEEN, Maarten van. “Distributed Systems: Principles and
Paradigms”, Prentice Hall, 2002, p.803.
VERÍSSIMO, Paulo & RODRIGUES, Luiz. “Distributed Systems forSystems Architect”, Kluwer,
2001, 623p.
HEUSER, Carlos Alberto. Projeto de banco de dados. 3ª ed.,Porto Alegre: Sagra Luzzato,
1999.
SILBERSCHATZ, Abrahan; KORTH, Henry F.;
SUDARSHAN S.. Sistema de Banco de
Dados. Tradução da 3ª ed., São Paulo: Makron Books, 1999.
RAMAKRISHNAN, Raghu. Database Management Systems. USA,Boston: McGRAW-HILL
INTERNATIONAL EDITIONS, 1997.
BURRETA, Marie; Data Replication Tools and Tecnologies for Managieng
14
ANEXOS
Download

um protótipo de banco de dados distribuídos (caso