ténicas de database refactoring para ambientes 24x7

44
ecnicas de Database Refactoring para ambientes 24x7 Matheus de Oliveira <[email protected]> Apresentado no 27 de Mar¸ co de 2015

Upload: matheus-de-oliveira

Post on 27-Jul-2015

74 views

Category:

Data & Analytics


2 download

TRANSCRIPT

Page 1: Ténicas de Database Refactoring para ambientes 24x7

Tecnicas de Database Refactoring para ambientes 24x7

Matheus de Oliveira<[email protected]>

Apresentado no27 de Marco de 2015

Page 2: Ténicas de Database Refactoring para ambientes 24x7

Matheus de Oliveira<[email protected]>

DBA PostgreSQL – consultorias e suportes24x7/8x5

Instrutor dos treinamentos PostgreSQL

Concepcao, desenvolvimento e suporte aproducao

Page 3: Ténicas de Database Refactoring para ambientes 24x7

Matheus de Oliveira<[email protected]>

Mais de 15 anos trabalhando de suporte econsultoria PostgreSQL

http://www.dextra.com.br/

“Crafting Software, Transforming Business”

Instrutor dos treinamentos PostgreSQL

Concepcao, desenvolvimento e suporte aproducao

Page 4: Ténicas de Database Refactoring para ambientes 24x7

Matheus de Oliveira<[email protected]>

Mais de 15 anos trabalhando de suporte econsultoria PostgreSQL

http://www.dextra.com.br/

“Crafting Software, Transforming Business”

10 anos e mais de 10 mil profissionaiscapacitados em todo o Brasil.

http://www.dextraining.com.br/

“Aprenda com quem faz na pratica”

Concepcao, desenvolvimento e suporte aproducao

Page 5: Ténicas de Database Refactoring para ambientes 24x7

Matheus de Oliveira<[email protected]>

Mais de 15 anos trabalhando de suporte econsultoria PostgreSQL

http://www.dextra.com.br/

“Crafting Software, Transforming Business”

10 anos e mais de 10 mil profissionaiscapacitados em todo o Brasil.

http://www.dextraining.com.br/

“Aprenda com quem faz na pratica”

SaaS para analise e monitoramento PostgreSQLhttp://www.pganalytics.com.br/

“Facilitando a vida do DBA”

Page 6: Ténicas de Database Refactoring para ambientes 24x7

DatabaseRefactoring

Page 7: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring abc

“A simple change to a database schema that improves its designwhile retaining both its behavioral and informational semantics – in

other words, you can neither add new functionality nor break existingfunctionality, nor can you add new data nor change the meaning of

existing data.”

Scott Ambler and Pramod Sadalage (2006).Refactoring databases: Evolutionary database design.

Addison-Wesley.

4 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 8: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring abc

• Segue a mesma ideia e princıpios de refatoracao de codigo, so quee considerado um pouco mais difıcil.

• Escrever e evoluir o codigo de forma disciplinada:

◦ nem tao importante durante o desenvolvimento inicial (antes de entrarem producao);

◦ essencial (pra todos?) apos ter entrado em producao.

• Desenvolvedores, DBAs, sysadmins... DevOps... Todostrabalhando juntos com um objetivo em comum

5 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 9: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring abc

Estrategia:

6 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 10: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring abc

Mais difıcil do que parece:

7 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 11: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – exemplos abc

Podemos dividir os tipos de refatoracao em 6 categorias:

• Estrutural (structural);

• Qualidade dos dados (data quality);

• Integridade referencial (referential integrity);

• Arquitetural (architectural);

• Metodos/funcoes (method);

• Transformacao (non-refactoring transformation).

8 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 12: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – exemplos abc

Incrementar o esquema e facil:

9 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 13: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – exemplos abc

SELECT ... FROM mensagens m

LEFT JOIN usuario_local l

ON l.usuario_id = m.de_id

AND m.data_hora BETWEEN l.data_ini

AND l.data_fim

10 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 14: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – exemplos abc

Em alguns casos, como no exemplo, nao ha necessidade desincronizacao:

• adicionar colunas a tabelas, desde que essas possam ser NULL outenham um valor DEFAULT definido;

