Compalex: Сравнение Двух Схем Базы Данных

Допустим, у вас есть рабочая и тестовая базы данных.

В какой-то момент разработчик внес изменения в тестовую базу, но забыл внести эти изменения в боевую.

Если это часто используемая таблица, то ситуация становится очевидной очень быстро, так как в логах появятся ошибки SQL-запросов и вам начнет звонить начальник с упреками «что @#$%».

Но иногда изменения затрагивают редко используемые таблицы, либо изменения не совсем очевидны на первый взгляд (например, кто-то изменил длину поля VARCHAR и у вас стали обрезаться строки, или кто-то добавил индекс, из-за чего запросы по тестовые базы выполняются на порядок быстрее).

Другой вариант - вы обновили ПО и у вас все перестало работать.

Куча непонятных ошибок из ниоткуда, приложение врет, пользователи недовольны.

В таких случаях может быть очень полезно посмотреть, чем различаются базы, и сделать соответствующие выводы.



Compalex: сравнение двух схем базы данных

Что приходит на ум? Дампируем структуру одной базы, потом другой.

Мы запускаем утилиту diff, и она показывает строки, которые различаются в двух дампах.

Для небольших изменений это может сработать.

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



Compalex: сравнение двух схем базы данных

Столкнувшись с вышеперечисленными проблемами, я написал небольшой PHP-скрипт ( https://github.com/dlevsha/compalex ), который работает с MySQL, MS SQL Server, PostgreSQL (планируется поддержка Oracle) и позволяет сравнивать две базы данных.

Скрипт не влечет за собой никаких зависимостей, что упрощает его установку и поддержку.

Для работы необходимо установить сам скрипт (предполагается, что у вас уже установлен php > =5.4 с поддержкой PDO, если нет, то в debian/ubuntu это делается одной строкой установка aptitude php5 , единственное, нужно убедиться, что версия php не ниже 5.4)

  
  
  
  
   

$ git clone https://github.com/dlevsha/compalex.git $ cd compalex

Открытие .

среда в папке проекта и отредактируйте параметры.



[ Main settings ] ; Possible DATABASE_DRIVER: 'mysql', 'pgsql', 'dblib'.

; Please use 'dblib' for Microsoft SQL Server DATABASE_DRIVER = mysql DATABASE_ENCODING = utf8 SAMPLE_DATA_LENGTH = 100 [ Primary connection params ] DATABASE_HOST = localhost DATABASE_NAME = compalex_dev DATABASE_USER = login DATABASE_PASSWORD = password DATABASE_DESCRIPTION = Developer database [ Secondary connection params ] DATABASE_HOST_SECONDARY = localhost DATABASE_NAME_SECONDARY = compalex_prod DATABASE_USER_SECONDARY = login DATABASE_PASSWORD_SECONDARY = password DATABASE_DESCRIPTION_SECONDARY = Production database

Выбор водителя БАЗА ДАННЫХ_ДРАЙВЕР из поддерживаемых «mysql», «pgsql», «dblib» Редактируем настройки, отвечающие за подключение к первой и второй базе соответственно.



DATABASE_HOST = localhost DATABASE_NAME = compalex_dev DATABASE_USER = root DATABASE_PASSWORD = password

Чтобы не путаться, какая база данных какая, задаем им имена в параметрах БАЗА ДАННЫХ_ОПИСАНИЕ После этого находясь в папке проекта запустите веб-сервер

$ php -S localhost:8000

и откройте его в браузере http://localhost:8000/ Диаграмма сравнения, состоящая из двух столбцов, должна отображаться в соответствии с заданными параметрами базы данных.



Compalex: сравнение двух схем базы данных

Назначение элементов показано на схеме.

Иногда нет возможности организовать прямое локальное подключение к базам данных и изменения нужно просматривать прямо на сервере из консоли.

Для этих целей рекомендую использовать консольный браузер электронные ссылки , который поддерживает форматирование HTML и цвета в разметке.

Вам необходимо установить скрипт на сервер, запустить веб-сервер (как описано выше) и запустить:

$ elinks http://localhost:8000

Получаем что-то вроде этого:

Compalex: сравнение двух схем базы данных

Более подробная информация на сайте (на английском языке) http://compalex.net/ .

Здесь вы можете попробовать, как все это работает http://demo.compalex.net/ .

Теги: #MySQL #postgresql #Microsoft SQL Server #oracle #базы данных #разработка баз данных #MySQL #oracle #postgresql

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.