|
Postgres. Ведение и развёртывание DB проекта
|
|||
---|---|---|---|
#18+
Всем доброго дня. Есть задача: 1) заскриптовать базу(процедуры, таблицы, функции и тд) 2) положить все скрипты в Git(каждая сущность в отдельном файле) 3) при изменении любой сущности в проекте иметь возможность сформировать DIFF-скрипт, который, собсно, синхронизирует DBProject с базой. Может ли кто-нибудь поделиться, как такое можно сделать? Может есть какие-то тулзы, которые сравнивают Git-репозиторий с базой и формируют Diff-скрипт ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:05 |
|
Postgres. Ведение и развёртывание DB проекта
|
|||
---|---|---|---|
#18+
Kanadec 3) при изменении любой сущности в проекте иметь возможность сформировать DIFF-скрипт, который, собсно, синхронизирует DBProject с базой. В ОБЩЕМ случае, это сделать не возможно Например добавление поля с контстрейном NOT NULL. Что делать, если в таблице уже есть данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:07 |
|
Postgres. Ведение и развёртывание DB проекта
|
|||
---|---|---|---|
#18+
Предположим что база абсолютно пустая и добавление NOT NULL поля не будет падать. Очень хочется получить DIFF-скрипт. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 17:37 |
|
Postgres. Ведение и развёртывание DB проекта
|
|||
---|---|---|---|
#18+
Kanadec, Встречал 2 варианта, на C: https://github.com/eulerto/pgquarrel и на Python: https://github.com/djrobstep/migra ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 22:11 |
|
Postgres. Ведение и развёртывание DB проекта
|
|||
---|---|---|---|
#18+
Kanadec, alembic может бьіть? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 23:01 |
|
Postgres. Ведение и развёртывание DB проекта
|
|||
---|---|---|---|
#18+
Kanadec Предположим что база абсолютно пустая и добавление NOT NULL поля не будет падать. Очень хочется получить DIFF-скрипт. если база пустая то diff скрипт - просто пересозание базы с нуля (drop db/create db/пересоздать все что надо по списку) если не пустая - то с автоматическими diff задача не решается... просто потому что не ясно например если в таблице было поле А а стало поле Б это 1)переименование поля А в поле Б или 2)удалили поле А и добавили поле Б результаты то весьма разные будут... production ddl он сильно завязан на миграцию имеющихся данных а такие вещи только руками пишутся более того зачастую даже ручной ddl надо переделывать на постадийное внесение та же простейшая смена типа с int на bigint в таблице на терабайт (да и на 10gb уже весело на самом деле) - если делать в лоб устроит вам downtime на сутки и с хорошими шансами потерю всех реплик... а не в лоб - это достаточно хитрая миграция с триггерами и обновлением таблицы по частям. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 10:03 |
|
Postgres. Ведение и развёртывание DB проекта
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Например добавление поля с контстрейном NOT NULL. Что делать, если в таблице уже есть данные? добавить в определение новой колонки DEFAULT значение Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:03 |
|
Postgres. Ведение и развёртывание DB проекта
|
|||
---|---|---|---|
#18+
Kanadec Предположим что база абсолютно пустая и добавление NOT NULL поля не будет падать. Очень хочется получить DIFF-скрипт. у нас нечто подобное - https://habr.com/ru/post/333762/ но сильно "допиленное" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 20:09 |
|
|
start [/forum/topic.php?fid=53&gotonew=1&tid=1994912]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get first new msg: |
29ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 274ms |
total: | 437ms |
0 / 0 |