• adicionar novas tabelas, visoes ou funcoes ao modelo;

• adicionar funcoes que mantenham compatibilidade.

11 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 15: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – exemplos abc

Mudar a estrutura ja e mais complicado:

12 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 16: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – sincronizacao abc

Para muitos casos, como renomear uma coluna, mover de uma tabelapara outra, remover uma tabela, entre outros; e necessario ummecanismo de sincronizacao. Estes podem ser feitos via:

• gatilhos (triggers);

• visoes (views);

• atualizacoes em lote (batch updates);

13 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 17: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – dicasabc

• Tenha diversos ambientes (sandboxes para desenvolvedores,ambiente de teste de carga, demonstracao, QA, etc.);

• Mantenha o versionamento da base num controle de versoes, etambem a informacao da versao atual na propria base (useferramentas como Sqitch, dbdeploy, Flyway, etc... ou faca a sua);

• Use ambientes de Integracao Contınua (Continuous Integration);• Pequenas modificacoes sao mais faceis de aplicar e testar (tente

dividir uma grande tarefa e varias menores);• Automatize tudo;• Faca as pazes entre desenvolvedores e DBAs (dica:

pair-programming entre ambos sempre que possıvel)... =) ;• Teste...• Teste...• TESTE!!!

14 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 18: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – dicasabc

• Tenha diversos ambientes (sandboxes para desenvolvedores,ambiente de teste de carga, demonstracao, QA, etc.);

• Mantenha o versionamento da base num controle de versoes, etambem a informacao da versao atual na propria base (useferramentas como Sqitch, dbdeploy, Flyway, etc... ou faca a sua);

• Use ambientes de Integracao Contınua (Continuous Integration);• Pequenas modificacoes sao mais faceis de aplicar e testar (tente

dividir uma grande tarefa e varias menores);• Automatize tudo;• Faca as pazes entre desenvolvedores e DBAs (dica:

pair-programming entre ambos sempre que possıvel)... =) ;• Teste...• Teste...• TESTE!!!

14 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 19: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – dicasabc

• Tenha diversos ambientes (sandboxes para desenvolvedores,ambiente de teste de carga, demonstracao, QA, etc.);

• Mantenha o versionamento da base num controle de versoes, etambem a informacao da versao atual na propria base (useferramentas como Sqitch, dbdeploy, Flyway, etc... ou faca a sua);

• Use ambientes de Integracao Contınua (Continuous Integration);

• Pequenas modificacoes sao mais faceis de aplicar e testar (tentedividir uma grande tarefa e varias menores);

• Automatize tudo;• Faca as pazes entre desenvolvedores e DBAs (dica:

pair-programming entre ambos sempre que possıvel)... =) ;• Teste...• Teste...• TESTE!!!

14 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 20: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – dicasabc

• Tenha diversos ambientes (sandboxes para desenvolvedores,ambiente de teste de carga, demonstracao, QA, etc.);

• Mantenha o versionamento da base num controle de versoes, etambem a informacao da versao atual na propria base (useferramentas como Sqitch, dbdeploy, Flyway, etc... ou faca a sua);

• Use ambientes de Integracao Contınua (Continuous Integration);• Pequenas modificacoes sao mais faceis de aplicar e testar (tente

dividir uma grande tarefa e varias menores);

• Automatize tudo;• Faca as pazes entre desenvolvedores e DBAs (dica:

pair-programming entre ambos sempre que possıvel)... =) ;• Teste...• Teste...• TESTE!!!

14 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 21: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – dicasabc

• Tenha diversos ambientes (sandboxes para desenvolvedores,ambiente de teste de carga, demonstracao, QA, etc.);

• Mantenha o versionamento da base num controle de versoes, etambem a informacao da versao atual na propria base (useferramentas como Sqitch, dbdeploy, Flyway, etc... ou faca a sua);

• Use ambientes de Integracao Contınua (Continuous Integration);• Pequenas modificacoes sao mais faceis de aplicar e testar (tente

dividir uma grande tarefa e varias menores);• Automatize tudo;

• Faca as pazes entre desenvolvedores e DBAs (dica:pair-programming entre ambos sempre que possıvel)... =) ;

