pgGrid: Uma implementac¸ ˜ao de fragmentac¸ ˜ao
de dados para o pgCluster
Gustavo Tonini
1
Frank Siqueira (orientador)
1
1
INE - Departamento de Inform ´atica e Estat´ıstica
Universidade Federal de Santa catarina Curso de bacharelado em Ci ˆencias da
Computac¸ ˜ao
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
Conceitos
pgGrid Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
PostgreSQL
PgCluster
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
Conceitos
pgGrid Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
PostgreSQL
PgCluster
PostgreSQL
Sistema gerenciador de banco de
dados objeto-relacional
Implementac¸ ˜ao completa da
ISO/ANSI SQL 1992
Escrito em C
Conceitos
pgGrid Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
PostgreSQL
PgCluster
Conceitos
pgGrid Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
PostgreSQL
PgCluster
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
Conceitos
pgGrid Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
PostgreSQL
PgCluster
PgCluster
Plugin do PostgreSQL para
replicac¸ ˜ao
Caracter´ısticas da replicac¸ ˜ao
Total
Multimaster
S´ıncrona
V ´arios servidores que
cont ˆem os mesmos dados
interoperando
Conceitos
pgGrid Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
PostgreSQL
PgCluster
Conceitos
pgGrid Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
PostgreSQL
PgCluster
Avaliac¸ ˜ao do PgCluster
Replica cada comando para todos
os s´ıtios do cluster
Problemas da replicac¸ ˜ao total
Sobrecarga da rede
Replicac¸ ˜ao de dados sem
necessidade expl´ıcita
Queda de s´ıtio compromete a
disponibilidade de todo o
cluster
Conceitos
pgGrid
Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
Conceitos
pgGrid
Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
Conceitos
pgGrid
Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
Abordagem
Adic¸ ˜ao de comandos para
definic¸ ˜ao do cluster e dos
fragmentos
Implementac¸ ˜ao de fragmentac¸ ˜ao
vertical, horizontal e h´ıbrida
V ´arios servidores com conjunto
de dados distintos
Conceitos
pgGrid
Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
Conceitos
pgGrid
Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
Conceitos
pgGrid
Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
Definic¸ ˜ao de sites
Adiciona um site ao cluster
CREATE SERVER venus.inf.ufsc.br PORT 5432
RECOVERY PORT 8001;
Adiciona uma entrada no cat ´alogo
pg grid site em todos os
sites
Conceitos
pgGrid
Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
Definic¸ ˜ao de fragmentos
Adiciona um fragmento ao cluster
CREATE FRAGMENT
nome ON relacao (lista de
atributos) WHERE where clause;
lista de atributos define a fragmentac¸ ˜ao vertical
where clause define a fragmentac¸ ˜ao horizontal
Pode-se utilizar qualquer express ˜ao/operador em SQL;
Adiciona uma entrada no cat ´alogo
pg grid fragment em todos
Conceitos
pgGrid
Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
Exemplo
Exemplo
CREATE FRAGMENT produto fln ON produto WHERE
id cidade origem=1;
Conceitos
pgGrid
Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
Alocac¸ ˜ao de fragmentos
Aloca um fragmento de dados a um site
PLACE
fragmento ON site;
Adiciona uma entrada no cat ´alogo
pg grid allocation em
todos os sites
Conceitos
pgGrid
Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
Fragmentac¸ ˜ao Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
Conceitos
pgGrid
Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
Fragmentac¸ ˜ao Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
Funcionamento interno do executor
Bibliotecas para acesso/manipulac¸ ˜ao de tuplas
Comandos INSERT, UPDATE E DELETE alteram tuplas
Comando SELECT navegam atrav ´es das tuplas atrav ´es
das bibliotecas de armazenamento
Conceitos
pgGrid
Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
Fragmentac¸ ˜ao Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
Alterac¸ ˜oes nas bibliotecas de acesso
Cada func¸ ˜ao de alterac¸ ˜ao deve consultar os cat ´alogos e
verificar a necessidade de replicac¸ ˜ao da operac¸ ˜ao
A func¸ ˜ao de consulta deve verificar os cat ´alogos e
distribuir a consulta
Utiliza func¸ ˜oes do pgCluster para distribuir os dados e as
consultas
2PC* j ´a implementado. Basta chamar as func¸ ˜oes que
coordenam cada passo
Conceitos
pgGrid
Avaliac¸ ˜ao do prot ´otipo Considerac¸ ˜oes finais
Fragmentac¸ ˜ao Comandos adicionados
Conceitos pgGrid
Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Caracter´ısticas Desempenho Conclus ˜oes Trabalhos futuros
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
Conceitos pgGrid
Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Caracter´ısticas
Desempenho Conclus ˜oes Trabalhos futuros
Comparac¸ ˜ao com outros SGBD
Caracter´ıstica
MySQL
Oracle
DB2
pgGrid
Consultas dist.
Sim
Sim
Sim
Sim
Multi-mestre
Sim
Sim
Sim
Sim
Rep. parcial
N ˜ao
Sim
Sim
Sim
Rep. s´ıncrona
Sim
Sim
Sim
Sim
Rep. ass´ıncrona
N ˜ao
N ˜ao
N ˜ao
N ˜ao
Fragmentac¸ ˜ao
Sim
Sim
Sim
Sim
Def. de regras de frag.
N ˜ao
Sim
N ˜ao
Sim
Integ. ref. distribu´ıda
N ˜ao
N ˜ao
N ˜ao
Sim
Conceitos pgGrid
Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Caracter´ısticas Desempenho Conclus ˜oes Trabalhos futuros
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
Conceitos pgGrid
Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Caracter´ısticas
Desempenho
Conclus ˜oes Trabalhos futuros
Conceitos pgGrid
Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Caracter´ısticas
Desempenho
Conclus ˜oes Trabalhos futuros
Conceitos pgGrid
Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Caracter´ısticas
Desempenho
Conclus ˜oes Trabalhos futuros
Consultas na relac¸ ˜ao fragmentada
Consulta
pgCluster
pgGrid
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
Conceitos pgGrid
Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Caracter´ısticas
Desempenho
Conclus ˜oes Trabalhos futuros
Outras medic¸ ˜oes para a relac¸ ˜ao fragmentada
Medic¸ ˜ao
pgCluster
pgGrid
Tempo para atualizac¸ ˜ao
1.8s
0.9s
Carga de trabalho durante a consulta
20%
38%
Pacotes transmitidos durante atualizac¸ ˜ao
16
4
Pacotes de rede transmitidos consulta
0
400020
Conceitos pgGrid
Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Caracter´ısticas Desempenho Conclus ˜oes Trabalhos futuros
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
Conceitos pgGrid
Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Caracter´ısticas Desempenho
Conclus ˜oes
Trabalhos futuros
Conclus ˜oes
Flexibilidade, escalabilidade e transpar ˆencia;
Otimizac¸ ˜ao de consultas precisa ser melhor trabalhada;
Poucas opc¸ ˜oes em BDD atualmente no mercado;
PostgreSQL foi uma boa escolha para a implementac¸ ˜ao;
Viabilidade do trabalho atestada pelas avaliac¸ ˜oes
Conceitos pgGrid
Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Caracter´ısticas Desempenho Conclus ˜oes Trabalhos futuros
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
Conceitos pgGrid
Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Caracter´ısticas Desempenho Conclus ˜oes
Trabalhos futuros
Trabalhos futuros
Testes com cen ´arios mais complexos
Otimizac¸ ˜ao de consultas (verificar cl ´ausula where dos
comandos update e delete)
Remoc¸ ˜ao da necessidade de servidores de replicac¸ ˜ao
(camada adicional do pgCluster)
Conceitos pgGrid Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Considerac¸ ˜oes finais
1
Conceitos
PostgreSQL
PgCluster
2
Apresentac¸ ˜ao do pgGrid
Fragmentac¸ ˜ao
Comandos adicionados
Alterac¸ ˜oes no servidor do PostgreSQL
3
Avaliac¸ ˜ao do prot ´otipo
Caracter´ısticas
Desempenho
Conclus ˜oes
Trabalhos futuros
4
Considerac¸ ˜oes finais
Conceitos pgGrid Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Considerac¸ ˜oes finais
Reposit ´orio do projeto
http://pgfoundry.org/projects/pggrid/
Download do c ´odigo-fonte
https://svn.inf.ufsc.br/gustavotonini/pgGrid/
Projetos relacionados (replicac¸ ˜ao total)
pgPool (master-slave)
Slony (master-slave)
Conceitos pgGrid Avaliac¸ ˜ao do prot ´otipo
Considerac¸ ˜oes finais
Considerac¸ ˜oes finais