SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
pgquarrel: o esquema mudou?
Euler Taveira
São Paulo, 03/08/2018
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
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
Resumo
1 Introdução
2 pgquarrel
Timbira - A empresa brasileira de PostgreSQL 2 / 20
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
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
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
Resumo
1 Introdução
2 pgquarrel
Timbira - A empresa brasileira de PostgreSQL 6 / 20
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
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
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
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
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
Exemplo: Arquivo de Configuração
Mão na massa
Timbira - A empresa brasileira de PostgreSQL 12 / 20
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
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
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
Exemplo: Linha de Comando
Mão na massa
Timbira - A empresa brasileira de PostgreSQL 16 / 20
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
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
Projeto
• https://github.com/eulerto/pgquarrel
• Issues
• Pull Requests
Timbira - A empresa brasileira de PostgreSQL 19 / 20
Perguntas
?
Euler Taveira de Oliveira
euler@timbira.com.br
http://www.timbira.com.br
Timbira - A empresa brasileira de PostgreSQL 20 / 20

Mais conteúdo relacionado

Mais procurados

Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLMatheus Espanhol
 
OpenLAP Multimaster
OpenLAP MultimasterOpenLAP Multimaster
OpenLAP Multimastercioban
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endMario Guedes
 
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Kelver Merlotti
 
FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015Guinther Pauli
 
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...Fabrízio Mello
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLJohnes Castro
 
Aplicando o poder de uma GPU no SQL Server
Aplicando o poder de uma GPU noSQL ServerAplicando o poder de uma GPU noSQL Server
Aplicando o poder de uma GPU no SQL Serverpichiliani
 
Aplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQLAplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQLpichiliani
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoFabio Telles Rodriguez
 
Entendendo o paralelismo no SQL Server
Entendendo o paralelismo no SQL ServerEntendendo o paralelismo no SQL Server
Entendendo o paralelismo no SQL ServerLuciano Moreira
 
Performance tunning de servidores ColdFusion MX
Performance tunning de servidores ColdFusion MXPerformance tunning de servidores ColdFusion MX
Performance tunning de servidores ColdFusion MXAlex Hübner
 
Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...
Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...
Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...Joao Galdino Mello de Souza
 
Tirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQTirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQNelson Senna do Amaral
 
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Matheus Espanhol
 

Mais procurados (20)

Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQL
 
OpenLAP Multimaster
OpenLAP MultimasterOpenLAP Multimaster
OpenLAP Multimaster
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
 
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
 
FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015
 
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
 
Drupal + Rex
Drupal + RexDrupal + Rex
Drupal + Rex
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQL
 
Aplicando o poder de uma GPU no SQL Server
Aplicando o poder de uma GPU noSQL ServerAplicando o poder de uma GPU noSQL Server
Aplicando o poder de uma GPU no SQL Server
 
Aplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQLAplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQL
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
Entendendo o paralelismo no SQL Server
Entendendo o paralelismo no SQL ServerEntendendo o paralelismo no SQL Server
Entendendo o paralelismo no SQL Server
 
Ruby profiling
Ruby profilingRuby profiling
Ruby profiling
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
Samba4+debian8
Samba4+debian8Samba4+debian8
Samba4+debian8
 
Performance tunning de servidores ColdFusion MX
Performance tunning de servidores ColdFusion MXPerformance tunning de servidores ColdFusion MX
Performance tunning de servidores ColdFusion MX
 
Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...
Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...
Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...
 
Replicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManagerReplicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManager
 
Tirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQTirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQ
 
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
 

Semelhante a Pgquarrel

Arquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLArquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLRaul Oliveira
 
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)Fabrízio Mello
 
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)Fabrízio Mello
 
Versionamento de modelo de dados com PostgreSQL
Versionamento de modelo de dados com PostgreSQLVersionamento de modelo de dados com PostgreSQL
Versionamento de modelo de dados com PostgreSQLLeonardo Cezar
 
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...Joao Galdino Mello de Souza
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoelliando dias
 
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoCurso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoGuilhermeJorgeAragod
 
Ferramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascriptFerramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascriptRodrigo Ferreira
 
