воскресенье, 9 августа 2009 г.

Идеальный package manager - 2

Удивительное дело, нормального opensource менеджера обновлений для БД в мире .Net похоже не существует.

Есть несколько библиотек, предоставляющих Ruby-style migrations, но это не совсем то, что мне нужно. Ближе всего к ожиданиям из готового сейчас RedGate SQLPackager, но он во-первых платный, во-вторых хочется поддержки именно жизненного цикла в духе AutoPatch.

По опыту, идеальный процесс должен выглядеть так

  • программисты работают с локальной или dev базой напрямую
  • перед началом тестирования при помощи инструмента типа SQLCompare строится дифференциальный sql скрипт между дев-базой и stage. При этом скрипт должен быть в "родном" для БД формате, чтобы не упереться случайно в недостатки фреймворка
  • этот скрипт фиксируется в репозитории и затем на основе всех скриптов обновления строится пакет для обновления БД
  • этот пакет разворачивается на требуемой базе, причем package manager должен предоставлять либо режим с ручным контролем (для боевой базы, чтобы не страшно было), либо автоматический режим (для всевозможного continious integration

Ссылки по теме

2 комментария:

Mike Chaliy комментирует...

Старый конешно пост, но реально это все потдерживает DbPro встроенный в студию.

Yury Skaletskiy комментирует...

Миш, может я давно DBPro не видел, но разве там есть

* версионность (чтобы в базе были версии модулей)
* многомодульность (чтобы допустим поставить два разных модуля в одну бд)
* интеграцию в дистрибутив?