• Teste...• Teste...• TESTE!!!

14 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 22: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – dicasabc

• Tenha diversos ambientes (sandboxes para desenvolvedores,ambiente de teste de carga, demonstracao, QA, etc.);

• Mantenha o versionamento da base num controle de versoes, etambem a informacao da versao atual na propria base (useferramentas como Sqitch, dbdeploy, Flyway, etc... ou faca a sua);

• Use ambientes de Integracao Contınua (Continuous Integration);• Pequenas modificacoes sao mais faceis de aplicar e testar (tente

dividir uma grande tarefa e varias menores);• Automatize tudo;• Faca as pazes entre desenvolvedores e DBAs (dica:

pair-programming entre ambos sempre que possıvel)... =) ;

• Teste...• Teste...• TESTE!!!

14 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 23: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – dicasabc

• Tenha diversos ambientes (sandboxes para desenvolvedores,ambiente de teste de carga, demonstracao, QA, etc.);

• Mantenha o versionamento da base num controle de versoes, etambem a informacao da versao atual na propria base (useferramentas como Sqitch, dbdeploy, Flyway, etc... ou faca a sua);

• Use ambientes de Integracao Contınua (Continuous Integration);• Pequenas modificacoes sao mais faceis de aplicar e testar (tente

dividir uma grande tarefa e varias menores);• Automatize tudo;• Faca as pazes entre desenvolvedores e DBAs (dica:

pair-programming entre ambos sempre que possıvel)... =) ;• Teste...

• Teste...• TESTE!!!

14 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 24: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – dicasabc

• Tenha diversos ambientes (sandboxes para desenvolvedores,ambiente de teste de carga, demonstracao, QA, etc.);

• Mantenha o versionamento da base num controle de versoes, etambem a informacao da versao atual na propria base (useferramentas como Sqitch, dbdeploy, Flyway, etc... ou faca a sua);

• Use ambientes de Integracao Contınua (Continuous Integration);• Pequenas modificacoes sao mais faceis de aplicar e testar (tente

dividir uma grande tarefa e varias menores);• Automatize tudo;• Faca as pazes entre desenvolvedores e DBAs (dica:

pair-programming entre ambos sempre que possıvel)... =) ;• Teste...• Teste...

• TESTE!!!

14 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 25: Ténicas de Database Refactoring para ambientes 24x7

Database Refactoring – dicasabc

• Tenha diversos ambientes (sandboxes para desenvolvedores,ambiente de teste de carga, demonstracao, QA, etc.);

• Mantenha o versionamento da base num controle de versoes, etambem a informacao da versao atual na propria base (useferramentas como Sqitch, dbdeploy, Flyway, etc... ou faca a sua);

• Use ambientes de Integracao Contınua (Continuous Integration);• Pequenas modificacoes sao mais faceis de aplicar e testar (tente

dividir uma grande tarefa e varias menores);• Automatize tudo;• Faca as pazes entre desenvolvedores e DBAs (dica:

pair-programming entre ambos sempre que possıvel)... =) ;• Teste...• Teste...• TESTE!!!

14 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 26: Ténicas de Database Refactoring para ambientes 24x7

Zero DowntimeUpgrades

Page 27: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgradesabc

• Existe um mito que qualquer atualizacoes em bancos de dadosrelacionais e extremamente lenta.

• E fato que operacoes DDL (Data Definition Language) muitasvezes bloqueiam operacoes DML (Data Manipulation Language),mas e possıvel fazer com que este bloqueio seja extremamenterapido na grande maioria dos casos.

16 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 28: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – ALTER TABLE abc

• Sem duvida o comando que gera maiores duvidas e dores decabeca.

• Para executar um ALTER TABLE o banco de dados necessita de umbloqueio exclusivo da tabela (em muitos casos bloqueando ateconsultas), mas existem basicamente dois mecanismos para umALTER TABLE atualizar o esquema:◦ com necessidade de reescrita – a tabela e atualizada completamente

(in-place ou usando arquivos temporarios) + atualizacao de catalogo;◦ sem necessidade de reescrita – apenas atualizacao de catalogo.

