FERRAMENTA PARA REPLICAÇÃ ÇÃO O DE DADOS NO SGBD POSTGRESQL



Documentos relacionados
UNICE Ensino Superior Linguagem de Programação Ambiente Cliente Servidor.

Sistemas Operacionais Suportados Agentes

Tutorial Slony passo a passo. Professor MSc. Willamys Rangel Nunes de Sousa

Aula 03-04: Modelos de Sistemas Distribuídos

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA

Introdução a Banco de Dados Aula 03. Prof. Silvestri

SyncEasy Aplicativo para sincronização de arquivos entre dispositivos móveis e computadores utilizando metadados

Sistema de Proteção para Servidores de Jogos Online Contra Softwares Clientes Não Oficiais

Sistemas Distribuídos (DCC/UFRJ)

Sistemas de Banco de Dados

Um pouco do Java. Prof. Eduardo

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE SISTEMAS DE INFORMAÇÃO BACHARELADO

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

Medidor Powersave V2 USB

ADMINISTRAÇÃO E SERVIÇOS DE REDE

PROTÓTIPO DE SISTEMA MÓVEL NA PLATAFORMA ANDROID PARA COMPARTILHAMENTO DE ARQUIVOS E MENSAGENS ENTRE DISPOSITIVOS BASEADO EM PROXIMIDADE GEOGRÁFICA

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

SISTEMAS DISTRIBUIDOS

AULA 16 - Sistema de Arquivos

Documento de Requisitos Sistema WEB GEDAI

Módulo 12 Gerenciamento Financeiro para Serviços de TI

Soluções para gerenciamento de clientes e Impressão móvel

pdc_me_05 Página 1 de 28 Versão: 1 Início de Vigência: Instrumento de Aprovação: Despacho ANEEL nº 934, de 07 de março de 2008.

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

MANIPULANDO BANCO DE DADOS NO POSTGRESQL SEM FAZER USO DE COMANDOS SQL

PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ TABELIÃO INTERFACE ADMINISTRATIVA MANUAL DE PRODUÇÃO

Aula 1 Acesso a Banco de Dados

BANCO DE DADOS I. Prof. Antonio Miguel Faustini Zarth

JDBC DRIVER. Objetivo: Possibilitar aplicações não Zim de se conectar a um banco de dados Zim utilizando as normas JDBC.

Prefeitura Municipal de Águas Lindas de Goiás GO ANEXO IV CENTRO DE CONTROLE OPERACIONAL E SISTEMA DE BILHETAGEM ELETRÔNICA

Disciplina: Redes de Comunicação. Curso Profissional Técnico de Gestão e Programação de Sistemas Informáticos. Setembro 2013

Orientação a Objetos

LINX POSTOS AUTOSYSTEM

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

NORMAS PARA O USO DE SISTEMA DE PROTEÇÃO FIREWALL DE PERÍMETRO NO ÂMBITO DA REDE INFOVIA-MT

Manual do usuário. Softcall Java. versão 1.0.5

Programação Orientada a Objetos (DPADF 0063)

Projetos I Resumo de TCC. Luiz Rogério Batista De Pieri Mat:

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

MAGREGISTER 1.0: GERADOR DE INTERFACES DE COLETAS DE DADOS PARA PDA S. Acadêmico: Gilson Chequeto Orientador: Adilson Vahldick

Programação com Acesso a Banco de Dados

Dantas Tour System (DTS)

Produto : Datasul, MFT(Faturamento), Datasul Projeto : PCREQ-4786 Data da criação

Sistemas Operacionais. Prof. André Y. Kusumoto

Instalação do software da Fiery para Windows e Macintosh

Auditoria de Sistemas de Informação. Everson Santos Araujo

Segurança de Redes de Computadores

Desenvolvendo Websites com PHP

Instituto Superior Politécnico Gaya Escola Superior de Ciência e Tecnologia

Modem e rede local. Guia do usuário

2 Diagrama de Caso de Uso

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

Rede PROFIBUS DP com Sistema de Automação EMERSON/DeltaV e Remota Série Ponto

FOUR Soluções. Projeto Integrador Documento Visão. Versão <1.0>

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores

Banco de Dados Orientado a Objetos

NORMA TÉCNICA E PROCEDIMENTOS GERAIS PARA ADMINISTRAÇÃO DO BANCO DE DADOS CORPORATIVO

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Introdução. Edeyson Andrade Gomes.

Soluções para localização e diagnóstico de falhas em redes HFC

