: Uma implementação de fragmentação de dados para o pgcluster Gustavo Tonini 1 Frank Siqueira (orientador) 1 1 INE - Departamento de Informática e Estatística Universidade Federal de Santa catarina Curso de bacharelado em Ciências da Computação Trabalho de conclusão de curso, 2009
1 Conceitos 2 Apresentação do 3 4
1 Conceitos 2 Apresentação do 3 4
1 Conceitos 2 Apresentação do 3 4
1 Conceitos 2 Apresentação do 3 4
1 Conceitos 2 Apresentação do 3 4
Conceitos Sistema gerenciador de banco de dados objeto-relacional Implementação completa da ISO/ANSI SQL 1992 Escrito em C Servidor centralizado
Conceitos
1 Conceitos 2 Apresentação do 3 4
Conceitos Plugin do para replicação da replicação Total Multimaster Síncrona Vários servidores que contêm os mesmos dados interoperando
Conceitos
Avaliação do Replica cada comando para todos os sítios do cluster Problemas da replicação total Sobrecarga da rede Replicação de dados sem necessidade explícita Queda de sítio compromete a disponibilidade de todo o cluster
1 Conceitos 2 Apresentação do 3 4
Conceitos
Abordagem Conceitos Adição de comandos para definição do cluster e dos fragmentos Implementação de fragmentação vertical, horizontal e híbrida Vários servidores com conjunto de dados distintos interoperando
no
1 Conceitos 2 Apresentação do 3 4
Definição de sites Conceitos Adiciona um site ao cluster CREATE SERVER venus.inf.ufsc.br PORT 5432 RECOVERY PORT 8001; Adiciona uma entrada no catálogo pg grid site em todos os sites Sincroniza todos os sites
Definição de fragmentos Adiciona um fragmento ao cluster CREATE FRAGMENT nome ON relacao (lista de atributos) WHERE where clause; lista de atributos define a fragmentação vertical where clause define a fragmentação horizontal Pode-se utilizar qualquer expressão/operador em SQL; Adiciona uma entrada no catálogo pg grid fragment em todos os sites
Exemplo Conceitos Exemplo CREATE FRAGMENT produto fln ON produto WHERE id cidade origem=1;
Alocação de fragmentos Aloca um fragmento de dados a um site PLACE fragmento ON site; Adiciona uma entrada no catálogo pg grid allocation em todos os sites Envia os dados do fragmento para o site
1 Conceitos 2 Apresentação do 3 4
Funcionamento interno do executor Bibliotecas para acesso/manipulação de tuplas Comandos INSERT, UPDATE E DELETE alteram tuplas Comando SELECT navegam através das tuplas através das bibliotecas de armazenamento
Alterações nas bibliotecas de acesso Cada função de alteração deve consultar os catálogos e verificar a necessidade de replicação da operação A função de consulta deve verificar os catálogos e distribuir a consulta Utiliza funções do pgcluster para distribuir os dados e as consultas 2PC* já implementado. Basta chamar as funções que coordenam cada passo
1 Conceitos 2 Apresentação do 3 4
Comparação com outros SGBD Característica MySQL Oracle DB2 Consultas dist. Sim Sim Sim Sim Multi-mestre Sim Sim Sim Sim Rep. parcial Não Sim Sim Sim Rep. síncrona Sim Sim Sim Sim Rep. assíncrona Não Não Não Não Sim Sim Sim Sim Def. de regras de frag. Não Sim Não Sim Integ. ref. distribuída Não Não Não Sim Protocolo de commit 2PC 2PC 2PC 2PC
1 Conceitos 2 Apresentação do 3 4
Caso de teste (modelo)
Caso de teste (alocação)
Consultas na relação fragmentada Consulta pgcluster SELECT * FROM PRODUTO 5.3s 16.5s SELECT * FROM PRODUTO, CIDADE WHERE 5.7s 19.3s PRODUTO.CIDADE ID = CIDADE.ID SELECT * FROM PRODUTO WHERE 4s 2.3s PRODUTO.NOME = PROD500001
Outras medições para a relação fragmentada Medição pgcluster Tempo para atualização 1.8s 0.9s Carga de trabalho durante a consulta 20% 38% Pacotes transmitidos durante atualização 16 4 Pacotes de rede transmitidos consulta 0 400020 Espaço ocupado pelo banco de dados 30MB 7.57MB
1 Conceitos 2 Apresentação do 3 4
Conceitos Flexibilidade, escalabilidade e transparência; Otimização de consultas precisa ser melhor trabalhada; Poucas opções em BDD atualmente no mercado; foi uma boa escolha para a implementação; Viabilidade do trabalho atestada pelas avaliações realizadas
1 Conceitos 2 Apresentação do 3 4
Conceitos Testes com cenários mais complexos Otimização de consultas (verificar cláusula where dos comandos update e delete) Remoção da necessidade de servidores de replicação (camada adicional do pgcluster)
1 Conceitos 2 Apresentação do 3 4
Repositório do projeto http://pgfoundry.org/projects/pggrid/ Download do código-fonte https://svn.inf.ufsc.br/gustavotonini// Projetos relacionados (replicação total) pgpool (master-slave) Slony (master-slave) Bucardo (replicação assíncrona)
Perguntas? Conceitos Perguntas?