• A necessidade ou nao de reescrita depende do SGDB e docomando executado, vamos ver alguns exemplos e como saotratados no PostgreSQL, Oracle e MySQL.

17 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 29: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – ALTER TABLE abc

Adicionar coluna, sem valor DEFAULT:

ALTER TABLE usuarios

ADD lat NUMERIC;

PostgreSQL : sem reescrita;

Oracle : sem reescrita;

MySQL : com reescrita (mas a partir da versao 5.6 e possıvelreescrita in-place e sem bloqueio de operacoes DML –exceto para auto increment);

18 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 30: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – ALTER TABLE abc

Adicionar coluna, com valor DEFAULT:

ALTER TABLE usuarios

ADD ativo BOOLEAN DEFAULT t r u e ;

PostgreSQL : com reescrita (devido a necessidade do valorDEFAULT);

Oracle : com reescrita (devido a necessidade do valorDEFAULT);

MySQL : com reescrita (mesmas consideracoes do anterior);

19 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 31: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – ALTER TABLE abc

Adicionar coluna, com valor DEFAULT e NOT NULL:

ALTER TABLE usuarios

ADD ativo BOOLEAN DEFAULT t r u e NOT NULL;

PostgreSQL : com reescrita (devido a necessidade do valorDEFAULT);

Oracle : sem reescrita (a partir da versao 11g, anteriormente areescrita era necessaria);

MySQL : com reescrita (mesmas consideracoes do anterior);

Para adicao de colunas com valor DEFAULT (exceto MySQL 5.6+),uma pratica comum e adicionar a coluna sem DEFAULT, definir o

DEFAULT em outra operacao e fazer um UPDATE em grupos(batches) e/ou em paralelo para aplicar as linhas antigas.

20 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 32: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – ALTER TABLE abc

Remover coluna:

ALTER TABLE usuarios

DROP fone_casa;

PostgreSQL : sem reescrita;

Oracle : sem reescrita se usando o comando:ALTER TABLE usuarios ALTER fone_casa SET UNUSED

;

MySQL : com reescrita (mas a partir da versao 5.6 e possıvelreescrita in-place e sem bloqueio de operacoes DML);

21 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 33: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – ALTER TABLE abc

Alterar tipo de uma coluna:

ALTER TABLE usuarios

ALTER lat TYPE b i g i n t ;

PostgreSQL : com reescrita;

Oracle : com reescrita;

MySQL : com reescrita;

22 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 34: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – ALTER TABLE abc

Alterar limite de uma coluna:

ALTER TABLE usuarios

ALTER nome TYPE v a r c h a r (100);

PostgreSQL : a partir da versao 9.2, sem reescrita somente se olimite estiver aumentando (ou remocao de limite);

Oracle : sem reescrita somente se o limite estiver aumentando;

MySQL : a partir da versao 5.6, sem reescrita somente se olimite estiver aumentando;

23 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 35: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – ALTER TABLE abc

Criacao de ındices.

PostgreSQL : diminui o bloqueio se usado CREATE INDEX

CONCURRENTLY ...;

Oracle : diminui o bloqueio se usado CREATE INDEX ...

ONLINE;

MySQL : nao bloqueia para ındices secundarios, excetoFULLTEXT (InnoDB 5.1+, demais 5.6+).

24 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 36: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – dicasabc

• Nunca se preocupe com a posicao das colunas numa tabela,mapeia as posicoes logicas no seu codigo/aplicacao;

• Nunca utilize o famigerado SELECT * ;

• Tente executar essas migracoes em momentos de menoratividade, mesmo que sejam sem reescrita;

• Execute scripts de migracao parte a parte, algumas vezes umunico script de migracao pode levar dias;

• Automatize tudo que for possıvel, mas acompanhe a execucaoquando for em producao.

• Teste...

• Teste...• TESTE!!!

25 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 37: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – dicasabc

• Nunca se preocupe com a posicao das colunas numa tabela,mapeia as posicoes logicas no seu codigo/aplicacao;

• Nunca utilize o famigerado SELECT * ;

• Tente executar essas migracoes em momentos de menoratividade, mesmo que sejam sem reescrita;

