Разработка АИС - Разработка автоматизированной информационной системы для устранения различий в структурах баз данных разработчиков, при работе над общим проектом с использованием системы контроля версий

Алгоритм работы.

В результате работы АИС генерируются три xml документа - два со структурой сравниваемых баз данных и один с результатами сравнения. В зависимости от переданных параметров система АИС может зафиксировать текущее состояния БД, показать, что изменилось с момента последней фиксации, сгенерировать запрос для унификации БД и выполнить его. Так же формируется история изменений структуры БД в виде отдельных changeset-файлов, хранящихся также в репозитории СКВ.

Для создания xml файла со структурой БД необходимо иметь доступ к чтению служебной базы данных MySQL information_schema. Название базы и файл, в который будет записана структура, передаются в качестве параметров при вызове qdb create.

Алгоритм работы АИС можно разделить на несколько частей:

Ѕ при внесении изменений в текущий проект;

Ѕ при скачивании изменений с сервера и объединении проекта.

Внутреннее устройство АИС.

АИС состоит из нескольких частей:

    А) Команды запуска:
      - qdb. bat; - qdb. sh; - start. php.
    Б) Используемые команды:
      - qdb init; - qdb create; - qdb status; - qdb run; - qdb commit; - qdb update.
    В) Используемые классы:
      - qcreatedatabase; - qdatabase; - qchangeset; - qshow; - qbuild.
    Г) Файлы и папки со структурой БД и историей ее изменений:
      - database. xml; - databaseOld. xml; - databaseLastRevision. xml; - папка changesets; - done_changesets. txt; - файлы истории изменений вида changeset. date. username. time. xml

Команды qdb. bat и qdb. sh выполняют одинаковую функцию -- получают параметры, передаваемые пользователем, и перенаправляют их в файл start. php. Разница в написании этих двух файлов заключается в том, что "qdb. bat" запускается в ОС Windows, а "qdb. sh" -- в Unix системах. Т. к. при установке АИС в переменную окружения "PATH" добавляется путь к папке с дистрибутивом "qdb", то при работе с АИС указывать расширение файлов необязательно.

Файл start. php обрабатывает получаемые параметры и, в случае корректного вызова команды, передает управление в соответствующий файл. В случае, когда вызов команды производится с ошибкой (Рис. 12), пользователю предлагается ознакомиться с правилом вызова команд (Табл. 2).

пример вывода сообщений пользователю

Рис. 12 -- Пример вывода сообщений пользователю

Таблица 2. Возможные ключи для вызова qdb команд при работе с АИС

Init

Используется для инициализации проекта.

Create

Создает исходный вариант структуры БД.

Status

Показывает текущее различие между xml документом со структурой БД и физической структурой БД.

Run

Если есть различия, то генерирует DDL запрос к БД и выполняет его.

Commit

Фиксирует проделанные изменения и добавляет файлы под контроль СКВ.

Update

При скачивании изменений с сервера автоматически определяет разницу между структурами БД сервера и ПК разработчика.

Класс qcraetedatabase используется для создания xml структуры базы данных. Он содержит массив со значениями по умолчанию для всех типов полей MySQL. Подключение к базе данных и выборка данных производится с помощью класса "mysqli". Xml файл формируется с помощью расширения SimpleXML.

Класс qdatabase предназначен для преобразования xml файла со структурой БД в объект, получения массива объектов значений по умолчанию для различных типов полей, получения типа колонки по ее названию, получения используемых ключей и индексов.

Класс qchangeset предназначен для получения и записи результатов сравнения двух файлов xml со структурой БД итоговый xml файл.

Класс qshow преобразует xml файл с изменениями в объект и предоставляет пользователю результат сравнения в удобочитаемом виде.

Класс qbuild, также как и класс qshow, преобразует xml файл с изменениями в объект, но результат подготавливает в виде уже сформированного sql запроса, который необходимо выполнить для устранения различий в структуре БД.

Qdb init - используется для инициализации проекта. При выполнении данной команды, в директории запуска создается метка - папка ".qdb". В этой папке будут храниться файлы с данными (Рис. 13):

    - database. xml - содержит структуру используемой базы данных в xml формате. Предполагается что добавление (изменение, удаление) таблиц, полей, индексов будет проводиться не через программу HeidiSQL, а напрямую в данном файле; - databaseOld. xml - также содержит структуру используемой базы данных в xml формате и служит для получения различий между текущей версией БД и структурой БД до выполнения предыдущих DDL запросов; - databaseLastRevision. xml - аналогично двум вышеуказанным файлам содержит структуру БД в xml формате и, так же как и databaseOld. xml, служит для получения различий, но в отличие от databseOld. xml файл databaseLastRevision. xml содержит структуру БД, хранящуюся с предыдущей фиксации; - changeset4qdb_build. xml - содержит изменения, сделанные с предыдущей фиксации или с предыдущего выполнения запросов - папка changesets - в данной папке содержатся sql файлы истории изменений, которые автоматически формируются при фиксации работы; - done_changesets. txt - список выполненных DDL запросов на текущем компьютере из папки changesets.
пример работы команды qdb init

Рис. 13 -- Пример работы команды qdb init

Qdb create необходим при подготовке к работе АИС. Создаст файл database. xml, databaseOld. xml и databaseLastRevision. xml со структурой БД (Рис. 14). Данную команду можно также использовать в случае необходимости создания xml файла с другой базой данных. В этом случае необходимо запустить qdb create с соответствующими ключами (Табл. 3).

пример работы команды qdb create

Рис. 14 -- Пример работы команды qdb create

Таблица 3. Возможные ключи при вызове команды qdb create

