SlideShare a Scribd company logo
1 of 42
1
Mastering Database
Schema
Max Pronko
2
Привет, я Макс
15
ОПЫТ
ЛЕТ
9
MAGENTO
ЛЕТ
Magento DevChannel
План
• Что такое Декларационная Схема
• Миграция
• Новые CLI команды
• Откат схемы
• Обязательно знать
Традиционный подход
v1.0.0 v1.0.1 v1.1.0 v1.1.1
Создали
Таблицу
Добавили
Колонку
Создали
Ключ
Удалили
Колонку
• Сложно отслеживать состояние таблицы
• Последовательность модулей
• Установка или Обновление?
• Версии модуля
• Нет возможности отката
• Ошибки при разработке
• Старые скрипты должны быть!
Проблемы
Декларационная Схема Баз Данных
Декларационная Схема
Это XML файл модуля,
который определяет
финальное состояние
таблицы в базе данных
Декларационная Схема
Подход позволяет объявить
конечное состояние базы
данных и настраивает
систему на нее
автоматически, без
выполнения избыточных
операций
• Поддержка откатов схемы базы данных
• Улучшение производительности
• Тестовый режим
• Нет повторяющегося SQL
Плюсы данного подхода
Файл module.xml
Аргумент setup_version не нужен
Новые файлы в модуле
• app/code/Pronko/CmsPage
• etc
• db_schema.xml
• db_schema_whitelist.json
Файл db_schema.xml
Возможности файла db_schema.xml
• Декларировать структуру таблицы
• Добавлять колонки
• Добавлять ключи
• Мигрировать данные с таблицы/колонки/базы
Создание таблицы
Декларируем pronko_menu_item таблицу
Атрибуты таблицы
• name
• resource: default, sales, checkout
• engine: innodb, memory
• comment
• charset
• collation
• onCreate
Атрибут onCreate таблицы
migrateDataFromAnotherTable(<table_name>)
Невозвратимые операции
• Удаление таблицы
• Удаление колонки
• Уменьшение размера колонки
Добавление колонки в
таблицу
Декларация колонки
Атрибуты колонки
• name
• xsi:type (Integer, Text, Binary, Decimal, Time)
• default
• length
• padding
• scale
• precision
• unsigned
• identity
• nullable
• comment
• onCreate
Атрибут onCreate колонки
migrateDataFrom(<column_name>)
migrateDataFrom(parent_id)
Запись 1
Запись 2
Запись 3
Таблица pronko_menu_item
onCreate
parent_id menu_id
Добавление первичного ключа
Декларация первичного ключа в
таблице
Добавление внешнего ключа
Декларация внешнего ключа в таблице
Добавление индекса
Декларация внешнего ключа в таблице
Типы индекса: btree, hash, fulltext
Новые файлы в модуле
• app/code/Pronko/CmsPage
• etc
• db_schema.xml
• db_schema_whitelist.json
v
Зачем нужен этот файл
Содержит информацию о таблице,
колонках и индексах, которые разрешены
для редактирования в файлах
db_schema.xml
Как создать db_schema_whitelist.json
$ bin/magento
setup:db-declaration:generate-whitelist
—module-name=Magento_Module
Pronko_CmsPage/etc/db_schema_whitelist.js
Файл db_schema_whitelist.json
Конвертируем старые скрипты
в декларационную схему
Новый аргумент для конвертации
$ bin/magento setup:install —convert-old-scripts=1
$ bin/magento setup:upgrade —convert-old-scripts=1
Установка
Обновление
Ограничения
• Пользовательские DDL операции
• Сырые SQL запросы в InstallSchema и
UpdateSchema игнорируются
• Повторяющиеся сценарии (recurring)
Тестовый режим
Тестовый режим - dry-run
$ bin/magento setup:install —dry-run=1
Результат выполнения в var/dry-run-installation.log
Запомнить при работе с Декларационной схемой
• Декларационная схема и скрипты установки
(Setup) не совместимы
• Нет возможности перейти обратно на скрипты
установки
• Setup скрипты поддерживаются с Magento 2.3
• Для обратной совместимости использовать
Setup скрипты
Вместо последнего слайда
• Заглянуть в schema.xsd файл
• Настроить IDE для подсветки XML
• Попробовать сегодня после конференции
• Для проектов - да, для модулей с обратной
совместимостью - нет
• Declarative Shema - это оно!
Вопросы и
Ответы
41
@max_pronko
Подписывайся!
42

More Related Content

Similar to Mastering Declarative Database Schema - MageConf 2019

Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotki
drupalconf
 
Миграция карточек, разработанных на Конструкторе решений 4.5, на платформу Do...
Миграция карточек, разработанных на Конструкторе решений 4.5, на платформу Do...Миграция карточек, разработанных на Конструкторе решений 4.5, на платформу Do...
Миграция карточек, разработанных на Конструкторе решений 4.5, на платформу Do...
Docsvision
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
Media Gorod
 
