1. O documento apresenta o pgquarrel, uma ferramenta para refatoração e migração de esquemas no PostgreSQL.
2. Ele fornece características como comparação de esquemas, geração de scripts SQL e suporte a diversos objetos do PostgreSQL.
3. O documento explica como instalar e usar o pgquarrel, seja via arquivo de configuração ou linha de comando, e como ele pode ser usado para gerenciar mudanças no esquema do banco de dados.
2. Sobre este material
• esta apresentação está disponível em:
https://www.slideshare.net/eulerto
• esta apresentação está sob licença Creative Commons
Atribuição-Não Comercial 3.0 Brasil:
http://creativecommons.org/licenses/by-nc/3.0/br
c b n
3. Apresentação
• Euler Taveira
• Desenvolvedor PostgreSQL
• Líder do PostgreSQL Brasil
• @eulerto
• http://eulerto.blogspot.com.br
• Timbira
• Diretor Técnico
• A empresa brasileira de PostgreSQL
• Consultoria
• Desenvolvimento
• Suporte 24x7
• Treinamento
Timbira - A empresa brasileira de PostgreSQL 1 / 20
5. O que é?
• refatoração de esquemas
• migração de esquemas
• comparação de esquemas
• restrita ao PostgreSQL
Origem do Nome
quarrel significa disputa, desavença, discórdia, questão.
Timbira - A empresa brasileira de PostgreSQL 3 / 20
6. O que não é?
• ferramenta para gerenciamento de mudanças em banco de
dados
• Flyway
• Liquibase
• sqitch
• ferramenta com suporte a múltiplos SGBDs
• ferramenta para sincronização de dados
Timbira - A empresa brasileira de PostgreSQL 4 / 20
7. Motivação
• softwares genéricos existentes
• software leve e rápido
• suporte a objetos específicos do PostgreSQL
• suporte a opções específicas do PostgreSQL
• keywords com identificadores
• sem formato intermediário
Timbira - A empresa brasileira de PostgreSQL 5 / 20
9. Características
• escrito em C
• utiliza libpq
• não depende de aplicações externas (ex. pg_dump)
• consulta catálogo: obter metadados
• funciona com diferentes versões do PostgreSQL (9.0 ou
superior)
• somente DDL
• Linux, FreeBSD e Windows
• suporta quase todos os objetos e suas opções
• arquivo de configuração
Timbira - A empresa brasileira de PostgreSQL 7 / 20
10. Objetos suportados
AGGREGATE CAST COLLATION
COMMENT CONVERSION DOMAIN
EVENT TRIGGER EXTENSION FUNCTION
INDEX LANGUAGE MATERIALIZED VIEW
RULE SCHEMA SEQUENCE
TABLE TRIGGER TYPE
VIEW GRANT REVOKE
SECURITY LABEL FOREIGN DATA WRAPPER STATISTICS
SERVER USER MAPPING OPERATOR
OPERATOR CLASS OPERATOR FAMILY FOREIGN TABLE
PUBLICATION SUBSCRIPTION POLICY
ACCESS METHOD TRANSFORM
Timbira - A empresa brasileira de PostgreSQL 8 / 20
11. Instalação
• compilador C (gcc ou clang)
• cmake 2.8.11+
• postgresql-devel / postgresql-server-dev-x.x
• make
Timbira - A empresa brasileira de PostgreSQL 9 / 20
12. Opções
• opções podem ser especificadas:
• arquivo de configuração
• linha de comando
• linha de comando é ideal para scripts
• linha de comando possui precedência sob o arquivo de
configuração
• cada opção é disponibilizada nas duas formas
Timbira - A empresa brasileira de PostgreSQL 10 / 20
13. Arquivo de Configuração
• 3 seções: general, source e target
[general]
output = /timbira/diff.sql
owner = true
single-transaction = true
extension = true
; development
[source]
host = 10.8.0.10
user = alice
dbname = empresa
; production
[target]
host = 10.27.0.8
user = bob
dbname = empresa
Timbira - A empresa brasileira de PostgreSQL 11 / 20
14. Exemplo: Arquivo de Configuração
Mão na massa
Timbira - A empresa brasileira de PostgreSQL 12 / 20
15. Linha de Comando: Opções de Conexão
• source-dbname
• source-host
• source-port
• source-username
• source-no-password
• target-dbname
• target-host
• target-port
• target-username
• target-no-password
Aviso
Por padrão, o pgquarrel vai solicitar a senha se o método de
autenticação exigir (e a mesma não for disponibilizada no arquivo
de senhas – .pgpass).
Timbira - A empresa brasileira de PostgreSQL 13 / 20
16. Linha de Comando: Opções Gerais
• config (-c)
• file (-f)
• ignore-version
• summary (-s)
• single-transaction(-t)
• temp-directory
• verbose (-v)
• help
• version
Timbira - A empresa brasileira de PostgreSQL 14 / 20
17. Linha de Comando: Escolha de Objetos
• aggregate
• cast
• collation
• comment
• conversion
• domain
• event-trigger
• extension
• fdw
• function
• index
• language
• materialized-view
• operator
• owner
• privileges
• rule
• schema
• security-labels
• sequence
• statistics
• table
• text-search
• trigger
• type
• view
Timbira - A empresa brasileira de PostgreSQL 15 / 20
18. Exemplo: Linha de Comando
Mão na massa
Timbira - A empresa brasileira de PostgreSQL 16 / 20
19. Gestão de Mudanças
• pgquarrel
• gerar script de mudança no esquema do banco de dados
• gerar script de rollback (basta inverter source e target)
• sqitch
• diretório deploy conterá script de mudança
• diretório revert conterá script de rollback
Timbira - A empresa brasileira de PostgreSQL 17 / 20
20. TODO
• instalador / pacote
• rpm
• deb
• Windows
• alterar esquema
• renomear objetos
• dependências
• objetos globais
• ROLE
• TABLESPACE
• DATABASE
• herança
Timbira - A empresa brasileira de PostgreSQL 18 / 20