• Execute scripts de migracao parte a parte, algumas vezes umunico script de migracao pode levar dias;

• Automatize tudo que for possıvel, mas acompanhe a execucaoquando for em producao.

• Teste...

• Teste...• TESTE!!!

25 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 38: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – dicasabc

• Nunca se preocupe com a posicao das colunas numa tabela,mapeia as posicoes logicas no seu codigo/aplicacao;

• Nunca utilize o famigerado SELECT * ;

• Tente executar essas migracoes em momentos de menoratividade, mesmo que sejam sem reescrita;

• Execute scripts de migracao parte a parte, algumas vezes umunico script de migracao pode levar dias;

• Automatize tudo que for possıvel, mas acompanhe a execucaoquando for em producao.

• Teste...

• Teste...• TESTE!!!

25 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 39: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – dicasabc

• Nunca se preocupe com a posicao das colunas numa tabela,mapeia as posicoes logicas no seu codigo/aplicacao;

• Nunca utilize o famigerado SELECT * ;

• Tente executar essas migracoes em momentos de menoratividade, mesmo que sejam sem reescrita;

• Execute scripts de migracao parte a parte, algumas vezes umunico script de migracao pode levar dias;

• Automatize tudo que for possıvel, mas acompanhe a execucaoquando for em producao.

• Teste...

• Teste...• TESTE!!!

25 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 40: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – dicasabc

• Nunca se preocupe com a posicao das colunas numa tabela,mapeia as posicoes logicas no seu codigo/aplicacao;

• Nunca utilize o famigerado SELECT * ;

• Tente executar essas migracoes em momentos de menoratividade, mesmo que sejam sem reescrita;

• Execute scripts de migracao parte a parte, algumas vezes umunico script de migracao pode levar dias;

• Automatize tudo que for possıvel, mas acompanhe a execucaoquando for em producao.

• Teste...

• Teste...• TESTE!!!

25 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 41: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – dicasabc

• Nunca se preocupe com a posicao das colunas numa tabela,mapeia as posicoes logicas no seu codigo/aplicacao;

• Nunca utilize o famigerado SELECT * ;

• Tente executar essas migracoes em momentos de menoratividade, mesmo que sejam sem reescrita;

• Execute scripts de migracao parte a parte, algumas vezes umunico script de migracao pode levar dias;

• Automatize tudo que for possıvel, mas acompanhe a execucaoquando for em producao.

• Teste...

• Teste...• TESTE!!!

25 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 42: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – dicasabc

• Nunca se preocupe com a posicao das colunas numa tabela,mapeia as posicoes logicas no seu codigo/aplicacao;

• Nunca utilize o famigerado SELECT * ;

• Tente executar essas migracoes em momentos de menoratividade, mesmo que sejam sem reescrita;

• Execute scripts de migracao parte a parte, algumas vezes umunico script de migracao pode levar dias;

• Automatize tudo que for possıvel, mas acompanhe a execucaoquando for em producao.

• Teste...

• Teste...

• TESTE!!!

25 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 43: Ténicas de Database Refactoring para ambientes 24x7

Zero Downtime Upgrades – dicasabc

• Nunca se preocupe com a posicao das colunas numa tabela,mapeia as posicoes logicas no seu codigo/aplicacao;

• Nunca utilize o famigerado SELECT * ;

• Tente executar essas migracoes em momentos de menoratividade, mesmo que sejam sem reescrita;

• Execute scripts de migracao parte a parte, algumas vezes umunico script de migracao pode levar dias;

• Automatize tudo que for possıvel, mas acompanhe a execucaoquando for em producao.

• Teste...

• Teste...• TESTE!!!

25 / 26Tecnicas de Database Refactoring para ambientes 24x7 – Matheus de Oliveira – QCon SP 2015

Page 44: Ténicas de Database Refactoring para ambientes 24x7

Obrigado!abc

Duvidas?

Matheus de Oliveira<[email protected]>

IRC – irc.freenode.net:/join #postgresql,#postgresql-br,#dextra

Meu nick: MatheusOl

Twitter: @matioli matheusLinkedIn: br.linkedin.com/in/matheusdeoliveira/

SlideShare: slideshare.net/matheus de oliveira