Как должны быть реализованы справочные данные в решениях для непрерывного развертывания баз данных на основе состояний?
Типичное решение на основе состояний, с которым я столкнулся, заключается в использовании серии сценариев после развертывания SQL, которые усекают таблицы справочных данных и затем переходите к INSERT
справочным данным по одной строке за раз.
Проблема с этим типичным решением состоит в том, что окружение иногда может быть изменено людьми, не участвующими в разработке, и эти изменения необходимо сохранять. В результате требуется много ручных сравнений для выявления этих изменений во время циклов развертывания, и все меньше и меньше доверяют автоматизированным развертываниям.
Существуют ли какие-либо альтернативные решения этой типичной реализации, которые подходят для ситуаций, когда среды могут есть важные изменения, которых нет в системе управления версиями?
-- Example of typical solution
-- drop existing data
TRUNCATE myReferenceData
-- insert all data to produce specific state
INSERT INTO myReferenceData (Col1, Col2) Values ("one", 1)
INSERT INTO myReferenceData (Col1, Col2) Values ("two", 2)
-- etc