Просто вопрос о рекомендациях по обновлению существующей базы данных. Предполагая, что будут все виды модификаций самих данных, структуры, отношений, дополнительных столбцов, исчезающих столбцов и тому подобного.
Моя проблема проста. Я работаю над проектом, который будет использовать SQL Server. Там нет проблем, так как я достаточно эксперта, чтобы справиться с этим Но этот проект будет обновлен позже, и мне нужно указать протокол, которому должен следовать механизм обновления. По сути, этот протокол необходимо соблюдать при создании сценариев обновления ...
Прямо сейчас у меня есть следующие простые шаги:
- Добавить новые столбцы в таблицы.
- Добавить ограничения для новых столбцов.
- Добавить новые таблицы.
- Отбросьте ограничения там, где это необходимо.
- Удалите столбцы, которые необходимо удалить.
- Удалите таблицы, которые необходимо удалить.
Почему-то этот список кажется неполным. Есть ли где-нибудь более расширенный список, описывающий правильные шаги, которые необходимо выполнить во время обновления?
Кроме того, всегда ли можно выполнить полное обновление в рамках одной транзакции базы данных (с SQL Server) или есть точки прерывания, которые необходимо включить в протокол, где одна транзакция должна завершиться, а другая начинается?
В то время как автоматизированные инструменты обеспечат хорошее автоматизированное решение, я все еще не могу их использовать. Команда разработчиков, работающая над этой системой, состоит из 4 разработчиков, каждый из которых имеет собственную базу данных в своей локальной системе. Каждый разработчик отслеживает свои собственные обновления структуры и отслеживает их, генерируя сценарии Upgrade и Downgrade для своих собственных изменений, как для структурных изменений, так и для изменений данных. Эти сценарии могут затем использоваться другими разработчиками для обновления своей собственной системы. Всякий раз, когда система будет выпущена, все эти сценарии объединяются в один большой сценарий.
Система не включает какие-либо хранимые процедуры или другие «специальные» функции. База данных - это просто хранилище данных с таблицами и связями между ними. Нет ролей, нет пользователей, нет хранимых процедур, нет триггеров, нет сложных типов данных ...
БД используется приложением, в котором пользователи работают с 9 до 5, поэтому отключение может быть легко выполнено, включая обновления для клиенты. Мы также добавляем номер версии в базу данных, и приложения будут проверять, связаны ли они с правильной версией базы данных.
Во время разработки все разработчики используют свой собственный экземпляр базы данных, который они могут полностью контролировать. Поскольку мы не те, кто использует приложение, мы стремимся разрабатывать для редакции Express, а не более дорогой. Если честно, мы не разрабатываем наше приложение для поддержки большого количества пользователей, но мы сообщим нашим пользователям, что, поскольку оно использует SQL Server, они могут установить систему на более крупную платформу SQL Server в соответствии со своими потребностями. Для этого им понадобится собственный DBA. У нас есть более мощный SQL Server, который мы также используем для нашего собственного веб-интерфейса, но этот сервер находится на специальном сервере данных, где он поддерживается для нас, а не для нас.
В проекте ранее использовался MS Access для хранения данных, и он предназначался для однопользовательской разработки, но, как оказалось, многие пользователи по-прежнему решили совместно использовать свои базы данных, и это показало, что сама модель данных достаточно надежна для пользовательские среды. Поэтому мы перешли на SQL Server для поддержки небольших офисов с 3 или более пользователями и крупной организацией, в которой одновременно будет 500 или более пользователей.
Поскольку нам необходимо сохранить стоимость программного обеспечения на низком уровне, у нас нет большого бюджета, чтобы тратить на дорогие инструменты или более дорогой сервер.