Мы, программисты, постоянно растем профессионально. Растем мы, растут и наши проекты, растут размеры Баз Данных. Чем больше проект, тем объемнее схема базы данных. Чем больше схема БД — тем труднее отслеживать ее изменения. ПРОБЛЕМКА НАРИСОВАЛАСЬ!

Несколько месяцев назад эта проблема начала мне мешать, и я стал пытать google на предмет mysql php migration, но ничего, что полностью удовлетворяло бы моим потребностям я так и не нашел. Попался интересный проект на google code, но он только создавал пустые PHP-классы с методами migrateUp и migrateDown. Мне такой подход показался интересным, но писать SQL для миграций вручную по моему не правильно. Программа может сравнить две структуры БД? Может! Тогда пускай программа этим и занимается. Именно тогда и было положено начало проекту MMP.

Странно... Программисты из разных стран ведут серьёзные разработки уже очень давно, а деплой БД остается проблемой до сих пор.

Требования к инструменту миграции

  • Минимальный список зависимостей: PHP, MySQL
  • Читабельность кода, который будет создан при генерации класса миграции
  • Возможноть строить миграции именно по схеме БД, ни в коем случае не по конфиг файлу (как schema.yml в Doctrine)
  • Возможность произвольно менять схему базы, затем выстраивать абсолютно такую же схему в других установках приложения.

Итак, сегодня я хочу представить бета-версию проекта Mysql Migration with PHP. Скачать архив с исходным кодом MMP ( mmp.tar.gz — 213Кб ) .

Что умеет Mysql Migration with PHP?

  • создавать инициализационную версию схемы
  • инициализировать БД с нуля
  • создавать новые миграции
  • обновляться до определенной даты (как вниз, так и вверх)
  • показывать список существующих версий (миграций)
  • сама генерит SQL-код внутри PHP-классов

Бета версия вполне работоспособна, и проверена мной в паре небольших проектов

bash
  1.  
  2. max@max:~/src/mmp$ ./migration.php
  3.  
  4. MySQL Migration with PHP
  5. ---------------------------------------------------------------------
  6. help: display this help and exit
  7. schema: create schema for initial migration/installation
  8. init: load initial schema (install)
  9. create: create new migration
  10. list: list available migrations and mark current version
  11. migrate: migrate to specified time
  12.  
  13. In migrate comand you can use strtotime format
  14. Examples:
  15. *********************************************************************
  16. ./migrate.php migrate yestarday
  17. ./migrate.php migrate -2 hour
  18. ./migrate.php migrate +2 month
  19. ./migrate.php migrate 20 September 2001
  20. ./migrate.php migrate
  21. ********************************************************************
  22. Last example will update your database to last version
  23.  
  24.  
  25. ---------------------------------------------------------------------
  26. Licenced under: GPL v3
  27. Author: Maxim Antonov <max.antonoff@gmail.com>
  28.  

Все настройки храняться в config.ini в таком виде:

ini
  1.  
  2. max@max:~/src/mmp$ cat config.ini
  3. host=localhost
  4. user=max
  5. password=
  6. db=mmptest
  7. savedir=db
  8. verbose=On
  9. versiontable=dbversion
  10.  
  11. max@max:~/src/mmp$
  12.  

Системные требования: PHP-5.3 с поддержкой mysqli. Поясню неочевидные настройки:

  • savedir - папка, где хранить миграции
  • verbose - выдавать ли сообщения в STDOUT
  • versiontable - таблица, которая будет создана в БД для хранения номеров версий.

P.S. Обращаться с вопросами и предложениями можно по адресу max dot antonoff at gmail dot com.

Комменты

Добавить коммент