754.74K
Category: databasedatabase

Миграция баз данных с помощью Flyway Sapsan-Code

1.

Миграция баз данных с помощью Flyway
Sapsan-Code

2.

Flyway
На этом уроке мы рассмотрим ключевые
концепции Flyway и то, как мы можем
использовать этот фреймворк для надежного и
простого непрерывного изменения схемы базы
данных нашего приложения. Кроме того, мы
представим пример управления базой данных
in-memory H2 с помощью плагина Maven Flyway.
Flyway обновляет базу данных от одной версии
к другой с помощью миграций. Мы можем
писать миграции либо на SQL с синтаксисом,
специфичным для базы данных, либо на Java
для расширенных преобразований базы
данных.

3.

Flyway maven plugin

4.

Application yml
Особенности YAML:
• понятный человеку код;
• минималистичный синтаксис;
• заточен под работу с данными;
• встроенный стиль, похожий на JSON (YAML
является его надмножеством);
• поддерживает комментарии;
• поддерживает строки без кавычек;
• считается «чище», чем JSON;
• дополнительные возможности (расширяемые типы
данных, относительные якоря и маппинг типов с
сохранением порядка ключей).
Применение: YAML лучше всего подходит для
приложений с большим объемом данных, которые
используют DevOps конвейеры или виртуальные
машины. Кроме того, улучшение читаемости данных
пригодится в командах, где разработчики часто с
ними взаимодействуют.

5.

Конфигурация проекта

6.

Наша первая миграция
Flyway придерживается следующего соглашения об
именовании скриптов миграции:
<Prefix><Version>__<Description>.sql
Где:
<Prefix> - По умолчанию используется префикс V, который
мы можем изменить в вышеуказанном конфигурационном
файле с помощью свойства flyway.sqlMigrationPrefix.
<Version> - Номер версии миграции. Мажорные и минорные
версии могут быть разделены знаком подчеркивания.
Версия миграции всегда должна начинаться с 1.
<Описание> - Текстовое описание миграции. Двойное
подчеркивание отделяет описание от номеров версий.
Пример: V1_1_0__my_first_migration.sql

7.

Наша первая миграция

8.

Наша вторая миграция

9.

Как же работает FlyWay?
Чтобы отслеживать, какие миграции мы уже применили и когда, в схему добавляется
специальная бухгалтерская таблица. Эта таблица метаданных также отслеживает
контрольные суммы миграций, а также то, были ли миграции успешными или нет.
Чтобы приспособиться к изменяющимся схемам баз данных, фреймворк выполняет
следующие действия:
Проверяет схему базы данных, чтобы найти таблицу метаданных (по умолчанию
SCHEMA_VERSION). Если таблица метаданных не существует, она создается.
Проверяет путь класса приложения на наличие доступных миграций.
Сравнивает миграции с таблицей метаданных. Если номер версии меньше или равен
номеру версии, помеченной как текущая, она игнорируется.
Все оставшиеся миграции помечаются как ожидающие миграции. Они сортируются по
номеру версии и выполняются по порядку.
По мере применения каждой миграции таблица метаданных обновляется
соответствующим образом.

10.

Homework
Описание задания: Вам необходимо разработать веб-приложение на Java Spring,
которое будет выполнять следующие функции:
1. Аутентификация и авторизация пользователей с использованием Spring Security.
Пользователи могут быть обычными пользователями или администраторами.
2. Возможность создания, редактирования и удаления статей. Статьи должны
иметь заголовок, текст и дату публикации. Администраторы должны иметь права
на создание, редактирование и удаление любых статей, в то время как обычные
пользователи должны иметь возможность создавать только свои собственные
статьи и редактировать или удалять их.
3. Просмотр списка всех статей и возможность поиска по ключевым словам и
датам.
4. Реализация системы комментариев для статей. Пользователи должны иметь
возможность добавлять и удалять комментарии.
5. Реализация системы рейтинга статей. Пользователи должны иметь возможность
оценить статью и просмотреть ее рейтинг.
6. Реализация системы рассылки новостей для подписанных пользователей.
Администраторы должны иметь возможность отправлять новости всем
пользователям, а пользователи должны иметь возможность подписаться на
новостную рассылку и отписаться от нее.
Требования:
Приложение должно быть реализовано с использованием Java Spring.
Для работы с базой данных необходимо использовать Spring Data JPA.
Приложение должно быть развернуто на локальном сервере (например, Tomcat или
Jetty).
Приложение должно быть реализовано с использованием шаблонизатора
Thymeleaf.
Приложение должно быть разработано с использованием структуры проекта,
соответствующей стандарту MVC (Model-View-Controller).
English     Русский Rules