Skip to content

Зачем dbschemix

dbschemix/migrator — инструмент для управления изменениями схемы и данных базы данных. Вы описываете миграции обычными SQL-файлами, а Migrator следит за тем, какие из них уже применены, и выполняет только новые. Библиотека не зависит от фреймворка и подключается в любой PHP-проект через Composer.

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

Принципы

Чистый SQL

Миграции пишутся на SQL — без DSL, без Active Record, без Query Builder. Файл содержит обычный SQL для целевой СУБД, и именно этот SQL выполняется в базе данных. Нет промежуточного слоя, который мог бы сгенерировать не то, что вы написали.

Фреймворк-агностик

Migrator не требует Laravel, Symfony, Yii или любого другого фреймворка. Он подключается в любой PHP-проект, где есть Composer. Если проект уже использует встроенные миграции фреймворка, dbschemix может работать рядом с ними — для отдельной базы или для баз данных, которые фреймворк не охватывает.

Версионирование батчей

Миграции, применённые одним прогоном migrate:up, получают общий номер версии. Этот номер отображается в выводе как vers: <число>. Откатить всю партию можно одной командой migrate:down --latest-version — без необходимости анализировать историю вручную.

Fixtures и repeatable-миграции

Фикстуры — это SQL-файлы с тестовыми или начальными данными. Они хранятся в отдельном каталоге (<db-name>-fixture) и применяются командой migrate:fixture, а не migrate:up. Повторяемые миграции хранятся в каталоге <db-name>-repeatable и выполняются заново при каждом изменении содержимого файла — удобно для views, функций и других объектов, которые нужно пересоздавать.

Поддерживаемые СУБД

Из коробки доступны PostgreSQL, MySQL и SQLite через пакет dbschemix/pdo. Если вам нужна другая СУБД или нестандартный способ подключения, реализуйте интерфейс DriverInterface и передайте свой драйвер в конструктор Migration. Подробнее — в разделе Конфигурация.

Когда подходит и когда нет

dbschemix подходит для проектов, где SQL — основной язык работы с базой данных. Если команда уже привыкла писать и ревьюить SQL-файлы, инструмент органично встраивается в существующий процесс.

Инструмент не подходит, если вам нужен генератор миграций на основе ORM-моделей. dbschemix не анализирует структуру ваших классов и не создаёт SQL автоматически — только выполняет то, что вы написали вручную.