ВВЕДЕНИЕ 2
1. Системы контроля версий 4
1.1 Общие сведения о системах контроля версий 4
1.1.1 Определение и применение 4
1.1.2 Типичный порядок работы с системой 6
1.1.3 Конфликты и их разрешение 12
1.1.4 Блокировки 13
1.1.5 Версии проекта, тэги 16
1.1.6 Базовые принципы разработки ПО в VCS 18
1.1.7 Распределённые системы управления версиями 19
1.2 Проблема версионирования баз данных 24
1.3 Обзор и сравнение систем контроля версий баз данных 25
2. Применяемые методы для контроля версий БД 31
2.1 Метод инкрементных изменений 31
2.2 Метод идемпотентных изменений 34
2.3 Метод уподобления структуры базы данных исходному коду 38
3 РЕАЛИЗАЦИЯ СИСТЕМЫ КОНТРОЛЯ ВЕРСИЙ БД 42
3.1 Описание инструментов 42
3.2 Описание функций приложения 46
ЗАКЛЮЧЕНИЕ 56
БИБЛИОГРАФИЯ 59
Читать дальше
Подводя итоги нашей работы, отметим её основные моменты.
Система управления версиями представляет собой систему, позволяющую
хранить несколько версий одного и того же документа. Она наиболее широко
используется при разработке программного обеспечения с целью хранения
исходных кодов разрабатываемой программы и в тех областях, где ведётся
работа с большим количеством непрерывно изменяющихся электронных
документов.
Каждая система управления версиями имеет свои специфические
особенности, отражающиеся в наборе команд, порядке работы пользователей и
администрировании. Однако общий порядок работы для большинства стереотипен.
При слиянии нескольких версий в системе их управления могут возникать
конфликты. Они показываются разработчику либо в специальном программном
модуле объединения изменений, либо просто помечаются специальной разметкой
прямо в тексте объединённого файла.
Монопольное использование файла или группы файлов для внесения в них
изменений позволяет механизм блокировки. Файлы, для работы с которыми
требуется блокировка, помечаются специальным флагом «блокируемый» и на
время блокировки он остаётся доступным всем остальным разработчикам только
для чтения.
Система управления версиями обеспечивает хранение всех существовавших
вариантов файлов и, как следствие, всех вариантов проекта в целом, имевших
место с момента начала его разработки. Для более удобной пометки версий
проекта (или его частей) системы управления версиями поддерживают понятие
тэгов. Тэг является символической меткой, которая может быть связана с
определённой версией файла и/или каталога в репозитории и таким образом
можно идентифицировать версию проекта.
Основные преимущества распределённых систем, к которым относится
система контроля версий - их гибкость и значительно большая по сравнению с
централизованными системами автономия отдельного рабочего места. Каждый
компьютер разработчика является, фактически, самостоятельным и
полнофункциональным сервером.
Для работы системы контроля версий необходима база данных, которая
представляет собой совокупность всех объектов базы данных, статических
данных и пользовательских данных, которые изменяются в процессе работы с
приложением. Любая база данных должна поддерживать версионность, благодаря
которой происходит обновление структуры базы данных - миграция. Основные
требования к процессу версионной миграции: едино разовое выполнение каждого
изменения (SQL-запроса) и строго предустановленный порядок изменений.
Наиболее популярными системами контроля версий баз данных являются
Flyway и Liquibase. Преимущества первой: миграция с любой версии до
новейшей; соединение миграций вместе с приложением и их автоматический
запуск при запуске API; SQL скрипты для регулярных миграций; высокая
надежность. Преимущества Liquibase: расширяемость; слияние изменений от
нескольких разработчиков; поддержка нескольких баз данных; управление
производственными данными; кластер безопасных обновлений базы данных;
автоматизированные обновления и генерация SQL-скриптов; создание
документации изменений базы данных.
Для контроля версий баз данных в настоящее время активно используется
три метода. Первый метод, метод инкрементных изменений, использует для
обновления баз данных программу-скрипт. К его достоинствам относят: быстрое
и удобное выполнение миграции до последней версии; механизм нумерации
версий (номер текущей версии хранится прямо в БД).
Основная идея метода второго метода, метода идемпонентных изменений -
написание миграционных файлов таким образом, чтобы их можно было выполнить
на базе данных более одного раза. То есть, при первой попытке выполнить
любую из SQL-команд изменения будут применены; при всех последующих -
ничего не произойдет. К достоинству метода относится удобное выполнение
миграций с любой промежуточной версии до последней.
Основная идея третьего метода, метода уподобления структуры базы
данных исходному коду отражена в самом заголовке. Структура базы данных -
такой же исходный код, как код PHP, C# или HTML. Следовательно, вместо
того, чтобы хранить в репозитории кода файлы-миграции с запросами,
изменяющими структуру базы данных, нужно хранить только актуальную
структуру базы данных - в декларативной форме.
На основе полученных теоретических знаний мы реализовали на практике
систему контроля версий БД с использованием методики итерационных
изменений, а, следовательно, цель работы считаем достигнутой.
БИБЛИОГРАФИЯ
Читать дальше
1. MySQL Руководство по изучению языка. – СПб, 2004.
2. MySQL: Справочник по языку. – М., 2005.
3. Аткинсон Л.. MySQL. Библиотека профессионала.: Пер. с англ. – М., 2002.
4. Бен Коллинз-Сассман, Брайан У. Фитцпатрик, К. Майкл Пилато Управление версиями в Subversion для Subversion 1.4 (Соответствует редакции 4260). 2007. URL: http://svnbook.red-bean.com/nightly/ru/svn-book.html.
5. Бьюли А.
6. Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс - М., 2003.
7. Дейт К. Дж. Введение в системы баз данных = Introduction to Database Systems - 8-е изд. - М., 2006.
8. Диго С.М. Базы данных. Проектирование и создание. Учебно-методический комплекс. – М,. 2008.
9. Кузнецов С. Д. Основы баз данных - 2-е изд. - М., 2007.
10. Кумскова И.А. Базы данных. - М., 2010
11. Нотон П. JAVA: Справ.руководство:Пер.с англ./Под ред.А.Тихонова.-М., 1998.
12. Тим Джоунс Системы управления версиями для Linux. Обзор архитектуры, моделей и примеров. Опубликовано 04.11.2006. URL: http://www.ibm.com/developerworks/ru/library/lvercon/index.html?S_TACT=105AGX99&S_CMP=GR01.
13. Ульман Л. MySQL. Пер с англ Слинкина А – Спб, 2004.
14. Фуфаев Э.В., Фуфаев Д.Э. Базы данных. - М., 2011.
Читать дальше