Міграція бази даних: відмінності між версіями

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[перевірена версія][перевірена версія]
Вилучено вміст Додано вміст
SOMBot (обговорення | внесок)
м ізольована стаття кільце2
Рядок 45: Рядок 45:
* [[Flyway]]
* [[Flyway]]
* {{iw|Liquibase}}
* {{iw|Liquibase}}

Багато веб-фреймворків мають вбудовану підтримку міграцій, наприклад [[Yii]]<ref>http://www.yiiframework.com/doc/guide/1.1/uk/database.migration</ref>, [[Django]]<ref>https://docs.djangoproject.com/en/1.11/topics/migrations/</ref>


== Зноски ==
== Зноски ==

Версія за 16:15, 13 листопада 2017

Міграція бази даних (також міграція схеми) (англ. schema migration, database migration, database change management[1][2]) - це керування інкрементними, зворотніми змінами схеми реляційної бази даних . Міграція схеми виконується над базою даних коли необхідно оновити, або повернути схему бази даних до якоїсь новішої чи старішої версії.

Міграції виконуються програмно за допомогою інструменту міграцій (англ. schema migration tool). При виклику інструменту міграції з вказуванням бажаної версії схеми, інструмент автоматично застосовує або відкочує міграції в правильній послідовності аж поки не приведе базу даних до бажаного стану.

Більшість інструментів міграції стараються мінімізувати вплив змін схеми на існуючі дані всередині бази. Проте, загалом збереження даних не гарантується, бо зміни схеми такі як видалення колонки таблиці можуть знищувати дані (всі значення які зберігались у видаленій колонці). Натомість, ці інструменти стараються зберегти семантику даних або реорганізувати існуючі дані у відповідність з новими вимогами. А так як семантику даних зазвичай неможливо зберегти формально, налаштування інструментів зазвичай ручне.

Ризики та переваги

Міграція схеми дозволяє виправляти помилки та адаптувати дані до змін вимог. Вона є важливою частиною еволюції програмного забезпечення, особливо в гнучкій розробці.

Застосування міграції схеми до бази даних в продакшні - це завжди ризик. Розробницька і тестові бази даних зазвичай менші і охайніші. Дані в них зрозуміліші, і навіть якщо все поламається їх об'єм достатньо малий для того щоб людина могла опрацювати. Бази даних в продакшні зазвичай величезні, старі і повні несподіванок. Несподіванки можуть з'являтись з багатьох причин:

  • Пошкоджені дані які були записані старими версіями ПЗ і не були правильно очищені
  • Неявні залежності в даних про які всі забули
  • Люди які вносять зміни в базу напряму без використання призначених для цього інструментів (міграцій)
  • Помилки в інструментах міграції схеми
  • Помилки в припущеннях щодо того як дані повинні мігрувати

З цих причин міграції потребують багато дисципліни, ретельного тестування та здорову систему резервного копіювання.

Міграція схеми в гнучкій розробці

Інструменти

Багато веб-фреймворків мають вбудовану підтримку міграцій, наприклад Yii[3], Django[4]

Зноски

Посилання