3. Faça uma breve descrição sobre a topologia da rede e o Active Directory-AD DISCIPLINA DE ARQUITETURA FECHADA WINDOWS SERVER

Seu manual do usuário SONY ERICSSON W890I

Roteiro. BCC321 - Banco de Dados I. Conceitos Básicos. Conceitos Básicos. O que é um banco de dados (BD)?

Atendimento de Demandas CTIC

Projetar Arquitetura

Gerador de código JSP baseado em projeto de banco de dados MySQL

Especificação dos Requisitos do Software. Sistema de Controle e Gerenciamento de Loja de Vestuários e Acessórios

Diretrizes de Qualidade de Projetos

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins

Capítulo II Modelos de Programação Distribuída

Manual do Teclado de Satisfação Online WebOpinião

Visão do Usuário da DSM

SERVIÇO PÚBLICO FEDERAL SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL GOIANO CÂMPUS POSSE-GO

Analista de Sistemas Ambiente GRID para física experimental de altas energias

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Tutorial: Instalar uma Central telefónica baseada em Elastix

Messenger. Novell 1.0 LOCALIZANDO A DOCUMENTAÇÃO DO NOVELL MESSENGER.

Lista de Exercícios-01 DISCIPLINA DE ARQUITETURA FECHADA WINDOWS SERVER Estrutura lógica estrutura física

Projuris Enterprise Visão Geral da Arquitetura do Sistema

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

Diagrama lógico da rede da empresa Fácil Credito

MF = (M1 * 0,4) + (M2 * 0,6) MF < 6 MF = (MF * 0,6) + (EXA * 0,4)

Encapsulamento de Dados

Redes de Computadores. 1 Questões de múltipla escolha. TE090 - Prof. Pedroso. 17 de junho de 2015

Manual de Instalação e Operação RECIP

Terminal de Consulta de Preço. Linha Vader. Modelo TT300 e TT1000i

REDES DE COMPUTADORES - I UNI-ANHANGUERA CENTRO UNIVERSITÁRIO DE GOIÁS CURSO DE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROF.

Modelagem UML com Software Livre. Palestrante: Marcio Junior Vieira

P4-MPS.BR - Prova de Conhecimento do Processo de Aquisição do MPS.BR

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

JDBC Java Database Connectivity

Transcrição:

FERRAMENTA PARA REPLICAÇÃ ÇÃO O DE DADOS NO SGBD POSTGRESQL Malcus Otávio Quinoto Imhof Alexander Roberto Valdameri - Orientador

Roteiro da apresentaçã ção Introduçã ção Objetivos Motivaçã ção Revisão o bibliográfica Especificaçã ção Implementaçã ção Operacionalidade Conclusão

Introduçã ção Replicaçã ção o de dados SGBD PostgreSQL Replicadores de dados atuais

Objetivos Implementar uma ferramenta de replicaçã ção o de dados para o SGBD PostgreSQL; Caracterizar uma replicaçã ção o assíncrona; Manter consistência ncia entre as instâncias ncias do SGBD PostgreSQL; Resolver conflitos na replicaçã ção o de dados.

Motivaçã ção As ferramentas atuais para replicaçã ção o de dados que atuam sobre o SGBD PostgreSQL basicamente operaram exclusivamente sobre o sistema operacional Linux ou Unix, além m de terem como ponto forte a replicaçã ção o síncrona s dos dados.

Revisão o bibliográfica Sistemas Distribuídos Date (1991, p. 617), sistema distribuído do é qualquer sistema que envolve múltiplas m localidades conectadas [...], nas quais o usuário [...] de qualquer localidade pode acessar os dados armazenados em outro local; Define-se como uma rede de computadores que possui vários componentes se comunicando através s da coordenaçã ção o de mensagens (COULOURIS; DOLLIMORE; KINDBERG, 2001, p. 553)

Revisão o bibliográfica Banco de Dados Um banco de dados é uma coleçã ção o integrada de dados onde o mesmo envolve os próprios prios dados, o hardware em que os dados residem, o software que controla o armazenamento e os usuários (DEITEL; DEITEL, p. 812, 2001).

Revisão o bibliográfica Replicaçã ção o de Dados Utilizada para obter maior uma maior disponibilidade dos serviços; Gera um aumento de desempenho quando são s necessários a obtençã ção o de dados de locais geográficos distintos; Replicaçã ção o Assíncrona; Replicaçã ção o Síncrona; S

Revisão o bibliográfica Java RMI Permite a comunicaçã ção o entre objetos remotos; É a implementaçã ção o do RPC para a linguagem Java; Maior transparência ncia para o desenvolvedor;

