Quem Somos
@fabriziomello
@guilhermelias
Presumimos que você já ...
● Conhece o que é versionamento
● Utiliza alguma ferramenta/técnica de
automação
● Faz isso em seu database
Alguém NÃO “versiona” seu DB ???
Para quem respondeu SIM!!!!
Te esperamos na
“Picareta Solutions”
Introdução ...
Não iremos falar de NoSQL ...
Não temos nenhuma “bala de prata” ...
… mas iremos apresentar dicas legais sobre
deploy em RDBMS 24x7
AFINAL REQUISITOS MUDAM ...
ALTERAÇÃO BÁSICA ...
ALTER TABLE “tabela_mais_acessada_e_mais_gigante”
ADD “sabe_de_nada_inocente” BIGINT DEFAULT 69;
E SENTA O DEDO NO PIPELINE ....
ENTÃO TUDO É “VALIDADO” ...
MAS É AÍ QUE SURGE A DOR ....
ONDE FOI QUE EU ERREI ???
#WTF
ESTAMOS LIDANDO COM RDBMS
ACID PROPERTIES
CONCURRENCY CONTROL
LOCK STRATEGY
ALTER TABLE “tabela_mais_acessada_e_mais_gigante”
ADD “sabe_de_nada_inocente” BIGINT DEFAULT 69;
LEMBRAM DA ALTERAÇÃO BÁSICA?
O QUE É IMPORTANTE ENTENDER ...
● Criação de nova coluna “sabe_de_nada_inocente”
● Update gradual dos registros existentes para o valor default “69”
● Definição do valor default para novos registros “69”
ALTER TABLE “tabela_mais_acessada_e_mais_gigante”
ADD “sabe_de_nada_inocente” BIGINT;
UPDATE “tabela_mais_acessada_e_mais_gigante”
SET “sabe_de_nada_inocente” = 69
WHERE “id” BETWEEN 1 AND 10000
...
WHERE “id” BETWEEN 10001 AND 20000
...
ALTER TABLE “tabela_mais_acessada_e_mais_gigante”
ALTER “sabe_de_nada_inocente” SET DEFAULT 69;
LEMBRAM DA ALTERAÇÃO BÁSICA?
ALGUMAS OUTRAS DICAS ...
● Uso de triggers (INSERT / UPDATE)
● Criação de novas colunas ao invés de modificação de tipos
● Deploy especifíco para remoção de objetos
Sufixo TO_DROP ...
DATABASE REFACTORING
Dev
… é criar / modificar / alterar
Ops
… é manter / zelar / NÃO MEXER!
Dev & Ops
E por que não …
… DBDevOps?!
Dev & Ops
@fabriziomello
@guilhermelias
DÚVIDAS???

Keep calm and Database Continuous Deployment