Magento Open Source 2.3 gives us a very interesting and powerful tool called Declarative Schema. The declarative database schema allows to re-think our old-fashioned database upgrade scripts into nice and elegant declarative XML files. Let's see what we can do with Declarative Schema.
5. • Сложно отслеживать состояние таблицы
• Последовательность модулей
• Установка или Обновление?
• Версии модуля
• Нет возможности отката
• Ошибки при разработке
• Старые скрипты должны быть!
Проблемы
8. Декларационная Схема
Подход позволяет объявить
конечное состояние базы
данных и настраивает
систему на нее
автоматически, без
выполнения избыточных
операций
9. • Поддержка откатов схемы базы данных
• Улучшение производительности
• Тестовый режим
• Нет повторяющегося SQL
Плюсы данного подхода
13. Возможности файла db_schema.xml
• Декларировать структуру таблицы
• Добавлять колонки
• Добавлять ключи
• Мигрировать данные с таблицы/колонки/базы
30. Новые файлы в модуле
• app/code/Pronko/CmsPage
• etc
• db_schema.xml
• db_schema_whitelist.json
31. v
Зачем нужен этот файл
Содержит информацию о таблице,
колонках и индексах, которые разрешены
для редактирования в файлах
db_schema.xml
32. Как создать db_schema_whitelist.json
$ bin/magento
setup:db-declaration:generate-whitelist
—module-name=Magento_Module
Pronko_CmsPage/etc/db_schema_whitelist.js
35. Новый аргумент для конвертации
$ bin/magento setup:install —convert-old-scripts=1
$ bin/magento setup:upgrade —convert-old-scripts=1
Установка
Обновление
36. Ограничения
• Пользовательские DDL операции
• Сырые SQL запросы в InstallSchema и
UpdateSchema игнорируются
• Повторяющиеся сценарии (recurring)
38. Тестовый режим - dry-run
$ bin/magento setup:install —dry-run=1
Результат выполнения в var/dry-run-installation.log
39. Запомнить при работе с Декларационной схемой
• Декларационная схема и скрипты установки
(Setup) не совместимы
• Нет возможности перейти обратно на скрипты
установки
• Setup скрипты поддерживаются с Magento 2.3
• Для обратной совместимости использовать
Setup скрипты
40. Вместо последнего слайда
• Заглянуть в schema.xsd файл
• Настроить IDE для подсветки XML
• Попробовать сегодня после конференции
• Для проектов - да, для модулей с обратной
совместимостью - нет
• Declarative Shema - это оно!