Aleksey Mashanov Rit
Aleksey Mashanov RitAleksey Mashanov Rit
Aleksey Mashanov Rit
rit2010
 
Aleksey Mashanov Rit
Aleksey  Mashanov RitAleksey  Mashanov Rit
Aleksey Mashanov Rit
rit2010
 
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Fwdays
 
презентация релиз 5
презентация релиз 5презентация релиз 5
презентация релиз 5
eugenij eugenij
 

Similar to Mastering Declarative Database Schema - MageConf 2019 (20)

Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработки
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotki
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...
 
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
 
"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)
 
Миграция карточек, разработанных на Конструкторе решений 4.5, на платформу Do...
Миграция карточек, разработанных на Конструкторе решений 4.5, на платформу Do...Миграция карточек, разработанных на Конструкторе решений 4.5, на платформу Do...
Миграция карточек, разработанных на Конструкторе решений 4.5, на платформу Do...
 
2010-11 (ПБД) Вологжанин Д.Г.
2010-11 (ПБД) Вологжанин Д.Г.2010-11 (ПБД) Вологжанин Д.Г.
2010-11 (ПБД) Вологжанин Д.Г.
 
MySQL: Есть ли жизнь после 1 млрд. записей.
MySQL: Есть ли жизнь после 1 млрд. записей.MySQL: Есть ли жизнь после 1 млрд. записей.
MySQL: Есть ли жизнь после 1 млрд. записей.
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
 
Aleksey Mashanov Rit
Aleksey Mashanov RitAleksey Mashanov Rit
Aleksey Mashanov Rit
 
Aleksey Mashanov Rit
Aleksey  Mashanov RitAleksey  Mashanov Rit
Aleksey Mashanov Rit
 
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
 
Web deployment
Web deploymentWeb deployment
Web deployment
 
презентация релиз 5
презентация релиз 5презентация релиз 5
презентация релиз 5
 
Share Point Workflow
Share Point WorkflowShare Point Workflow
Share Point Workflow
 
"Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7""Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7"
 
Simonova sql server-enginetesting
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetesting
 
Тестирование производительности систем мониторинга на платформе Microsoft SCO...
Тестирование производительности систем мониторинга на платформе Microsoft SCO...Тестирование производительности систем мониторинга на платформе Microsoft SCO...
Тестирование производительности систем мониторинга на платформе Microsoft SCO...
 

More from Max Pronko

Zepplin_Pronko_Magento_Festival Hall 1_Final
Zepplin_Pronko_Magento_Festival Hall 1_FinalZepplin_Pronko_Magento_Festival Hall 1_Final
Zepplin_Pronko_Magento_Festival Hall 1_Final
Max Pronko
 

More from Max Pronko (9)

Service Oriented Architecture in Magento 2
Service Oriented Architecture in Magento 2Service Oriented Architecture in Magento 2
Service Oriented Architecture in Magento 2
 
Checkout Customizations in Magento 2 - MageTitansMCR 2017
Checkout Customizations in Magento 2 - MageTitansMCR 2017Checkout Customizations in Magento 2 - MageTitansMCR 2017
Checkout Customizations in Magento 2 - MageTitansMCR 2017
 
Magento 2 Deployment Automation: from 6 hours to 15 minutes - Max Pronko
Magento 2 Deployment Automation: from 6 hours to 15 minutes - Max PronkoMagento 2 Deployment Automation: from 6 hours to 15 minutes - Max Pronko
Magento 2 Deployment Automation: from 6 hours to 15 minutes - Max Pronko
 
Checkout in Magento 2 by Max Pronko
Checkout in Magento 2 by Max PronkoCheckout in Magento 2 by Max Pronko
Checkout in Magento 2 by Max Pronko
 
Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2
 
Ups and Downs of Real Projects Based on Magento 2
Ups and Downs of Real Projects Based on Magento 2Ups and Downs of Real Projects Based on Magento 2
Ups and Downs of Real Projects Based on Magento 2
 
Key Insights into Development Design Patterns for Magento 2 - Magento Live UK
Key Insights into Development Design Patterns for Magento 2 - Magento Live UKKey Insights into Development Design Patterns for Magento 2 - Magento Live UK
Key Insights into Development Design Patterns for Magento 2 - Magento Live UK
 
Magento 2 Design Patterns
Magento 2 Design PatternsMagento 2 Design Patterns
Magento 2 Design Patterns
 
Zepplin_Pronko_Magento_Festival Hall 1_Final
Zepplin_Pronko_Magento_Festival Hall 1_FinalZepplin_Pronko_Magento_Festival Hall 1_Final
Zepplin_Pronko_Magento_Festival Hall 1_Final
 

Mastering Declarative Database Schema - MageConf 2019