Trabalhos Correlatos ERServer É um replicador master to multiple slavers,, baseado em trigger. Este replicador de dados foi descontinuado pelos desenvolvedores para o desenvolvimento do Slony; Capacidade de efetuar a replicaçã ção o de dados em tempo real; Replicaçã ção o apenas read only nas base de dados slaves,, ou seja, inserçõ ções, alteraçõ ções e exclusões es somente poderiam ser efetuadas na base de dados master.

Trabalhos Correlatos Slony Surgiu a partir da idéia ia de existir um replicador de dados que não n o fosse específico para nenhuma versão o do SGBD PostgreSQL; master to multiple slavers; não é indicado quando a ocorrência de quedas dos nodos seja freqüente; ente; a não n o detecçã ção o na falha de um nodo e também m a não o eleiçã ção o de um nodo master são o algumas de suas características

Trabalhos Correlatos Postgres-R O Postgres-R, um replicador síncrono, s é tido como um modelo de replicador de base de dados, no qual foi baseado no SGBD PostgreSQL 6.4.2; Considerado a mais avançada ada soluçã ção open source existente; O uso deste replicador é aconselhado para redes locais; Cópias shadow;

Requisitos principais do problema a ser trabalhado replicar os dados após s restabelecer a conexão o quando da ocorrência de alguma falha (RF); permitir a configuraçã ção o de parâmetros de uma replicaçã ção o (como tempo e tabelas) (RF); resolver conflitos na replicaçã ção o de dados utilizando o conceitos de versão o para linhas e prioridade do site (RF); implementar o projeto utilizando a linguagem de programaçã ção o Java (RNF); possibilitar a replicaçã ção o assíncrona entre diversos sistemas operacionais (RNF).

Especificaçã ção Casos de Uso ud Replicador UC01 - configurar arquiv o parâmetros Usuário UC02 - replica dados

Especificaçã ção Diagrama de Atividades ad U C 01 -configurar arquivo parâm etros inicio Informar o nome do schema de armazenamento Informar o periodo de tempo entre as replicações Informar o nome do nodo Definir a lista de nodos destinos Definir a conexão com o banco de dados Informar a prioridade do nodo [Qual o tipo de replicação?] Definir o tipo replicação (tables ou schemas) [tables] [schemas] Definiar as tabelas a serem replicadas Definir os schemas a serem replicados final

Especificaçã ção ad UC05 - replicar as informações inicio Nodo de Origem Para todos os nodos a serem replicados Nodo de Destino final Carrega próximo objeto remoto [Não] [Sim] [Existem mais nodos?] [Obteve sucesso?] [Sim] Carrega tabelas a serem replicadas [Não] [Acabou?] Selecionar uma tabela Carrega versão do dado [Sim] Enquanto houver registros a serem replicados [Sim] Versão do dado recebido maior que o armazenado? [Não] Versão do dado recebido é menor que o armazenado? [Não] Selecionar registro Armazena dado [Acabou registros?] Enviar registro [Não] [Sim] Marca registro como env iado [Não] O nodo de origem tem maior prioridade?

