Как управлять базой данных первым проектом

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

В начале проекта мы решили использовать центральную базу данных, все разработчики использовали эту базу данных.

Но в середине проекта разработчики решили использовать собственные БД, они клонируют БД на свой локальный сервер. Таким образом, они используют и изменяют свои локальные данные, но перенести изменения БД в централизованную БД так сложно, что мы делаем это вручную.

Есть ли хороший способ управлять изменениями БД в централизованной БД?

1 ответ

Решение

но перенести изменения БД в централизованную БД очень сложно, мы делаем это вручную.

И вам никогда не приходило в голову, что это не масштабируется? У нас работает команда из 4 человек с 9 средами - это невозможно сделать вручную. Сверху вы БУДЕТЕ делать ошибки, и если они случаются во время развертывания, это плохо, плохо, плохо.

Тем не менее, эта проблема решена, как и 50 лет назад. Учитесь у истории. Вот наш подход:

  • Смена скриптов БД.
  • В папках, пронумерованных спринтом

В каждом треке базы данных есть таблица SchemaSync, который выполнялся и контрольная сумма

Отсутствующие / измененные сценарии выполняются во время развертывания или вручную (из zip-файла) с помощью командлета powershell.

Это серьезно стандартное решение, предшествующее SSDT и миграциям для возрастов и, вероятно, старше, чем вы. Существуют даже реализации с открытым исходным кодом https://github.com/DbUp/DbUp и коммерческие библиотеки (одна из них на самом деле в VISUAL STUDIO, так что вы можете попробовать это) https://www.red-gate.com/products/sql -разработка / SQL-изменение-автоматизация /

Как единственный путь.

ССДТ: Любит сбрасывать поля. Как вы справляетесь с миграцией БД с этим? Возможно с несколькими шагами? Невозможно. Идея SSDT относительно сценариев изменения не учитывает перемещения данных. Если вы когда-нибудь сделаете рефакторинг большего размера (что мне случается много), то вы знаете, что иногда это не "создание нового поля", а ряд шагов, которые частично запускают сложный код. SSDT полностью не может справиться с этим.

Другие вопросы по тегам