Как Вы управляете изменениями базы данных на проекте среднего размера с ответвлениями? [закрытый]

Начиная с MySQL 8, вы можете использовать оконные функции для эмуляции семантики [f2], фильтруя по [f3]. Например:

 int k= (int)sqrt((double)(((a.x-b.x)*(a.x-b.x))+((a.y-b.y)*(a.y-b.y))));

Обратите внимание, что при более внимательном прочтении вашего вопроса это не делает именно то, что вам нужно, но делает именно то, что T-SQL может сделать с помощью предложения [f4] .

11
задан Greg 1 October 2008 в 02:49
поделиться

3 ответа

Если Ваша база данных отображается приятно на ряд объектов доступа к данным, рассмотрите использование 'миграций'. Идея состоит в том, чтобы сохранить Вашу модель данных как код приложения с шагами для того, чтобы двинуться вперед и назад через каждую версию базы данных.

Я полагаю, что направляющие сделали это сначала.

Java имеет по крайней мере один проект.

И вот библиотека миграции.NET.

Для изменения версий Вы запускаете простой скрипт, который ступает через весь из или вниз версии для получения Вас к версии, которую Вы хотите. Красота его, Вы проверяете свои миграции в том же исходном репозитории как Ваш код приложения - это - все в одном месте.

Возможно, другие могут предложить другие библиотеки миграции.

Удачи.

Править: См. также https://stackoverflow.com/questions/313/net-migrations-engine и сводка новостей инструмента миграции базы данных.NET (из вышеупомянутого сообщения).

2
ответ дан 3 December 2019 в 08:06
поделиться

http://odetocode.com/Blogs/scott/archive/2008/01/30/11702.aspx

Вышеупомянутый блог принес нам к нашей текущей системе управления версиями базы данных. Проще говоря, никакие изменения DB не внесены без сценария обновления, и все сценарии обновления находятся в нашем репозитории управления исходным кодом.

Мы только управляем изменениями схемы, но можно также способный/желать рассмотреть дампы хранения доступных данных в управлении версиями также; создание таких файлов является довольно тривиальным осуществлением с помощью mysqldump.

Наше решение отличается от решения, представленного в блоге одним ключевым способом: это не автоматизировано. Мы должны вручить, применяют обновления базы данных, и т.д. Хотя это может быть немного трудоемким, это отложило часть усилия, которого потребует полностью автоматизированная система. Одна вещь, которую мы действительно автоматизировали однако, было отслеживание версии дб в программном обеспечении: это было довольно просто, и это гарантирует, что наше программное обеспечение знает о базе данных, против которой это работает и ТОЛЬКО выполнит, если это знает схему, это работает с.

Самая твердая часть нашего решения была то, как объединить обновления от наших ответвлений в нашу соединительную линию. Мы провели некоторое время для разработки рабочего процесса для обращения к возможности двух разработчиков, пытающихся объединить ответвления с обновлениями DB одновременно и как обработать ее. Мы в конечном счете обосновались на блокировке файла в управлении версиями (рассматриваемый файл для нас является на самом деле версией программного обеспечения отображения таблицы к версии дб, которая помогает в нашей ручной стратегии управления), во многом как Вы был бы критический раздел потока, и разработчик, который получает блокировку, идет об их обновлении соединительной линии. По завершении другой разработчик смог бы заблокировать, и это - их обязанность делать любые изменения необходимыми для их сценариев, чтобы гарантировать, что избегают ожидаемых коллизий версии и другого плохого амулета.

8
ответ дан 3 December 2019 в 08:06
поделиться

Мы сохраняем все наши сценарии базы данных (данные и schema/ddl) в управлении версиями. Мы также сохраняем сводный каталог изменений. Когда разработчик вносит изменение в файл схемы/DDL или добавляет сценарий, который изменяет данные в некотором роде, те файлы добавляются к каталогу, наряду с числом фиксации SVN.

Мы соединили маленькую утилиту, внутреннюю, который читает, каталог изменяет и создает большой сценарий обновления на основе содержания каталога путем захвата содержания от каждого пересмотра в каталоге и применения их. Понятие довольно подобно инструменту DBDeploy, которому я верю, первоначально прибыл из Thoughtworks, таким образом, Вы можете использовать его. Это, по крайней мере, даст Вам хорошее место для запуска, от которой точки можно настроить решение, более непосредственно подходящее потребностей.

Всего наилучшего

5
ответ дан 3 December 2019 в 08:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: