Міграція бази даних (також міграція схеми) (англ. schema migration, database migration, database change management[1][2]) — це керування інкрементними, зворотніми змінами схеми реляційної бази даних. Міграція схеми виконується над базою даних коли необхідно оновити, або повернути схему бази даних до якоїсь новішої чи старішої версії.
Міграції виконуються програмно за допомогою інструменту міграцій (англ. schema migration tool). При виклику інструменту міграції з вказуванням бажаної версії схеми, інструмент автоматично застосовує або відкочує міграції в правильній послідовності аж поки не приведе базу даних до бажаного стану.
Більшість інструментів міграції стараються мінімізувати вплив змін схеми на наявні дані всередині бази. Проте, загалом збереження даних не гарантується, бо зміни схеми такі як видалення колонки таблиці можуть знищувати дані (всі значення які зберігались у видаленій колонці). Натомість, ці інструменти стараються зберегти семантику даних або реорганізувати наявні дані у відповідність з новими вимогами. А так як семантику даних зазвичай неможливо зберегти формально, налаштування інструментів зазвичай ручне.
Ризики та переваги
Міграція схеми дозволяє виправляти помилки та адаптувати дані до змін вимог. Вона є важливою частиною еволюції програмного забезпечення, особливо в гнучкій розробці.
Застосування міграції схеми до бази даних в продакшні — це завжди ризик. Розробницька і тестові бази даних зазвичай менші і охайніші. Дані в них зрозуміліші, і навіть якщо все поламається їх об'єм достатньо малий для того щоб людина могла опрацювати. Бази даних в продакшні зазвичай величезні, старі і повні несподіванок. Несподіванки можуть з'являтись з багатьох причин:
- Пошкоджені дані які були записані старими версіями ПЗ і не були правильно очищені
- Неявні залежності в даних про які всі забули
- Люди які вносять зміни в базу напряму без використання призначених для цього інструментів (міграцій)
- Помилки в інструментах міграції схеми
- Помилки в припущеннях щодо того як дані повинні мігрувати
З цих причин міграції потребують багато дисципліни, ретельного тестування та здорову систему резервного копіювання.
Інструменти
Багато вебфреймворків мають вбудовану підтримку міграцій, наприклад Yii[3], Django[4]
Примітки
Посилання