Рекомендуется всегда использовать систему контроля версий в любом из ваших проектов. Будь то побочный проект, в котором вы являетесь единственным разработчиком, или командный проект, в котором пять или более человек работают над ним вместе. Но идея поместить вашу базу данных в систему контроля версий не так широко распространена. Часто мы принимаем базу данных как должное.
Но, как и исходные файлы в нашем проекте, база данных тоже постоянно меняется. Вот почему нам также нужен способ отслеживать изменения, которые мы сделали, и легко делиться ими с другими членами нашей команды.
В этой статье мы рассмотрим DBV , систему управления версиями баз данных, написанную на PHP для баз данных MySQL, поэтому вам необходимо установить PHP и MySQL, прежде чем использовать ее, а также веб-сервер, такой как Apache или Nginx.
Важное замечание об этом программном обеспечении заключается в том, что оно не является автономной системой контроля версий баз данных, поскольку для синхронизации изменений с вашей командой требуется система контроля версий, такая как Git, Mercurial или SVN.
Установка DBV
Чтобы начать работать с DBV, сначала вы должны загрузить установщик с их сайта , распаковать его в каталог вашего проекта, а затем переименовать получившуюся папку в dbv
. Это даст вам следующий путь:
my_project / dbv
Альтернативный подход — просто клонирование из Github.
Конфигурация DBV
Вы можете начать настройку параметров для DBV, создав копию файла config.php.sample
и переименовав его в config.php
.
Самые важные вещи для обновления здесь — это первые два раздела. Просто замените значения my_username
, my_password
, my_database
на значения в вашей текущей конфигурации базы данных:
<? php /** * Your database authentication information goes here * @see http://dbv.vizuina.com/documentation/ */ define ( 'DB_HOST' , 'localhost' ); define ( 'DB_PORT' , 3306 ); define ( 'DB_USERNAME' , 'my_username' ); define ( 'DB_PASSWORD' , 'my_password' ); define ( 'DB_NAME' , 'my_database' );
/** * Authentication data for access to DBV itself * If you leave any of the two constants below blank, authentication will be disabled * @see http://dbv.vizuina.com/documentation/#optional-settings */ define ( 'DBV_USERNAME' , 'my_username' ); define ( 'DBV_PASSWORD' , 'my_password' );
?>
Первый раздел в конфигурационном файле выше посвящен деталям базы данных MySQL на вашем компьютере.
Второй раздел — это данные для входа в систему самого dbv.
Затем откройте файл .gitignore
. По умолчанию он содержит следующее:
config . php . buildpath . project . settings
Это файлы, которые будут игнорироваться Git. Но если вы знаете, что у вас та же информация о базе данных (пользователь, пароль, имя базы данных), что и у ваших товарищей по команде, вы можете удалить config.php
из файла .gitignore
. Если нет, то им придется создать свой собственный файл конфигурации и исключить его из системы контроля версий.
Затем вы также должны добавить файл data/meta/revision
в .gitignore
поскольку именно там dbv помещает информацию о вашей локальной копии базы данных. Это может отличаться для ваших товарищей по команде, поэтому его нужно исключить из системы контроля версий.
Закончив настройку, вы можете добавить dbv в систему управления версиями:
git add dbv git commit - m "add dbv into project"
А затем отправьте его в ваш центральный репозиторий, чтобы другие члены вашей команды извлекли:
git push
Какие изменения отслеживать?
Прежде чем мы перейдем к использованию DBV. Я хотел бы немного коснуться того, какие изменения отслеживать. В мире баз данных практически любые изменения могут быть внесены в систему контроля версий. Это включает в себя следующее:
- новые столы
- переименованные таблицы
- упал таблицы
- новые поля
- обновленное поле
- удаленное поле
- новая строка таблицы (данные таблицы по умолчанию)
- обновлена строка таблицы
- удаленная строка таблицы
- взгляды
- хранимые процедуры
- триггеры
- функции (пользовательские функции)
DBV Workflow
Вы можете запустить dbv из вашего браузера, открыв следующий URL:
http : //localhost/your_project/dbv
Или, если вы определили виртуальный хост, перейдя по его URL.
Это даст вам интерфейс, подобный следующему:
На приведенном выше снимке экрана вы увидите таблицы, которые в настоящее время находятся в базе данных, которую вы указали в config.php
ранее. Также есть поле In DB
котором отображается, находится ли конкретная таблица в базе данных, и поле On disk
которое показывает, сохранена ли текущая таблица в вашей файловой системе. Обладая этой информацией, вы в значительной степени знаете, есть ли у вас последняя копия базы данных.
При работе с dbv важно помнить, что любые изменения, которые вы вносите в локальную копию своей базы данных, должны иметь локальную копию, которую вы можете зафиксировать в вашем контроле исходного кода.
Это означает, что если вы создаете новую таблицу в базе данных, вы должны экспортировать ее на диск. Все таблицы, которые экспортируются на диск, сохраняются в каталоге data/schema
вашей установки dbv. Из приведенного ниже снимка экрана видно, что в настоящее время в нашей файловой системе tbl_leadinfo
таблицы tbl_leadinfo
:
После экспорта вновь созданной таблицы на диск вы должны передать ее в систему управления версиями:
git add data / schema / tbl_tasks . sql git commit - m "add tbl_task table"
Затем вы можете просто отправить его в ваш центральный репозиторий:
git push
На этом этапе вы можете просто сказать своим товарищам по команде, что вы создали новую таблицу в базе данных и уже перенесли ее в центральное хранилище. Теперь они могут просто pull
его в свою локальную копию.
git pull
Затем скажите своему партнеру посетить страницу dbv ( http://localhost/your_project/dbv
).
Ваш товарищ по команде, вероятно, будет иметь экран, подобный следующему:
В этот момент он может просто tbl_tasks
галочку рядом с таблицей tbl_tasks
и нажать кнопку «Push to database». Это создаст таблицу tbl_tasks
в базе данных.
И это рабочий процесс для работы с DBV. Довольно просто, не правда ли? Но что, если вам нужно внести изменения в текущую схему базы данных? Возможно, вы пропустили поле или забыли добавить его на конкретный стол, прежде чем раздать его своей команде. Вот тут и приходят ревизии.
Ревизии
Если вы похожи на меня и пытались обновить схему (добавили новое поле, удалили поле, обновили тип данных и т. Д.) Для конкретной таблицы, вы могли заметить, что dbv не знает об этом по умолчанию. Для этих изменений вам нужно создать файл ревизии. Вы можете сделать это, создав новую папку в каталоге data/revisions
в вашей установке dbv. Соглашение для именования папки использует число. Таким образом, в первый раз, когда вы делаете ревизию, имя папки будет 1
а затем в следующий раз будет 2
и так далее. Обратите внимание, что исправления — это изменения, которые можно применить ко всей базе данных. Это означает, что у вас есть свобода изменять структуру более чем одной таблицы, но рекомендуется делать изменения только в одной таблице и вносить в нее изменения. Это для вас и вашей команды, чтобы легко управлять изменениями и иметь смысл позже. Единственное исключение из этой практики — когда изменения связаны друг с другом. В этом случае имеет смысл объединить эти изменения в одну ревизию.
Давайте попробуем создать новое поле внутри таблицы tbl_users
и назовите его email
:
ALTER TABLE `tbl_users` ADD `email` varchar ( 160 ) COLLATE 'latin1_swedish_ci' NOT NULL
Затем создайте новый файл в каталоге data/revisions/1
в вашей установке dbv и поместите запрос, который вы только что выполнили, в качестве содержимого. Назовите файл tbl_users.sql
. Соглашение здесь использует имя измененной таблицы в качестве имени для файла ревизии.
Если вы вносите изменения в несколько таблиц, создайте отдельный файл для каждой таблицы.
После этого вы можете зафиксировать новый файл в вашей системе контроля версий:
git add data / revisions / 1 / tbl_users . sql git commit - m "add email field to tbl_users"
А затем отправьте его в ваш центральный репозиторий:
git push
Опять же, вы можете сообщить своим товарищам по команде о конкретном изменении. Связь является ключевым моментом при внесении изменений в базу данных. Вы хотите убедиться, что все в вашей команде на той же странице, что и вы.
Теперь, если они обращаются к dbv из браузера, они могут видеть ревизию. Все, что им нужно сделать сейчас, это поставить флажок рядом с ревизией, а затем нажать кнопку «Выполнить выбранные ревизии». Это передаст ваши изменения в их локальную копию базы данных:
Вывод
DBV — это хороший способ легко управлять вашими требованиями к управлению версиями базы данных. Это позволяет вам и вашей команде легко отслеживать изменения, внесенные в вашу базу данных. Это также позволяет легко делиться вашими изменениями с остальной частью вашей команды с помощью Git. Это гарантирует, что у всех всегда есть последняя копия базы данных.
В этой статье мы рассмотрели использование DBV с Git, но вы можете в значительной степени использовать любую систему управления версиями по вашему выбору. Обратная связь? Пожалуйста, оставьте это в комментариях ниже!