Migrations
В цьому розділі я поясню як реалізовані міграції в моїй ORM системі
Концепція Системи Міграцій
Система міграцій у моїй ORM забезпечує зручний спосіб управління змінами в структурі бази даних. Вона складається з двох основних компонентів: ORM та ORM-CLI. Ось як система міграцій працює:
Основні Компоненти
ORM:
Відповідає за управління станом бази даних та синхронізацію структури бази даних з кодом вашого додатка.
Зберігає інформацію про структуру бази даних у вигляді "злитків".
ORM-CLI:
Керує процесом створення та застосування міграцій.
Порівнює поточний стан бази даних з останнім злитком і генерує нові міграції на основі змін.
Процес Роботи Системи Міграцій
Створення Злитка
При кожному запуску вашої програми ORM автоматично створює "злиток" (snapshot) поточного стану бази даних. Цей злиток містить інформацію про таблиці, колонки, тригери, індекси та інші компоненти бази даних. Злиток записується у таблицю
current_database_ingot
, яка постійно синхронізується з поточним станом бази даних.Важливість ID: До кожного елемента (таблиці, колонки, тригера, індекса) додається унікальний ідентифікатор (ID). Це дозволяє легко порівнювати зміни між злитками та попередніми міграціями.
Порівняння Міграцій
При запуску ORM-CLI для створення нової міграції, система порівнює останній злиток з
current_database_ingot
. Це порівняння дозволяє виявити всі зміни, що відбулися з моменту останньої міграції, і включити їх у нову міграцію.Створення Міграцій: На основі виявлених змін генерується SQL-код для нової міграції. Цей код зберігається разом з міграцією для можливості подальшого відновлення або повторного застосування.
Зберігання SQL Коду
Кожна міграція зберігає SQL-код, що використовувався для її виконання. Це забезпечує:
Точність: Якщо потрібно відновити міграцію або переглянути її історію, завжди можна скористатися оригінальним SQL-кодом, а не динамічно згенерованим.
Можливість Редагування: Користувачі можуть додавати власний функціонал до міграцій. Після успішного виконання міграції код більше не може бути змінений, що запобігає помилкам.
Динамічне Формування Міграцій
ORM підтримує динамічне формування міграцій, що може бути корисним, але іноді неточним. Тому зберігання оригінального SQL-коду є важливим для забезпечення правильності застосування міграцій.
Переваги та Унікальні Особливості
Ідентифікатори: Використання ID для кожного елемента дозволяє точніше відстежувати та управляти змінами.
Збереження SQL: Збереження SQL-коду міграцій забезпечує точність та можливість відновлення.
Редагування Після Виконання: Можливість додавання функціоналу до міграцій та захист від змін після успішного застосування підвищує гнучкість системи.
Цей підхід забезпечує надійний і масштабований спосіб управління змінами в базі даних, що робить мій додаток більш гнучким і стійким до змін у структурі бази даних.
Last updated