Введение - Разработка автоматизированной информационной системы для устранения различий в структурах баз данных разработчиков, при работе над общим проектом с использованием системы контроля версий
В связи с увеличением числа сотрудников, работающих в компании, а также с расширением рабочего проекта, возникла проблема, связанная с версионностью структуры базы данных. Версионная миграция базы данных доставляет большие неудобства, связанные:
- - с проверкой работоспособности системы после скачивания (pull) и слияния (merg) изменений с сервера; - с идентификацией ошибки (в случае наличия); - с поиском сохраненного Data Definition Language (далее - DDL) запроса в соответствующей папке; - с выполнением запроса для нивелирования различий в структурах баз данных либо через графический интерфейс системы управления базой данных (далее - СУБД), либо непосредственно через командную строку СУБД; - с ситуацией, когда несколько сотрудников изменили структуру БД в одном и том же месте. В этом случае человек, который пытается применить изменение на сервере, не сможет этого сделать из-за расхождений с эталонной базой; - с ситуацией, когда один из сотрудников изменил структуру БД, но забыл добавить соответствующий DDL запрос в папку или неправильно его оформил; - с ошибками программирования.
В отделе разработок компании в настоящее время работают 11 программистов. У каждого сотрудника есть свое рабочее место - ПК или ноутбук, на котором установлены:
- - операционная система (Windows); - локальный сервер (Apache2.4 или IIS); - интерпретатор языка Personal Home Page (PHP) (v.5.4); - система управления базами данных (СУБД) (MySQL 5.6); - графическое приложение для работы с СУБД (HeidiSQL v.9.3); - текстовый редактор (SublimeText v.3.0); - система контроля версий Mercurial (Tortoise HG v.3.5).
Помимо этого есть общий сервер (production), работающий на Linux Debian, на котором также установлены:
- - интерпретатор языка PHP (v.5.4); - СУБД MySQL (5.6); - система контроля версий Mercurial (Tortoise HG v.3.5).
Структура БД на сервере является эталонной.
По мере необходимости программисты добавляют (удаляют, изменяют) поля, данные, индексы, триггеры, хранимые процедуры, представления, формируя из Data Manipulation Language (далее - DML) или DDL - запросов (changesets) текстовые файлы, которые сохраняются в отдельную папку. Затем происходит фиксация проделанной работы через систему контроля версий и изменения "выкладывается" на сервер. Далее, на сервере выполняется сохраненный changeset. Таким образом, структура БД на сервере изменяется.
Остальные программисты скачивают изменения с сервера, производят слияние (merge) и формы становятся у всех идентичными (в том числе и папка с сохраненными changeset-ами).
Однако структура БД остается разной, по сравнению со структурой БД на сервере, и для того чтобы избавиться от этого необходимо выполнить сохраненный sql-запрос того пользователя, который инициировал изменение БД. Но на практике регулярно происходят следующие ситуации:
- - пользователь, скачавший изменение с сервера, не посмотрел, какие файлы были изменены, т. к. каждый программист занимается своей частью работы; - пользователь, сделавший фиксацию изменений (commit) забыл добавить sql-файл на изменение БД; - пользователь, скачавший изменение с сервера, не увидел, пропустил sql-файл, т. к. каждый программист, в течение дня может проводить фиксацию работы по несколько раз и не регулярно "заливать" изменения на сервер, так же как "сливать" изменения с сервера, таким образом, при скачивании образуется порядка 10-12 фиксаций, которые необходимо просмотреть.
Необходимо разработать систему, которая будет в автоматическом режиме отслеживать изменения структуры базы данных, вести их фиксацию, генерировать, в удобочитаемом для человека виде, sql запрос и выполнять его. Помимо этого необходимо предусмотреть возможность абстрагироваться от конкретной СУБД, переведя структуру рабочей базы данных в xml формат.
Актуальность задачи можно обосновать следующим образом:
- - На рабочих местах сотрудников было проведено исследование, целью которого являлось, вычисление затраченного времени на поиск и устранение неисправностей программистом, при скачивании изменений с сервера. Было выявлено, что с момента обнаружения ошибки, до полного восстановления работоспособности системы в среднем тратится 3 минуты 26 секунд. - Каждый из разработчиков, может поехать в командировку на презентацию системы или обучение работе с системой. В этом случае все действия проводятся на локальной машине сотрудника и возникновение ошибки, например, при презентации, может негативно отразиться на условиях заключения контракта. - Сложность поддержки работоспособности системы при установке на объекты с классом секретности, на которых отсутствует доступ в интернет. - Увеличение числа сотрудников влечет за собой увеличение затраченного времени на поиск и устранение ошибок.
Создание системы позволит:
- - снять с программистов необходимость отдельно фиксировать изменения в структуре БД; - отслеживать изменения сделанные другими сотрудниками; - освободит время на поиск и устранение ошибок, связанных с версионной миграцией БД; - позволит хранить историю изменения БД в xml файлах; - позволит мигрировать структуру рабочей БД на любую другую СУБД.
Со стороны организации ООО "БРеалИТ" (далее заказчик) к разрабатываемой АИС были предъявлены следующие требования:
- - Должна иметь настройку запуска: запускаться сразу после скачиваний изменений с сервера или по решению пользователя. - Должна предоставлять пользователю удобочитаемую информацию о результатах проделанной работы. - Должна предоставлять пользователю выбор действий (выполнить запросы сейчас или отложить выполнение). - Для переносимости между различными СУБД, структура БД должна храниться в XML-файле. - Файлы со структурой БД и историей ее изменения должны находиться под СКВ чтобы, в случае необходимости, можно было откатиться на предыдущую ревизию. - Должна генерировать SQL код и выводить его в удобочитаемом виде, который можно было бы выполнить прямо из системы. - Должна иметь возможность сравнения структуры выбранной БД и файла со структурой БД. - Должна быть с открытым исходным кодом и давать возможность вносить изменения в программу. - Должно быть руководство пользователя. - Должна быть бесплатной. - Должна быть кроссплатформенной.
Определившись с постановкой задачи и учитывая требования заказчика, я провел поиск программ, способных решить данную проблему. В результате поиска были найдены следующие готовые решения:
Compalex.
Рис. 1 -- Внешний вид окна с результатом работы программы Compalex
Система Compalex (Рис. 1) сравнивает структуру двух баз данных, результат сравнения выводит пользователю через графический интерфейс. Однако данная программа предназначена исключительно для сравнения структуры БД и:
- - не может сохранить результаты в файл и, соответственно, не может работать с СКВ; - не позволяет выполнить sql запрос для сглаживания различий; - запускается только в ручном режиме; - необходимо каждый раз указывать название базы данных.
LIQUIBASE
Рис. 2 -- Логотип программы Liquibase
Система LIQUIBASE (Рис. 2) позволяет вести изменение БД. История изменений хранится в xml файле. Однако данная программа:
- - не позволяет сравнивать структуру двух разных баз; - работает с СКВ Git, а проект заказчика поддерживается системой контроля версий Mercurial; - является платной; - имеет сложный синтаксис выполнения команд (Рис. 3); - недостаточная документация по системе.
Рис. 3 -- Пример ввода команды в программе Liquibase
Flayway.
Рис. 4 -- Логотип программы Flayway
Система Flayway (Рис. 4). Из особенностей можно отметить, что данная программа может вести журнал изменений базы данных, работает через интерфейс командной строки, имеет множество дополнительных функций. Из минусов:
- - не позволяет сравнивать две базы данных; - сложная установка; - документация и интерфейс не поддерживает русский язык; - исходные коды не открыты.
Rails
Рис. 5 - Логотип программы Rails
Система Rails (Рис. 5) позволяет сравнивать две базы данных, история изменений хранится в отдельном файле, работает через интерфейс командной строки, быстро выполняется скрипт, позволяет абстрагироваться от конкретной СУБД. Однако, имеет ряд особенностей, из-за которых не может использоваться в качестве решения поставленной задачи:
- - написана на языке программирования Ruby, а в ООО "БРеалИТ" (компания - заказчик) нет штатной должности по данному направлению и поддержка системы "своими силами" не представляется возможной; - имеет сложное руководство пользователя.
Dbdeploy.
Рис. 6 - Логотип программы Dbdeploy
Dbdeploy (Рис. 6) хранит всю историю изменений в отдельных xml файлах, имеет открытый исходный код. Из минусов:
- - не работает через командную строку; - нет возможности сравнить две различные базы данных; - не показывает тот sql запрос, который необходимо выполнить для нивелирования различий между БД.
MySQL Workbanch.
Рис. 7 - Логотип программы MySQL Workbanch
MySQL Workbanch (Рис. 7) является программой для управления базами данных MySQL и MSSQL и может использоваться в качестве графического интерфейса. Позволяет сохранять изменения базы данных, не запуская дополнительного ПО, имеет отличную документацию и техническую поддержку, но имеет ряд недостатков, не позволяющих использовать данное решение в конкретной задаче:
- - не хранит структуры БД в xml документе; - не работает через командную строку; - компания - заказчик использует другое ПО для управления базой данных; - инструмент миграции выполнен в качестве библиотеки к MySQL Workbanch.
MySQL Migration with PHP.
Плюсы программы -- это открытость кода, бесплатность, работа через интерфейс командной строки, возможность проинициализировать выбранную базу данных, позволяет "накатывать" миграции до определенной даты. Однако не позволяет:
- - создавать ALTER (CREATE, DROP) скрипты в читабельном виде; - хранить структуру базы данных в xml файле; - работать под контролем СКВ.
Учитывая все вышеизложенное и то, что ни одна из программ - аналогов не способна в полной мере удовлетворить требованиям заказчика, было принято решение о написании собственного продукта.
Похожие статьи
-
Для написания АИС использовались следующие языки программирования, программные средства и библиотеки: - Язык программирования PHP 5.4; -...
-
В рамках выпускной квалификационной работы была разработана автоматизированная информационная система, предназначенная как для автоматического, так и для...
-
Алгоритм работы. В результате работы АИС генерируются три xml документа - два со структурой сравниваемых баз данных и один с результатами сравнения. В...
-
SimpleXML. В PHP версии 5.0 и выше появилось расширение для работы с xml структурой. Библитека SimpleXML содержит большое количество методов для работы с...
-
Выбор средств реализации информационной системы Названные в параграфе 1.4. настоящей работы задачи могут быть решены тремя типами средств автоматизации:...
-
Инфологические и даталогические модели данных - Теория экономических информационных систем
СУБД должна предоставлять доступ к данным любым пользователям, включая и тех, которые практически не имеют и (или) не хотят иметь представления о: -...
-
Для работы с базами данных созданы системы управлением базами данных. Существует довольно большое количество СУБД, особенно предназначенных для работы с...
-
Структура и процесс функционирования системы управления базами данных - Разработка базы данных
СУБД является прикладным программным обеспечением, предназначенным для решения конкретных прикладных задач и выполнения системных функций, расширяющих...
-
Основные понятия баз данных. Цели использования баз данных - Разработка базы данных
В широком смысле слова база данных (БД) - это совокупность сведений о конкретных объектах реального мира в какой-либо предметной области. Для удобной...
-
Введение - Система управления базами данных
Развитие средств вычислительной техники обеспечило для создания и широкого использования систем обработки данных разнообразного назначения....
-
Использование парадигмы ООП. Разрабатываемая АИС является системой с открытым исходным кодом и значит должна являться масштабируемой сторонними...
-
Введение - Разработка и тестирование автоматизированной системы контроля успеваемости студентов
Тема разработки автоматизированной системы контроля успеваемости и вычисления оценок слабо освещена в научной литературе со стороны вычислительной части...
-
Наиболее распространенная форма - ЭВМ. Раньше чаще использовались вычислительные центры (ВЦ). Вычислительный центр - организуется и специализируется на...
-
В среде электронного ресурса ИИС "MD_SLAGMELT" (Рис. 6) для доступа к компоненту "моделирование" необходима учетная запись (пара логин/пароль) (Рис.7)....
-
Концепция решает три задачи: Определить основные идеи и направления развития и согласовать их с клиентом. Получить оценку этих идей от будущих...
-
Следующим этапом, когда документация найдена, источники изучены, а другие решения проанализированы, является реализация автоматизированной системы...
-
Следующей задачей было изучение литературы по теме и ее анализ. Для этого использовались публикации из российских источников с целью учета особенностей...
-
Математическое и программное обеспечение (МО, ПО)- совокупность математических методов, моделей, алгоритмов и программ для реализации целей и задач...
-
"WWWSQLDesigner" позиционируется как абсолютно бесплатный, доступный для пользователей, универсальный веб-редактор, значительно упрощающий процесс...
-
База данных представляет собой информационную модель того объекта (организации или предприятия), информация о котором требуется пользователю для...
-
1. Изучение теоретических аспектов использования: MS Word, MS Excel, MS Access, Paint и Photoshop... (ППО) Часть 1 : Руководство по выполнению...
-
В современной технологии баз данных предполагается, что создание базы данных, ее поддержка и обеспечение доступа пользователей к ней осуществляются...
-
Процесс перезагрузки может быть достигнут путем прекращения работы системы, выключения питания и включения снова. Более простой способ - это указать...
-
Введение - Автоматизация процесса работы руководства ООО "Сервис партнер"
Потоки информации в мире, который нас окружает, огромны. Во времени они имеют тенденцию к увеличению. Поэтому в любой организации, как большой, так и...
-
Для того чтобы оценить экономическую выгоду от внедрения АИС необходимо вычислить трудозатраты компании направленные непосредственно на реализацию...
-
При работе над проектом разрабатывались два основных компонента системы: база данных (далее - БД) и интерфейс клиентского приложения. Затем необходимо...
-
Постановление Правительства Российской Федерации №1119 "Об утверждении требований к защите персональных данных при их обработке в информационных системах...
-
Наименование программы Полное наименование программы - Модуль ипотечного кредитования банковской информационной системы "БИС". Краткое наименование...
-
Информационно - измерительные системы: структура и состав Постоянное совершенствование и развитие средств измерений необходимо для промышленного...
-
Описание проекта, который является объектом исследования Проект - представляет собой внедрение информационно - аналитической системы управления карьерой...
-
Определение методов реинжиниринга информационных систем Основные задачи, которые стоят перед проектировщиком, занимающимся реинжинирингом информационных...
-
В данном разделе была разработана функциональная схема работы программного комплекса, которая в общем виде описывает состав комплекса, характер и виды...
-
Учебный процесс в ННГАСУ сопровождается значительной информационной базой, развитием компьютерного парка и внедрением в образовательный процесс...
-
Этапы жизненного цикла БД включают: -Планирование БД - определяются принципы, задачи создания БД. -Проектирование БД. -Материализация БД -...
-
Введение - Разработка справочной информационной системы "Рецепты"
Задание курсовой работы. Разработать и отладить информационную справочную систему "Рецепты", которая будет позволять хранить, выводить на экран,...
-
Физическая модель базы данных определяет способ размещения данных в среде хранения и способ доступа к этим данным, которые поддерживаются на физическом...
-
В данной выпускной квалификационной работе разработан прототип умного почтового ящика, удаленного сетевого устройства для контроля почтовой...
-
Введение, Проект документирования cистемы Linux - Операционная система Linux
В этой книге рассматриваются аспекты системного администрирования операционной системы Linux. В первую очередь данное руководство предназначено для тех,...
-
Заключение - Разработка информационно-справочной системы "Аптека"
В нашей повседневной жизни информационно-справочные системы заняли неотъемлемое место в виде информационных порталов и справочников. Большинство из них...
-
Наименование системы Программная система управления контентом портала с архивом конструкторской документации. Цели, назначение и область использования...
Введение - Разработка автоматизированной информационной системы для устранения различий в структурах баз данных разработчиков, при работе над общим проектом с использованием системы контроля версий