Noções Básicas de Governança
8 exemplos para você começar com a governança do Postgres - 5 básicos e 3 intermediários.
Pré-requisitos
ls docs/postgresql-style-guide.md # ou equivalente do repositório
psql -c "SELECT extname FROM pg_extension ORDER BY 1;"- Patrocinador executivo para padrões de banco de dados (líder técnico ou chefe de plataforma).
- Conselho de banco de dados ou fórum de revisão de arquitetura.
- Ganchos de CI para nomes de arquivos de migração e lint de SQL, sempre que possível.
Exemplos Básicos
1. Escopo do Guia de Estilo de Esquema
Um documento abrange todos os bancos de dados de produtos no Postgres.
# Guia de Estilo PostgreSQL (trecho)
- Tabelas: snake_case plural (`orders`, `line_items`)
- PK: `bigint GENERATED ALWAYS AS IDENTITY` ou `uuid` com default explícito
- Timestamps: `timestamptz` nomeado `created_at`, `updated_at`
- FK: `{referenced_table_singular}_id`
- Nenhuma palavra reservada sem aspas- Exceções exigem ADR com data de expiração.
- O guia de estilo vive no git; PRs o atualizam como código.
Relacionado: Padrões de Nomenclatura e Documentação - comentários e ERDs
2. Modelo de Roles
CREATE ROLE app_read NOLOGIN;
CREATE ROLE app_write NOLOGIN;
CREATE ROLE migrator LOGIN PASSWORD 'vault-rotated';
GRANT app_read TO app_api;
GRANT app_write TO app_worker;
-- migrator possui DDL apenas em CI- Nenhum
app_usersuperusuário compartilhado entre serviços. BYPASSRLSreservado para contas de "break-glass" com auditoria.
3. Lista de Permissões de Extensão
| Extensão | Status | Proprietário |
|---|---|---|
| pgcrypto | Aprovado | platform |
| pgvector | Aprovado | search team |
| postgis | Aprovado | logistics |
| plpython3u | Negado | - |
SELECT extname, extversion FROM pg_extension;- Novas solicitações de extensão passam por um modelo de revisão de segurança.
Relacionado: Governança de Extensões e Plugins - cadência
4. Propriedade de Migração
Equipe de serviço escreve SQL → DBA revisa o nível → CI aplica com role migrator- Tabela de histórico Flyway/Liquibase somente leitura para roles de aplicativo.
- DDL de produção nunca sai do psql do laptop, exceto em "break-glass" com ticket.
5. ADR para Exceções de Esquema
# ADR-0142: Blob de configuração JSONB em tenants
Status: Aceito
Contexto: Flags rápidas de tenant antes do GA
Consequência: Validar no aplicativo; migrar para colunas até o Q4
Data de revisão: 2026-12-01- ADRs armazenados em
docs/adr/vinculados a diagramas ER.
Exemplos Intermediários
6. Auditoria de Alteração de Esquema de Produção
-- Tarefa semanal: objetos criados fora do role migrator
SELECT obj.object_identity, ev.objid, ev.classid
FROM pg_event_trigger_ddl_commands() ev
JOIN pg_identify_object(ev.classid, ev.objid, ev.objsubid) obj
ON true;
-- Preferir auditoria de ddl via pgaudit ou event trigger na conta de plataforma- Alerta se o proprietário de
CREATE TABLEnão formigrator.
7. Consistência Multi-Banco de Dados
payments_db e billing_db usam o mesmo:
- guia de nomenclatura
- convenções de timestamp
- política de nomenclatura RLS (`{table}_tenant_isolation`)- Biblioteca compartilhada para callbacks de migração (
lock_timeout, etc.).
8. Métricas de Governança
| KPI | Meta |
|---|---|
| Migrações sem tag de nível | 0 |
| Extensões não autorizadas | 0 |
| Exceções ADR após a data de revisão | 0 abertas |
| Comparecimento do Conselho | > 80% das equipes representadas |
Relacionado: Melhores Práticas de Governança - checklist completo
Versões da Stack: Esta página foi escrita para PostgreSQL 18.4 (estável 18, manutenção 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x e PostGIS 3.5+.