Especificaçã ção Diagrama de Classes cd src replicador.rmi RemindTask + ReplicadorClient + ReplicadorImpl + ReplicadorServer + Replicador Remote «interface» replicador.rmi::replicador + receberegistro(string, HashMap, String) : boolean replicador.rmi::replicadorimpl UnicastRemoteObject + ReplicadorImpl() + receberegistro(string, HashMap, String) : boolean replicador.rmi:: ReplicadorServ er + ReplicadorServer() + main(string[ ]) : void ~ timer: Timer ~ arquivo: Configuracao ~ cluster: Cluster ~ nodos: ArrayList = null ~ objremoto: HashMap replicador.rmi::replicadorclient + main(string[ ]) : void + ReplicadorClient() - carregaobjetosremotos(configuracao, ArrayList, Cluster) : HashMap - replicadados(configuracao, ArrayList, Cluster, HashMap) : void replicador.cluster + Cluster + ConexaoBanco + Configuracao + dropdbr + initdbr replicador.cluster::configuracao - schema_store: String - replication_type: String - tables: ArrayList = new ArrayList() - schemas: ArrayList = new ArrayList() - replication_time: int - node_code: String - priority: int - row_version: int - dbdatabase: String - dbuser: String - dbpassword: String - addresses: ArrayList = new ArrayList() + Configuracao() + carregaarquivo() : void replicador.cluster:: dropdbr + dropdbr() + main(string[]) : void replicador.cluster::conexaobanco - conn: Connection = null + ConexaoBanco() + conecta(configuracao) : boolean + getconn() : Connection + iniciatransacao() : void + finalizatransacao(string) : void + desconecta() : void replicador.cluster:: initdbr + initdbr() + main(string[]) : void ~ i: int ~ table: String ~ schema: String replicador.cluster::cluster + Cluster() - nexttable(arraylist) : boolean - nextschema(arraylist) : boolean + existeschema(string, ConexaoBanco) : boolean + criaschema(string, ConexaoBanco) : void + excluischema(string, ConexaoBanco) : void + existetabelas(arraylist, ConexaoBanco) : boolean + existecamposcontrole(arraylist, ConexaoBanco) : boolean + criacamposcontrole(configuracao, ConexaoBanco) : void + carregatabelasschema(configuracao, ConexaoBanco) : void + criatabelasreplicacao(configuracao, ConexaoBanco) : void + excluicamposcontrole(configuracao, ConexaoBanco) : void - gettables(configuracao, ConexaoBanco) : ArrayList + criafuncaonodo(configuracao, ConexaoBanco) : void + criatriggercontrole(configuracao, ConexaoBanco) : void + excluitriggercontrole(configuracao, ConexaoBanco) : void + getnodos(configuracao) : ArrayList + getipnodo(configuracao, String) : String + getprioridadenodo(configuracao, String) : int + gettabelasparareplicar(configuracao) : ArrayList + getcampostabela(configuracao, String) : ArrayList + transmitedados(configuracao, String, Replicador, String) : void + armazenareplicacao(string, HashMap, String) : boolean + getprimarykey(configuracao, String) : ArrayList + gettabelasorigem(configuracao, String) : String

Implementaçã ção Na implementaçã ção o foi utilizado o NetBeans da SUN Microsystems na sua versão o 5.5; Primeira etapa do desenvolvimento: leitura do arquivo de configuraçã ção; Cuidado para não n o prender a aplicaçã ção o a um sistema operacional;

Implementaçã ção # set up the name of stored replicated tables and sequences schema_store = replicated # set the delay between the synchronization between the replicas (in seconds) replication_time = 60 # set my global node name. Max 50 characters node_code = node_a #set the priority of this node priority = 1 # database connections # JDBC default dbdatabase=jdbc:postgresql://localhost:5432/tcc dbuser=postgres dbpassword=master # enter the priority number, node_code, IP ddress [nodes] 1,node_b,10.1.1.8 # choose the type of replication (tables or schemas) replication_type = tables #tables to be replicated (respecting replication_type option) [tables] ve006 ge002 #public.b #anotherschema.anothertable #schemas to be replicated (respecting replication_type option) [schemas] public

Implementaçã ção Necessidade da utilização de tabelas de sistema do PostgreSQL; Dificuldade de obter documentação sobre essas tabelas; Estrutura complexa;

Implementação Campos de controle; Detecção e resolução de conflitos; Detecção da necessidade do registro ser replicado; Propriedade do registro;

Implementação Gatilhos; Responsáveis pelo controle dos registros que devem ou não ser replicados; Responsáveis pela alimentação das tabelas de armazenamento;

Implementação Tabelas de armazenamento; Estrutura original da tabela e adicionados os seguintes campos: a. chave primária seqüencial; b. hora de inserção do registro; c. nodos destinos todos atualizados; d. operação realizada (inserção, atualização ou exclusão). Tabela de controle de nodos atualizados;

Implementação Aplicativos de comunicação; Java RMI; Aplicativo Servidor; Aplicativo Cliente;

Operacionalidade Sincronia dos dados ocorrida sem nenhum conflito e nenhuma falha de comunicaçã ção o entre os nodos; Sincronia dos dados após s a ocorrência de alguma falha de comunicaçã ção; Existência de conflito entre os dados a serem replicados;

Conclusão

Conclusão Requisitos estabelecidos foram contemplados; Replicação assíncrona e consistência das informações; Comunicação confiável não necessário para o funcionamento da ferramenta; Características apresentadas neste trabalho que não estão inseridas em outras ferramentas;

Conclusão Extensões: a. Implementação para outros SGBDs; b. Possibilitar a replicação de tabelas sem chave primária; c. Outras técnicas de resolução de conflitos; d. Implementar a replicação síncrona.

Relevância pessoal Aprendizado sobre distintas técnicas t de replicaçã ção o de dados e suas aplicaçõ ções; Conhecimento gerado do SGBD e seus recursos; Conhecimento sobre Java RMI; Java.