Environment Merge
Функция Environment Merge позволяет применять изменения схемы из одного окружения (источник) в другое (цель). Это основная операция, распространяющая структурные изменения — новые таблицы, столбцы, представления и перечисления — по всему жизненному циклу разработки.
Как работает Merge
Заголовок раздела «Как работает Merge»Процесс merge спроектирован как безопасный, предсказуемый и прозрачный:
- Выбор: Выберите исходное окружение (откуда пришли изменения) и целевое (куда их применить).
- Анализ: Система выполняет diff для выявления всех отсутствующих изменений в целевом окружении.
- Проверка и Cherry-pick: Просмотрите обнаруженные изменения и выборочно выберите, какие применить.
- Автоматическое резервное копирование: Перед применением любых изменений Archie Core создаёт полную резервную копию данных и структуры целевого окружения.
- Атомарное применение: Выбранные изменения применяются одной операцией. При сбое любой части merge вся операция автоматически откатывается.
Безопасность и надёжность
Заголовок раздела «Безопасность и надёжность»Archie Core гарантирует целостность производственных и staging-окружений при merge:
- Транзакционные обновления: Все изменения схемы применяются в одной транзакции. То есть либо все выбранные изменения применяются успешно, либо ни одно — предотвращая частично мигрированное состояние базы данных.
- Блокировка окружения: Во время merge целевое окружение блокируется для предотвращения параллельных изменений конфигурации.
- Автоматические предварительные копии перед merge: Перед выполнением всегда создаётся «страховочная» резервная копия. Если merge прошёл успешно, но позже обнаружена проблема, можно восстановить точное состояние до merge на странице Backups.
Выбор Cherry-Pick
Заголовок раздела «Выбор Cherry-Pick»Интерфейс merge обеспечивает детальный контроль над тем, что переносится:
- Индивидуальный выбор: Включайте или отключайте конкретные изменения (например, добавление одного столбца или нового индекса) без слияния всей ветви.
- Групповые действия: Быстро выбирайте или снимайте выбор со всех изменений, связанных с конкретной таблицей или представлением.
- Защита от Breaking-изменений: Деструктивные операции (например, удаление столбца) по умолчанию не предвыбраны. Необходимо явно согласиться на такие изменения, чтобы избежать случайной потери данных.
История миграций
Заголовок раздела «История миграций»Каждая операция merge записывается в централизованный аудит. Страница История для окружения показывает:
- Аудит-лог: Кто инициировал merge, какие окружения были задействованы и когда это произошло.
- Сводка изменений: Чёткая разбивка того, что было создано, изменено или удалено.
- Прослеживаемость: Документация конкретных SQL-команд, выполненных во время миграции.
- Ссылка на резервную копию: Прямой доступ к автоматической резервной копии, созданной специально для этой миграции.
Политика отката
Заголовок раздела «Политика отката»Для отмены merge используйте страницу Backups, чтобы восстановить окружение в состояние «до merge».
Примечание: В отличие от простой отмены, операция восстановления возвращает всю базу данных к предыдущей точке во времени. Рекомендуется проверять изменения в staging-окружении перед merge в производственное.
API для разработчиков (GraphQL)
Заголовок раздела «API для разработчиков (GraphQL)»Mutation: mergeEnvironments
Заголовок раздела «Mutation: mergeEnvironments»mutation MergeEnvironments($input: MergeEnvironmentInput!) { mergeEnvironments(input: $input) { success message migrationId changesApplied backupId }}Query: migrationHistory
Заголовок раздела «Query: migrationHistory»query MigrationHistory($projectId: ID!, $environment: String) { migrationHistory(projectId: $projectId, environment: $environment) { id sourceEnvironment targetEnvironment status appliedBy appliedAt changes { changeType objectName sql isBreaking } backupId }}