ci/cd баз данных
От: Qulac Россия  
Дата: 02.03.24 12:30
Оценка:
Может кто знает, хорошие ресурсы, курсы по этому делу. Буду очень благодарен за ссылки.
Программа – это мысли спрессованные в код
Re: ci/cd баз данных
От: Буравчик Россия  
Дата: 02.03.24 17:40
Оценка:
Здравствуйте, Qulac, Вы писали:

Q>Может кто знает, хорошие ресурсы, курсы по этому делу. Буду очень благодарен за ссылки.


Зависит от того, что понимаешь под "ci/cd баз данных"
Best regards, Буравчик
Re[2]: ci/cd баз данных
От: Qulac Россия  
Дата: 02.03.24 17:52
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, Qulac, Вы писали:


Q>>Может кто знает, хорошие ресурсы, курсы по этому делу. Буду очень благодарен за ссылки.


Б>Зависит от того, что понимаешь под "ci/cd баз данных"


Ну в крадце например: я открыл в vs проект базы данных slq server, что то там сделал, сделал пуш, а на выходе если все прошло удачно получаются два mof-файла один для нового инстанса, другой для обновления. Естественно это все с какими ни будь там тестами. Примерно так. Проблема в том, что я сам точно не знаю, как это должно быть.
Программа – это мысли спрессованные в код
Re[3]: ci/cd баз данных
От: bnk СССР http://unmanagedvisio.com/
Дата: 02.03.24 19:26
Оценка:
Здравствуйте, Qulac, Вы писали:

Q>>>Может кто знает, хорошие ресурсы, курсы по этому делу. Буду очень благодарен за ссылки.


Б>>Зависит от того, что понимаешь под "ci/cd баз данных"


Q>Ну в крадце например: я открыл в vs проект базы данных slq server, что то там сделал, сделал пуш, а на выходе если все прошло удачно получаются два mof-файла один для нового инстанса, другой для обновления. Естественно это все с какими ни будь там тестами. Примерно так. Проблема в том, что я сам точно не знаю, как это должно быть.


Понятнее не стало. Ты про миграцию базы данных что ли (обновление схемы, данных)?

Обычно для этого есть отдельные инструменты, в зависимости от приложения. Т.е. то как обновлять, определяется приложением.
Разработчик пишет скрипты обновления базы вместе с новой версией приложения. Он же пишет тесты.
Практические в любом ORM такое есть, или можно добавть как библиотеку. См. EntityFramework Migrations, FluentMigrator, DbUp, да куча их.

Такой подход гораздо лучше чем слепое вычисление разницы в структуре и потом ее применение (без понимая сути изменений),
т.к. обеспечивает миграцию существующих данных в новую структуру.

Например, добавляешь ты новое поле. Понятно что добавить его можно автоматическим вычислением разницы.
А во значение в это поле далеко не факт какое нужно прописать, тут все зависит от прилжоения.
И это простейшая миграция.
Отредактировано 02.03.2024 19:29 bnk . Предыдущая версия . Еще …
Отредактировано 02.03.2024 19:29 bnk . Предыдущая версия .
Re[4]: ci/cd баз данных
От: Qulac Россия  
Дата: 02.03.24 19:37
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Здравствуйте, Qulac, Вы писали:


Q>>>>Может кто знает, хорошие ресурсы, курсы по этому делу. Буду очень благодарен за ссылки.


Б>>>Зависит от того, что понимаешь под "ci/cd баз данных"


Q>>Ну в крадце например: я открыл в vs проект базы данных slq server, что то там сделал, сделал пуш, а на выходе если все прошло удачно получаются два mof-файла один для нового инстанса, другой для обновления. Естественно это все с какими ни будь там тестами. Примерно так. Проблема в том, что я сам точно не знаю, как это должно быть.


bnk>Понятнее не стало. Ты про миграцию базы данных что ли (обновление схемы, данных)?


В том числе и про нее.

bnk>Обычно для этого есть отдельные инструменты, в зависимости от приложения. Т.е. то как обновлять, определяется приложением.

bnk>Разработчик пишет скрипты обновления базы вместе с новой версией приложения. Он же пишет тесты.
bnk>Практические в любом ORM такое есть, или можно добавть как библиотеку. См. EntityFramework Migrations, FluentMigrator, DbUp, да куча их.

bnk>Такой подход гораздо лучше чем слепое вычисление разницы в структуре и потом ее применение (без понимая сути изменений),

bnk>т.к. обеспечивает миграцию существующих данных в новую структуру.

bnk>Например, добавляешь ты новое поле. Понятно что добавить его можно автоматическим вычислением разницы.

bnk>А во значение в это поле далеко не факт какое нужно прописать, тут все зависит от прилжоения.
bnk>И это простейшая миграция.

Можно и с ORM, хотелось бы сквозной пример увидеть вместе с примером как пользоваться.
Программа – это мысли спрессованные в код
Re[5]: ci/cd баз данных
От: amironov79  
Дата: 06.03.24 11:40
Оценка: 1 (1)
Здравствуйте, Qulac, Вы писали:

Q>Можно и с ORM, хотелось бы сквозной пример увидеть вместе с примером как пользоваться.


У DataGrip есть DDL Mapping, работает как в базу, так и из базы. Выглядит многообещающе, только мне его на 10000 объектов не удалось заставить правильно работать, где-то у него крышу сносит.
Re[3]: ci/cd баз данных
От: Буравчик Россия  
Дата: 06.03.24 17:42
Оценка: 1 (1) +2
Здравствуйте, Qulac, Вы писали:

Q>Ну в крадце например: я открыл в vs проект базы данных slq server, что то там сделал, сделал пуш, а на выходе если все прошло удачно получаются два mof-файла один для нового инстанса, другой для обновления. Естественно это все с какими ни будь там тестами. Примерно так. Проблема в том, что я сам точно не знаю, как это должно быть.


Конкретно про MS-stack не знаю. Но в общем случае так:

Обычно изменения в БД (миграции) явно пишет разработчик в отдельные файлики, которые живут в репозитории кода. При выкладке (в ci/cd) инструмент миграции (liquibase, alembic и т.п.) выполняет эти миграции на БД, отслеживая, какие нужно выполнить, а какие уже выполнены ранее (поддерживает для этого историю выполненных миграций в БД). Для пустой БД вообще все просто — после создания БД все миграции выполняются по порядку от первой до последней.

В ci/cd обычно сначала накатываются миграции на БД, затем выкладывается код. Отдельные тесты на миграции обычно не пишут, но миграции тестируются косвенно, через тесты кода. Соответственно код и тесты пишут, считая, что БД уже приведена в нужно состояние (миграции уже выполнились).
Best regards, Буравчик
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.