Estamos armazenando pg_dump
o esquema DDL produzido em nosso controle de versão.
Descobrimos que comparar pg_dump
a saída antes/depois da aplicação dos scripts de migração dá uma ideia melhor das alterações que estão sendo aplicadas.
No entanto, o problema que estou enfrentando com pg_dump
a saída é que as alterações de objetos relacionados estão em todo o arquivo. Portanto, no momento em que você tem uma alteração que afeta vários objetos no esquema, fica difícil ver as alterações relacionadas.
Estou me perguntando se existem formatos alternativos para os quais eu possa exportar esquemas de banco de dados simplesmente com o propósito de diferenciá-los, por exemplo, estou pensando em usar o psql para gerar uma representação de objetos em tabela ascii.
test=# \d+ question
Table "public.question"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
---------------+---------+-----------+----------+--------------------------------------+----------+--------------+-------------
id | integer | | not null | nextval('question_id_seq'::regclass) | plain | |
question | text | | not null | | extended | |
interest_id | integer | | | | plain | |
slack_team_id | integer | | | | plain | |
Indexes:
"question_pkey" PRIMARY KEY, btree (id)
"question_question_slack_team_id_idx" UNIQUE, btree (question, slack_team_id)
"question_interest_id_idx" btree (interest_id)
"question_slack_team_id_idx" btree (slack_team_id)
Foreign-key constraints:
"question_interest_id_fkey" FOREIGN KEY (interest_id) REFERENCES interest(id) ON DELETE CASCADE
"question_slack_team_id_fkey" FOREIGN KEY (slack_team_id) REFERENCES slack_team(id) ON DELETE CASCADE
Referenced by:
TABLE "trivia_question" CONSTRAINT "trivia_question_question_id_fkey" FOREIGN KEY (question_id) REFERENCES question(id) ON DELETE CASCADE
Access method: heap
Responder1
Dificilmente é uma resposta à minha pergunta, mas documentarei o que encontrei:
- simplesmente usando
\dt+ *.*
para gerar a descrição psql de todo o banco de dados - https://www.schemacrawler.com/output.htmlgera esquema amigável em texto simples, HTML e JSON.
- http://schemaspy.org/- não é o que eu procurava, mas descobri que é uma ótima maneira de documentar o esquema atual.
- https://github.com/keithf4/pg_extractor– extrai cada objeto do banco de dados em seu próprio arquivo. Foi isso que acabei usando.
Vou atualizar isso à medida que descubro soluções melhores.