от
Каковы лучшие методы для отслеживания и/или автоматизации ДБ изменения схемы? Наша команда использует Subversion для контроля версий, и мы смогли автоматизировать некоторые наши задачи таким образом (нажимая накапливается на промежуточный сервер, развертывание проверенный код на рабочем сервере), но мы все еще делаем обновление баз вручную. Я хотел бы найти или создать решение, которое позволяет эффективно работать на разных серверах с различными средами, продолжая использовать Subversion в качестве бэкенда через которую код и обновления БД теснят к различным серверам. Многие популярные программные пакеты включают автоматическое обновление скриптов, которые регистрируют версия БД и применить необходимые изменения. Это лучший способ, чтобы сделать это в еще большем объеме (по нескольким проектам, а иногда и несколько сред и языков)? Если это так, существует ли там код, что упрощает процедуру или это лучше реализовать наше собственное решение? Кто-нибудь реализовал что-то подобное раньше и включил его в подрывной пост-коммит хуки, или это плохая идея? В то время как решение, которое поддерживает несколько платформ будет предпочтительнее, нам обязательно нужно поддерживать ОС Linux/Apache и СУБД MySQL/PHP в стек, как и большинство нашей работы на этой платформе.

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

21 Ответы

0 голосов
от
Каковы лучшие методы для отслеживания и/или автоматизации ДБ изменения схемы? Наша команда использует Subversion для контроля версий, и мы смогли автоматизировать некоторые наши задачи таким образом (нажимая накапливается на промежуточный сервер, развертывание проверенный код на рабочем сервере), но мы все еще делаем обновление баз вручную. Я хотел бы найти или создать решение, которое позволяет эффективно работать на разных серверах с различными средами, продолжая использовать Subversion в качестве бэкенда через которую код и обновления БД теснят к различным серверам. Многие популярные программные пакеты включают автоматическое обновление скриптов, которые регистрируют версия БД и применить необходимые изменения. Это лучший способ, чтобы сделать это в еще большем объеме (по нескольким проектам, а иногда и несколько сред и языков)? Если это так, существует ли там код, что упрощает процедуру или это лучше реализовать наше собственное решение? Кто-нибудь реализовал что-то подобное раньше и включил его в подрывной пост-коммит хуки, или это плохая идея? В то время как решение, которое поддерживает несколько платформ будет предпочтительнее, нам обязательно нужно поддерживать ОС Linux/Apache и СУБД MySQL/PHP в стек, как и большинство нашей работы на этой платформе.
0 голосов
от
В мире рельсов, есть понятие миграции, скрипты, в которой изменения в базу данных будут внесены в Рубине, а не в базе-специфический вкус на языке SQL. Ваш Миграционный кодекс Рубин заканчивает тем, что превращается в определении конкретной текущей базы данных; это делает переключение платформ баз данных очень легко. Для каждого изменения, которые вы вносите в базу данных, вы пишете новую миграцию. Миграция, как правило, имеют два метода: "метод" в котором применяются изменения и "вниз" способ, при котором изменения будут отменены. Одна команда приносит базы данных в актуальном состоянии, а также может быть использован для приведения базы данных к конкретной версии схемы. В рельсы, миграции сохраняются в отдельную директорию в каталог проекта и Вам возвращены в систему управления версиями как и любой другой проект. Это руководство Oracle на рельсы миграций достаточно хорошо покрывает миграций. Разработчики, использующие другие языки посмотрел на миграции и разработаны собственные языковые версии. Я знаю Ruckusing, системы миграции на PHP, который составляется после миграции рельсов'; это может быть то, что вы ищете.
0 голосов
от
Мы используем что-то похожее на bcwoord, чтобы сохранить наши схемы базы данных синхронизированы между 5 различных объектах (производства, постановка и несколько разработок установок), и резервное копирование, управление версиями, и он работает довольно хорошо. Я уточню немного: Для синхронизации структур баз данных, у нас есть один сценарий, update.php и количество файлов, пронумерованных от 1.в SQL, 2.по SQL, 3.SQL и др. Скрипт использует одну дополнительную таблицу для хранения текущей версии базы данных. Н. в. SQL-файлах изготавливаются вручную, чтобы перейти от версии (N-1) до версии N базы данных. Они могут быть использованы для добавления таблиц, добавление столбцов, перенос данных из старого в новый столбец формате затем удалить столбец, вставить "мастер" данные строки, такие как типы пользователей и т. д. В принципе, он может делать что угодно, и при правильной миграции данных скриптов вы никогда не потеряете данные. Скрипт обновления работает как это: Подключиться к базе данных. Сделать резервную копию текущей базе данных (потому что вещи пойдут неправильно) [туздышпр]. Создать таблицу учета (так называемый _meta), если он не существует. Читать текущая версия от _meta стол. Предположим 0, если не найден. Для всех .SQL файлы пронумерованы выше, чем вариант, выполнить их в порядок Если один из файлов выдается ошибка: откат к резервной копии В противном случае, обновите версию в таблице Бухгалтерский учет высокий .файл SQL выполняется. Все идет в системе контроля исходного кода, и каждая установка имеет скрипт для обновления до последней версии с помощью одного скрипта (вызов update.php при правильном базы данных паролей и т. д.). Мы с SVN обновление тестовых и производственных сред с помощью скрипта, который автоматически вызывает скрипт обновления базы данных, так что обновления кода с необходимыми обновлениями базы данных. Мы также можем использовать тот же скрипт, чтобы воссоздать всю базу данных с нуля; мы просто удалить и повторно создать базу данных, затем запустить скрипт, который будет полностью заполнять базы данных. Мы также можем использовать скрипт для заполнения пустой базы данных для автоматизированного тестирования. Прошло всего несколько часов, чтобы установить эту систему, это концептуально простой и каждый получает нумерации версий схему, и она была бесценна для способность двигаться вперед и развивается на базе разработки, без необходимости подключения вручную или выполнить изменения во всех базах данных. Остерегайтесь, хотя вставки запросов от phpmyadmin! Эти сгенерированные запросы, как правило, включает имя базы данных, которое вы наверняка не хотите, так как это нарушит ваши скрипты! Что-то как создать таблицу
mydb
.
newtable
(...) будет выполнена, если в базе данных системы не называется базы данных mydb. Мы создали предварительно комментарий SVN-Хук, который будет запрещать .SQL-файлы, содержащие
mydb
строки, - верный признак, что кто-то скопировать/вставить с помощью phpMyAdmin без надлежащей проверки.
0 голосов
от
Моя команда скрипты все изменения в базе данных, и фиксирует эти скрипты в SVN, а также с каждым выпуском приложения. Это позволяет постепенные изменения базы данных, без потери данных. Чтобы перейти от одного выпуска к другому, нужно просто запустить набор скриптов меняются, а база данных является актуальной, и вы сохранили все ваши данные. Это может не быть самый простой способ, но это, безусловно, является эффективным.
0 голосов
от
Проблема здесь действительно делает его легким для разработчиков, чтобы сценарий собственных локальных изменений в системе контроля исходного кода, чтобы поделиться с командой. Я столкнулась с этой проблемой на протяжении многих лет, и был вдохновлен функциональность Visual Studio для специалистов по базам данных. Если вы хотите получить инструмент с открытым исходным кодом с теми же функциями, попробуйте это: http://dbsourcetools.codeplex.com/ Получайте удовольствие, - Нейтан.
0 голосов
от
Если вы все еще ищете решения : мы предлагаем инструмент под названием neXtep дизайнер. Это среда разработки базы данных, с которой вы можете положить всю вашу базу данных в системе управления версиями. Вы работаете на версии централизованном хранилище, где все изменения можно отследить. Когда вы должны выпустить обновление, вы можете зафиксировать свои компоненты и продукт автоматически сгенерировать скрипт обновления SQL от предыдущей версии. Конечно, вы можете создать этот SQL от 2-х любых версий. Тогда у вас есть много вариантов : вы можете взять эти скрипты и положить их в свой СВН С код приложения так, что оно будет развернуто на ваш существующий механизм. Другой вариант-использование механизма оказания neXtep : скрипты экспортируется в нечто под названием "комплексные поставки" (сценарии SQL XML-дескрипторе), и установщик могу понять этот пакет и развернуть его на целевом сервере при обеспечении strcutural последовательности, проверки зависимостей, Регистрация установленной у вас версии, и т. д. Продукт GPL и основана на Eclipse, так что он работает на Linux, Mac и Windows. Она также поддержку Oracle, MySQL и PostgreSQL на данный момент (поддержка DB2-это по пути). Посмотрите на вики, где вы найдете более подробную информацию : http://www.nextep-softwares.com/wiki
0 голосов
от
Дамп схемы в файл и добавить его в систему управления версиями. Тогда простой дифф покажет вам, что изменилось.
0 голосов
от
Скотт Амблер производит большую серию статей (и в соавторстве) на рефакторинг базы данных, с идеей, что вы должны практически применять принципы TDD и практики для поддержания вашей схемы. Вы создали серию структура и подразделения семя данных тестов для базы данных. Затем, прежде чем вы что-либо изменить, нужно изменить/написать тесты, чтобы отразить это изменение. Мы делали это на некоторое время теперь, и это, кажется, работает. Мы написали код для генерации основных столбце имя и проверяет тип данных в блоке тестирования. Мы можем повторно запустить эти тесты в любое время, чтобы убедиться, что база данных в версию из SVN играм прямую дБ приложение на самом деле работает. Как выяснилось, разработчики также иногда поиграться в песочнице базу и пренебрегать, чтобы обновить файл схемы в SVN. Затем код зависит от изменения БД, которые не были возвращены. Такого рода ошибка может быть невыносимо трудно придавить, но набор тестов будет забрать его сразу. Это особенно приятно, если он у вас встроен в большую непрерывного интеграционного плана.
0 голосов
от
К. Скотт Аллен приличную статью или два о версионности схем, которые используются добавочные скрипты обновления/концепции, на которые ссылается в другие ответы здесь миграций; см. http://odetocode.com/Blogs/scott/archive/2008/01/31/11710.aspx.
0 голосов
от
Это довольно низкий тек, и может быть лучшее решение, но вы могли просто хранить ваши схемы в SQL-скрипт, который можно запустить для создания базы данных. Я думаю, вы можете выполнить команду, чтобы создать этот скрипт, но я не знаю команды, к сожалению. Затем сохраните скрипт в системе контроля исходного кода вместе с кодом, который работает на нем. Когда нужно изменить схему вместе с кодом, скрипт может быть проверено вместе с кодом, который требуется изменить схему. Затем, дифференциалы на скрипт покажет изменения на изменения схемы. С помощью этого скрипта, вы могли интегрировать его с Д. Банкрофт или какой-то скрипт для сборки, так что кажется, он может вписаться в ваш уже автоматизированных процессов.
...