Ключ

Значение по умолчанию

Описание

Пример

-db

Asupb2

Название базы данных, структуру которой необходимо сделать.

Qdb create - db db_name.

-f

Database. xml

Название файла, в который будет записана структура.

Qdb create - f file_name. xml

-h

Localhost

Название хоста для подключения к БД.

Qdb create - h ssh://user@asupb:22/

-u

Asupb

Имя пользователя для подключения к БД.

Qdb create - u user_name

-p

''

Пароль пользователя для подключения к БД.

Qdb create - p *****

Qdb status показывает текущие различия (Рис. 15) и формирует файл changeset4qdb-build. xml (Рис. 16). Qdb status также может запускаться с различными ключами (Табл. 4).

пример работы команды qdb status

Рис. 15 -- Пример работы команды qdb status

содержание файла changeset4qdb_build.xml после выполнения команды qdb status

Рис. 16 -- Содержание файла changeset4qdb_build. xml после выполнения команды qdb status

Таблица 4. Возможные ключи при вызове команды qdb status

Ключ

Значение по умолчанию

Описание

Пример

-f1

Database. xml

Название файла со структурой БД которую меняем.

Qdb status - f1 first_file. xml

-f2

DatabaseOld. xml

Название файла со структурой БД с которой сравниваем.

Qdb status - f2 second_file. xml

-f3

DatabaseLastRevision. xml

Название файла со структурой БД с которой сравниваем при вызове qdb status с ключом "-a".

Qdb status - f3 third_file. xml

-a

Bool false

Используется при сравнении файла с текущей структурой БД, и файла, сделанного при последней фиксации.

Qdb status - a

Qdb run формирует из файла changeset4qdb-build. xml DDL запрос и в зависимости от переданных ключей (Табл. 5) либо показывает в читабельном виде пользователю (Рис. 17), либо выполняет его в СУБД (Рис. 18).

пример работы команды qdb run с ключом

Рис. 17 -- Пример работы команды qdb run с ключом "show"

пример работы команды qdb run без ключей

Рис. 18 -- Пример работы команды qdb run без ключей

Таблица 5. Возможные ключи при вызове команды qdb run

Ключ

Значение по умолчанию

Описание

Пример

-show

Bool false

Формирует sql запрос для выполнения в БД и выводит пользователю на экран.

Qdb run - show

-f

Database. xml

Название файла, в который будет записана структура.

Qdb run - f file_name. xml

-h

Localhost

Название хоста для подключения к БД.

Qdb run - h ssh://user@asupb:22/

-u

Asupb

Имя пользователя для подключения к БД.

Qdb run - u user_name

-p

''

Пароль пользователя для подключения к БД.

Qdb run - p *****

Qdb commit вызывает команду qdb status с ключом "-а" (Табл. 4), если изменения в структуре есть, то вызывается команда qdb run (Табл. 5) . Далее фиксируются изменения о проделанной работе (Рис. 19): создается xml файл, название которого генерируется автоматически в формате "changeset. YYYY-mm-dd. username. hh-mm-ss. xml", в папке "changesets" (Рис. 20). При формировании файла, вызвав qdb commit с ключом "-m" (Табл. 6), можно ввести сообщение. Данный файл помечается как "выполнен" путем добавления названия в файл done_changesets. txt. В завершении, измененный файл database. xml и созданный файл changeset добавляются под контроль СКВ с помощью команд Mercurial (Рис. 21).

пример работы программы qdb commit

Рис. 19 -- Пример работы программы qdb commit

Рис. 20 -- Пример содержимого сгенерированного changeset - файла

пример добавления файла со структурой бд и сохраненным changeset - файлом под контроль скв

Рис. 21 -- Пример добавления файла со структурой БД и сохраненным changeset - файлом под контроль СКВ

Таблица 6. Возможные ключи при вызове команды qdb commit

Ключ

Значение по умолчанию

Описание

Пример

-m

Bool false

Позволяет ввести примечание к формируемому changeset файлу

Qdb commit - m "Вводимое сообщение"

-h

Localhost

Название хоста для подключения к БД.

Qdb commit - h ssh://user@asupb:22/

-u

Asupb

Имя пользователя для подключения к БД.

Qdb commit - u user_name

-p

''

Пароль пользователя для подключения к БД.

Qdb commit - p *****

Qdb update автоматически запускается после скачивания изменений с сервера, сравнивает названия файлов в папке changesets и названия уже выполненных, в файле done_changesets. txt. Если находятся различия, то запускается команда qdb run с ключом "-f 'название файла'" (Табл. 5). Запуск qdb update также возможен с различными ключами (Табл. 7).

Таблица 7. Возможные ключи при вызове команды qdb update

Ключ

Значение по умолчанию

Описание

Пример

-h

Localhost

Название хоста для подключения к БД.

Qdb commit - h ssh://user@asupb:22/

-u

Asupb

Имя пользователя для подключения к БД.

Qdb commit - u user_name

-p

''

Пароль пользователя для подключения к БД.

Qdb commit - p *****

Мероприятия по улучшению разрабатываемого ПО.

В качестве мероприятий по улучшению разработанной АИС можно указать следующие:

Ѕ разработать шаблон по созданию CREATE кода структуры БД для СУБД MSSQL, PostgreSQL и ORACLE;

Ѕ расширить функционал АИС возможностью хранения информации в xml файлах;

Ѕ для улучшения внешнего вида при установке использовать установщик.

Похожие статьи




Разработка АИС - Разработка автоматизированной информационной системы для устранения различий в структурах баз данных разработчиков, при работе над общим проектом с использованием системы контроля версий

Предыдущая | Следующая