IV Congresso Brasileiro de Computação – CBComp 2004 Banco de Dados Desenvolvimento de Sistema de Distribuição de Bases de Dados Heterogêneas R.E.M. Melo e M.R. Fornari, IEEE Member Abstract-- This work describes the development of a data distribution system. The main goal is produce a flexible and easy to use software, that allows data exchange between heterogeneous databases off-line. Some offices or shops are located in regions without good coverage of communications line, or, the price is very expensive to obtain a good quality of service. So, the system implement some facilities for off-line distributed transaction, all data are transmitted using cryptography, and, to supports heterogeneity, uses XML documents. Palavras chaves—Sistemas de banco de dados distribuídos, Gerência de dados. C I. INTRODUÇÃO OMO destaca [1], uma das motivações importantes por trás do uso de sistemas de banco de dados é o desejo de integrar os dados operacionais de um empreendimento e proporcionar acesso controlado a esses dados. Sistemas de informação de empresas, tipicamente, mantêm os dados em um Sistema Gerenciador de Bancos de Dados (SGBD), que passam a representar um papel essencial para o funcionamento de toda empresa, pelas diversas facilidades que agrega. Um SGBD Distribuído (SGBDD) é um conjunto de banco de dados independentes, que interagem para alcançar determinado objetivo [2]. Cada banco de dados pode estar em um servidor diferente, localizado a grande distância dos demais. Estes servidores se conectam através de uma rede de comunicação de dados. Se os bancos de dados forem de diferentes fabricantes, teremos heterogeneidade quanto aos SGBD utilizados. Empresas com uma sede matriz e filiais em diferentes cidades podem se beneficiar da tecnologia de SGBDD, como Oracle ou IBM DB2. Porém, estas requerem altos investimentos e linhas de comunicação rápidas. Tratando-se de empresas pequenas, ou filiais com pouco movimento, talvez localizadas em cidades sem linhas digitais de comunicação, os custos envolvidos tornam-se muito elevados. O Data Distribution Manager (DDM) é uma solução que resolve este problema, viabilizando a descentralização dos sistemas de banco de dados, mantendo a integração das informações em um ou mais pontos da empresa. É um sistema com capacidade de integrar ambientes heterogêneos de forma assíncrona, com o objetivo de dispensar o investimento em sistemas de banco de dados de alto desempenho para pontos de presença que não compatibilizam investimentos elevados. A solução baseia-se em um protocolo de comunicação de controle e dados desenvolvido totalmente em XML, o que o torna independente de qualquer SGBD comercial. Assim, é possível que na matriz haja um SGBD de maior capacidade, como Oracle e IBM DB2, e, nas filiais, SGBD mais simples ou gratuitos, como MS Access, Firebird ou MySQL. Permite, também, a comunicação assíncrona de dados, viabilizando sua utilização em linhas discadas. Por segurança e para reduzir a quantidade de dados transmitidos, toda informação é criptografada. O trabalho esta assim organizado: no capítulo 2 estão descritas as principais funcionalidades do DDM. No terceiro capítulo, alguns pontos relativos a sua implementação são discutidos e, no quarto capítulo, as conclusões do trabalho. II. FUNCIONAMENTO DO SISTEMA O sistema foi concebido a partir de uma parceria da universidade com uma empresa especializada em software para transportadoras, mas é capaz de atender a empresas de outros ramos de atividade. Ele deve permitir a integração de bases de dados heterogêneas, com baixo custo de implantação e manutenção. A. Configuração do DDM Para a utilização do sistema, o passo inicial é o cadastramento dos servidores que estão interligados. Em cada servidor pode haver uma ou mais bases de dados. Em qualquer momento, novos servidores ou bases de dados podem ser acrescentadas ao sistema. A figura 1 mostra a tela principal de configuração do DDM. Na área 1 estão listados os servidores, bases de dados e grupos de distribuição (que serão explicados a seguir). Na área dois estão detalhadas as propriedades dos servidores. O conteúdo da área 2 é alterado de acordo com o objeto selecionado na área 1. Um dos servidores que executa o aplicativo deve ser o responsável pelas informações de configuração de todos os demais. Todas as informações, como servidor primário (servidor de origem dos dados), servidores secundários (servidores destinatários dos dados), bancos de dados distribuídos, tabelas distribuídas e regras da distribuição, devem ser mantidas neste servidor. Estas informações são armazenadas em documentos XML. 47 IV Congresso Brasileiro de Computação – CBComp 2004 Banco de Dados Fig. 1. Tela principal de configuração do sistema Para cada aplicação diferente da empresa é possível criar um grupo de servidores que podem receber e enviar dados, pela criação de um grupo de distribuição. Um mesmo servidor pode participar de vários grupos. É necessário definir qual dos bancos de dados é o primário da distribuição. O banco primário é responsável em receber os pacotes de dados de todos os integrantes do grupo e distribuir as informações conforme as regras definidas. Por exemplo, a aplicação de controle de transporte de cargas deve estar disponível em todos depósitos e lojas da empresa, bem como seus dados. O controle de vendas só é necessário nos pontos de atendimento a clientes. Um dos servidores do grupo é a base de dados distribuidora das informações. Ele é o responsável em receber, processar, filtrar e redistribuir para todos membros do grupo, as informações processadas, exceto para o servidor que originou a operação. A distribuição é realizada através de regras cadastradas para cada grupo de distribuição. Estas regras devem ser montadas considerando a estrutura das tabelas. É obrigatória a definição de uma ou mais tabelas como sendo tabelas primárias de distribuição. A tabela primária deve conter, obrigatoriamente, algum atributo de localidade, porque a distribuição de dados é realizada pelo critério de proximidade geográfica, pois os dados referentes a um local são mais acessados em locais próximos. Por exemplo, mais de 98% das transações bancárias são realizadas na cidade onde esta localizada a agência a qual a conta pertence. Este critério é fundamental para reduzir os custos de transmissão. O servidor é definido através de um conjunto de predicados, que são associados aos destinos. A tabela Filiais é a primária na aplicação de controle de vendas, uma vez que as vendas são originadas em uma determinada filial e contem um atributo de referência geográfica, o atributo Cidade. Assim, com base no valor do atributo Cidade, pode-se definir a distribuição de dados com regras como “se Cidade=Viamão1 então enviar tuplas para o servidor de Porto Alegre”. Para cada valor possível do atributo, um servidor deve ser especificado. Um servidor pode ser indicado para vários valores diferentes do atributo. Para tabelas secundárias, distribuídas por derivação, as regras de distribuição devem se basear em junções com a tabela primária por chave estrangeira, para que o sistema consiga definir o destino das informações do banco de dados que sofreram operações (insert, update e delete). A tabela Clientes é particionada a partir da tabela Filiais, já que, para cada cliente, apenas a filial local necessita de suas informações. Nesta tabela o atributo Filial é chave estrangeira, relacionando-a a tabela Filiais. Para cada grupo de distribuição, é necessário decidir como é realizada a atualização de dados. As opções são: (1) apenas o servidor primário atualiza dados, que são repassados para os secundários. Nesta situação, as bases 1 A cidade de Viamão esta localizada na Grande Porto Alegre. 48 IV Congresso Brasileiro de Computação – CBComp 2004 secundárias mantêm uma cópia local, aumentando a disponibilidade do sistema e a velocidade de processamento. Tipicamente, tabelas primárias fazem uso desta alternativa. Trata-se de replicação simples de dados. (2) cada servidor secundário pode atualizar os dados que mantêm, que são repassados apenas para o servidor primário. Este é o único que possui todas as tuplas pertencentes a tabela. Neste caso, é fundamental que ao definir as regras de distribuição seja garantida a propriedade de disjunção, ou seja, nenhuma tupla pode ser mantida em mais de um servidor. Caso contrário, pode haver problemas de coerência e perda de informações, com dois servidores modificando a mesma informação, de maneiras diferentes. O DDM não garante a propriedade de disjunção, nem a coerência dos dados caso ela não seja estabelecida pelo usuário. Esta alternativa chama-se particionamento horizontal [3]. (3) todas as tuplas da tabela são mantidas em todos servidores, porém, as regras de distribuição estabelecem o subconjunto de tuplas que cada servidor pode alterar. Os subconjuntos, neste caso, também devem ser disjuntos. Este é um particionamento horizontal com replicação total. A figura 2 ilustra um conjunto de regras de distribuição. A tabela primária é Filiais, as tabelas Clientes e Produtos são derivadas, e a tabela Contatos é derivada de Clientes, criando um nível de indireção em relação à tabela primária. A tabela Estoque é derivada de Produtos. Há uma interface gráfica para criar estas regras, que garante a correção sintática das regras. Banco de Dados remotamente, desde a matriz da empresa. Usuários locais podem acionar o envio e recepção de dados e verificar o andamento das mesmas. B. Transmissão de Dados Uma vez em funcionamento, o DDM monitora o funcionamento da base de dados, mantendo um log de modificações ocorridas em todas as tabelas distribuídas. Quando desejado, o usuário pode iniciar a transmissão de dados. O primeiro passo é transformar os logs de modificações em documentos XML. A fim de reduzir o tamanho dos documentos de dados, todos são divididos em pacotes, que são compactados. Antes de serem submetidos a compactação, todos pacotes são criptografados, para garantir a confiabilidade das informações na rede. A criptografia baseiase em uma chave de 128 bits, cujo método de geração esta embutido dentro do software. Os pacotes de dados são armazenados em um servidor de arquivos de transferência (FTP), e, posteriormente, serão lidos pelos servidores destinos. A figura mostra o acompanhamento da transmissão de vários documentos XML, cada um deles relativos a configuração do DDM ou uma tabela de dados que deve ser distribuída. Fig. 3. Acompanhamento da transmissão de documentos XML. Fig. 2. – Regras de distribuição definidas no DDM A configuração do DDM é completada com a indicação do servidor de transferência de arquivos (FTP) a ser utilizado. Esta opção permite que dados sejam depositados nele a partir de qualquer servidor, a qualquer momento, e lidos por outros servidores quando estes estabelecerem a conexão. Não é necessário conexão ponto-a-ponto entre servidores, nem linhas de dados permanentes. O DDM possui ainda um controle de usuários. Todas operações de configuração são realizadas em um nível privilegiado e a partir de um único local. Esta restrição se adequa com as finalidades do sistema, uma vez que não se espera que haja profissionais especializados em cada localidade. Uma vez instalado, a configuração pode ser feita Ao receber um pacote de dados, o servidor deve descompactar e descriptografar o conteúdo. Para recompor o documento XML, deve receber todos os pacotes que o compõem. Quando o documento estiver completo, as modificações indicadas são realizadas na base de dados local. Obviamente, estas modificações não são copiadas para o log, pois não há necessidade de serem refeitas novamente. Quando o processo é completado com sucesso, o servidor que originou os dados é avisado. Em caso de falha de comunicação, o servidor destino tenta um novo acesso ao servidor de FTP. Os pacotes e documentos são numerados, de modo que a ordem entre eles não seja perdida. Modificações de um certo documento só são aplicadas se todas as modificações indicadas em documentos de número inferior já estiverem sido realizadas com sucesso, mantendo a coerência de dados. 49 IV Congresso Brasileiro de Computação – CBComp 2004 Fig. 4. Principais componentes da arquitetura do sistema . III. IMPLEMENTAÇÃO DO SISTEMA O sistema foi desenvolvido na linguagem de programação ObjectPascal e compilado em Borland Delphi 7. Este é um ambiente de programação RAD (Rapid Application Development), composto de vários componentes. Componentes são classes programadas com atributos e métodos, feitos para um devido fim [4]. Eles ajudam os programadores na hora de desenvolver seus programas, pois. reúnem em seu código métodos que são reutilizados, diminuindo o tempo de programação. Os componentes mais significativos utilizados neste software são: SQLConnection: É um componente nativo do Delphi, que representa a conexão ao banco de dados do dbExpress. Sua conexão ao banco de dados pode ser compartilhada por muitos componentes que fazem a manipulação dos dados. Por sua vez dbExpress é um drive de acesso a banco de dados, desenvolvido pela Borland, capaz de se conectar com uma lista grande de SGBD comericais e não-comerciais. SimpleDataset: É um cliente de banco de dados, de uma série de componentes da Borland, que usa o SQLConnection como conexão. Componente nativo do Delphi, combina acesso rápido e distribuição fácil de uma série de dados unidirecional com a habilidade de edição e navegação. É capaz de salvar uma seleção de dados em formato XML, e, também, carregar documentos XML salvos por ele. Com o componente é possível determinar os atributos da estrutura do documento, como nome, tipo e tamanho, muito semelhante a Banco de Dados uma tabela de banco de dados. ZipMaster: É um componente de compactação de arquivos compatível com o formato ZIP [5]. É uma interface usada como ponte para o uso dos arquivos no formato DLL, desenvolvidas por Eric Engler, que detêm os procedimentos compactação e descompactação. O uso das DDLs é livre. EvFileCripto: É um componente destinado a criptografar e descriptografar arquivos. Usado para manter as informações dos documentos XML seguros, o componente é simples na implementação, dando facilidade ao programador na hora de desenvolver as rotinas de criptografia. O componente compõe a TCF Library Additional [6] e deve ser adquirido em separado. A. Arquitetura do Sistema A arquitetura do sistema pode ser visualizada na figura 4. O sistema é composto por quatro tipos diferentes de servidores, ilustrando os papéis que existem no sistema, como mostrado. Isto não significa que um mesmo computador não possa exercer dois papéis diferentes, como Administrador e Primário. E o fato de ser servidor primário de um grupo de distribuição, não obriga a sê-lo em outros grupos. Assim, um computador pode ser o primário de um grupo e secundário em outro grupo de distribuição. Da mesma forma, qualquer um pode exercer o papel de servidor de FTP. Também, alguns SGBD estão citados, mas é possível suportar outros produtos. O sistema esta dividido em dois programas executáveis: Transmit, responsável pela gerência de comunicação de dados e DDM, que é a interface com o usuário e a comunicação com 50 IV Congresso Brasileiro de Computação – CBComp 2004 a base de dados local. B. Criação do log de modificações Durante a configuração do DDM, o sistema gera triggers2 na base de dados para cada tabela que deve ser distribuída. Estes triggers são associados aos eventos de modificação da tabela (insert, update e delete). O log de modificações é mantido em uma tabela chamada DDMDistribution. Para cada tupla é gravada o valor de sua chave primária, um indicador da operação e o timestamp da operação. Devido às diferenças entre os SGBD, para cada produto específico, novas classes devem ser implementadas. Isto ocorre não apenas porque alguns produtos não seguem rigorosamente o padrão da linguagem SQL vigente, mas também porque o padrão é omisso em alguns pontos. Por exemplo, nada é dito sobre a estrutura do Dicionário de Dados do SGBD, que é um ponto crítico para o DDM. C. Algoritmo de Geração de Dados O algoritmo de geração de dados inicia identificando o servidor e a base de dados local. Para cada tupla na tabela DDMDistribution, verifica as regras de distribuição que se aplicam e o servidor de destino. Para cada servidor de destino, um documento XML diferente é gerado e a tupla acrescentada ao respectivo documento. Tuplas de diferentes tabelas são colocadas em diferentes documentos, para um mesmo servidor de destino. Um documento de índice é gerado para controlar todo processo. Após, os documentos são criptografados, compactados e enviados. A figura 5 ilustra esta seqüência. Fig. 5. Sequencia de geração de dados para distribuição. D. Algoritmo de Recepção de Dados O algoritmo de recepção de dados também inicia identificando o servidor local e suas bases de dados. Para cada servidor dos quais pode receber informações, o DDM busca todos arquivos armazenados no servidor de FTP, endereçados para si. Cada arquivo recebido é descompactado e descriptografado. Cada tupla de um arquivo é processada adequadamente. Há três situações possíveis: inserção, modificação de valores de atributos e remoção da tupla. A ordem em que as tuplas são Banco de Dados processadas é determinada pelo timestamp da operação. Um documento XML é criado com o status de cada operação. Ao final do processo, este arquivo é enviado para o respectivo servidor de origem dos dados. A figura 6 mostra a seqüência de processamento na recepção de dados. Fig. 6. Processamento na recepção de dados. IV. CONCLUSÃO O DDM atingiu seus objetivos principais, ao permitir a distribuição de dados em empresas com SGBDD heterogêneo, com segurança e baixo custo, sem a necessidade de linhas de dados dedicadas. Já esta sendo utilizada por uma transportadora de cargas, com sucesso. Trata-se de uma parceria universidade-empresa que utiliza tecnologias inovadoras, para buscar uma solução que satisfaça a necessidade dos usuários. Além das características técnicas, o projeto da interface gráfica tem contribuído bastante. Um fator decisivo foi aquisição de ícones desenhados por um designer gráfico especializado nesta tarefa. Em termos de mercado, há três outros produtos com características semelhantes. O Beehive Replicator Agent [7] é voltado exclusivamente para a replicação de dados, suportando atualização apenas no servidor primário. O DBReplicator [8] e o Dinamic [9] não dão suporte a outras plataformas além do Oracle, não atendendo a um requisito básico do projeto. Na literatura científica, o Sistema Enosys [10] integra fontes heterogêneas de dados, sem a necessidade de compartilharem uma mesma estrutura de tabelas e atributos, como o DDM. Também integrando documentos textos, especialmente em HTML, e bases de dados relacionais, há o sistema proposto em [11]. Porém, esta não é uma característica necessária para o DDM, embora algumas idéias presentes nestes trabalhos tenham sido úteis para nós. Na continuidade do projeto, propõe-se validar a propriedade de disjunção das regras de distribuição e torná-lo multiplataforma, utilizando Java. V. REFERENCIAS [1] [2] [3] 2 Para o MSAccess, a criação de triggers é substituída adequadamente por procedimentos em Visual Basic for Applications, associados a eventos de tabela. Esta é uma solução que atende às necessidades do DDM, mas não é portável. [4] Korth, Henry F; Silberschatz, Abraham; Sudarshan, S. Sistemas de Banco de Dados. São Paulo : MAKRON Books, 1999. Özsu, M. Tamer; Valdurez, Patrick. Principio de Sistemas de Bancos de Dados Distribuídos. Rio de Janeiro: Campus, 2001. Bernstein, Philip; Goodman, Nathan. Concurrency Control in Database Systems. ACM computing Surveys, vol. 13 (2), pp.185-221, June, 1981. Kirtland, Mary Projetando Soluções Baseadas em Componentes. Rio de Janeiro: Campus, 2000. 51 IV Congresso Brasileiro de Computação – CBComp 2004 Banco de Dados [5] Engler, Eric. Embeded and Delphi Zip. [online] Disponível em http://www.geocities.com/SiliconValley/Network/2114/. [6] Ribeiro, Elivaldo S. TCF Library [online] Disponível em http://www.elivaldo.com.br. [7] PSmi. Beehive Replicator Agent Disponível em http://www.beehive.com.br/replicator.html. [8] DBMaster, DBReplicator - A Solução definitiva. Disponível em: http://www.dbmaster.com.br/dbreplicator.html [9] Advancedit S/A, Dinamic 2.6.0.0 – Manual de Usuário, Porto Alegre: sem editora, 2003. [10] Papakonstantinou, Yannis; Vassalos, Vasilis. “The Enosys Markets data integration platform: lessons from the trenches” in Proc. 2001 Conf. On Information and Knowledge Management, pp. 538-540 [11] Petrou, C. ; Hadjiefthymiades, S.; Martakos, D. An XML-Based, 3-Tier Scheme for Integrating Heterogeneous Information Sources to the WWW. In Proc. 1999 of 10th International Workshop on Database & Expert Systems Applications. pp. 706-712. Rene Eduardo Mesquita Melo nasceu em Torres, em 03 de Novembro de 1976. Graduou-se no Curso Superior em Tecnologia de Informática, na Universidade Luterana do Brasil (ULBRA)., onde desenvolveu atividades de pesquisa na área de Bancos de Dados Distribuídos. Atualmente é Gerente de TI na Modular Transportes e Analista de Sistemas na Reel Informática Ltda. Seus interesses principais são na área de banco de dados distribuídos e desenvolvimento de sistemas. Seu endereço eletrônico é [email protected]. Miguel Rodrigues Fornari nasceu em Porto Alegre, em 29 de Setembro de 1967. Gradou-se em Ciências da Computação pela Universidade Federal do Rio Grande do Sul (UFRGS), onde também realizou o curso de mestrado. Atualmente é professor da Faculdade de Informática, na Universidade Luterana do Brasil (ULBRA), onde leciona disciplinas na área e Bancos de Dados. Também esta realizando doutorado em Sistemas de Informação Geográfica, na UFRGS. Seu interesses principais são na área de desempenho de banco de dados e distribuição de dados. Seu endereço eletrônico é [email protected]. 52