Статьи

Управление версиями базы данных с помощью DBV

Рекомендуется всегда использовать систему контроля версий в любом из ваших проектов. Будь то побочный проект, в котором вы являетесь единственным разработчиком, или командный проект, в котором пять или более человек работают над ним вместе. Но идея поместить вашу базу данных в систему контроля версий не так широко распространена. Часто мы принимаем базу данных как должное.

Но, как и исходные файлы в нашем проекте, база данных тоже постоянно меняется. Вот почему нам также нужен способ отслеживать изменения, которые мы сделали, и легко делиться ими с другими членами нашей команды.

В этой статье мы рассмотрим 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.

Это даст вам интерфейс, подобный следующему:

dbv

На приведенном выше снимке экрана вы увидите таблицы, которые в настоящее время находятся в базе данных, которую вы указали в config.php ранее. Также есть поле In DB котором отображается, находится ли конкретная таблица в базе данных, и поле On disk которое показывает, сохранена ли текущая таблица в вашей файловой системе. Обладая этой информацией, вы в значительной степени знаете, есть ли у вас последняя копия базы данных.

При работе с dbv важно помнить, что любые изменения, которые вы вносите в локальную копию своей базы данных, должны иметь локальную копию, которую вы можете зафиксировать в вашем контроле исходного кода.

Это означает, что если вы создаете новую таблицу в базе данных, вы должны экспортировать ее на диск. Все таблицы, которые экспортируются на диск, сохраняются в каталоге data/schema вашей установки dbv. Из приведенного ниже снимка экрана видно, что в настоящее время в нашей файловой системе tbl_leadinfo таблицы tbl_leadinfo :

disk copy

После экспорта вновь созданной таблицы на диск вы должны передать ее в систему управления версиями:

 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 ).
Ваш товарищ по команде, вероятно, будет иметь экран, подобный следующему:

dbv team mate

В этот момент он может просто 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 revisions

Вывод

DBV — это хороший способ легко управлять вашими требованиями к управлению версиями базы данных. Это позволяет вам и вашей команде легко отслеживать изменения, внесенные в вашу базу данных. Это также позволяет легко делиться вашими изменениями с остальной частью вашей команды с помощью Git. Это гарантирует, что у всех всегда есть последняя копия базы данных.

В этой статье мы рассмотрели использование DBV с Git, но вы можете в значительной степени использовать любую систему управления версиями по вашему выбору. Обратная связь? Пожалуйста, оставьте это в комментариях ниже!