Analise de Performance Usando o SO
Analise de Performance Usando o SOAnalise de Performance Usando o SO
Analise de Performance Usando o SORaul Oliveira
 
Planejamento de Capacidade com ferramentas Gratuítas, por Rodrigo Albani de C...
Planejamento de Capacidade com ferramentas Gratuítas, por Rodrigo Albani de C...Planejamento de Capacidade com ferramentas Gratuítas, por Rodrigo Albani de C...
Planejamento de Capacidade com ferramentas Gratuítas, por Rodrigo Albani de C...Joao Galdino Mello de Souza
 
Planejamento de Capacidade com ferramentas gratuitas
Planejamento de Capacidade com ferramentas gratuitasPlanejamento de Capacidade com ferramentas gratuitas
Planejamento de Capacidade com ferramentas gratuitasRodrigo Campos
 
PostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandesPostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandesjoanio trade
 
PostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPedro Fernandes Vieira
 
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP) NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP) Fabrízio Mello
 
.Net Community Summit - Construindo APIs REST seguras com o ASP.NET Core - Re...
.Net Community Summit - Construindo APIs REST seguras com o ASP.NET Core - Re....Net Community Summit - Construindo APIs REST seguras com o ASP.NET Core - Re...
.Net Community Summit - Construindo APIs REST seguras com o ASP.NET Core - Re...iMasters
 
Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018
Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018
Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018Renato Groff
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctoolse-Setorial
 
Otimizando sites com o nosql redis
Otimizando sites com o nosql redisOtimizando sites com o nosql redis
Otimizando sites com o nosql redisAllisson Azevedo
 

Semelhante a Pgquarrel (20)

Arquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLArquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQL
 
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
 
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
 
Versionamento de modelo de dados com PostgreSQL
Versionamento de modelo de dados com PostgreSQLVersionamento de modelo de dados com PostgreSQL
Versionamento de modelo de dados com PostgreSQL
 
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoCurso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
 
Ferramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascriptFerramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascript
 
Analise de Performance Usando o SO
Analise de Performance Usando o SOAnalise de Performance Usando o SO
Analise de Performance Usando o SO
 
Planejamento de Capacidade com ferramentas Gratuítas, por Rodrigo Albani de C...
Planejamento de Capacidade com ferramentas Gratuítas, por Rodrigo Albani de C...Planejamento de Capacidade com ferramentas Gratuítas, por Rodrigo Albani de C...
Planejamento de Capacidade com ferramentas Gratuítas, por Rodrigo Albani de C...
 
Planejamento de Capacidade com ferramentas gratuitas
Planejamento de Capacidade com ferramentas gratuitasPlanejamento de Capacidade com ferramentas gratuitas
Planejamento de Capacidade com ferramentas gratuitas
 
PostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandesPostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandes
 
PostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro Vieira
 
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP) NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
 
.Net Community Summit - Construindo APIs REST seguras com o ASP.NET Core - Re...
.Net Community Summit - Construindo APIs REST seguras com o ASP.NET Core - Re....Net Community Summit - Construindo APIs REST seguras com o ASP.NET Core - Re...
.Net Community Summit - Construindo APIs REST seguras com o ASP.NET Core - Re...
 
Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018
Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018
Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018
 
Por que PostgreSQL?
Por que PostgreSQL?Por que PostgreSQL?
Por que PostgreSQL?
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Otimizando sites com o nosql redis
Otimizando sites com o nosql redisOtimizando sites com o nosql redis
Otimizando sites com o nosql redis
 

Pgquarrel

  • 1. pgquarrel: o esquema mudou? Euler Taveira São Paulo, 03/08/2018
  • 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
  • 4. Resumo 1 Introdução 2 pgquarrel Timbira - A empresa brasileira de PostgreSQL 2 / 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
  • 8. Resumo 1 Introdução 2 pgquarrel Timbira - A empresa brasileira de PostgreSQL 6 / 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
  • 21. Projeto • https://github.com/eulerto/pgquarrel • Issues • Pull Requests Timbira - A empresa brasileira de PostgreSQL 19 / 20
  • 22. Perguntas ? Euler Taveira de Oliveira euler@timbira.com.br http://www.timbira.com.br Timbira - A empresa brasileira de PostgreSQL 20 / 20