СУБД можно разделить на 2 группы:
- С заранее определенной схемой данных (определенным списком таблиц и их колонок)
- И бессхемные
СУБД с жесткими схемами и шустрее и лучше оптимизируются.
Но обладают очень неприятным недостатком - вы не можете вот так легко и просто начать туда записывать новый вид данных, не предусмотренный при начальном создании БД.
Процесс преобразования БД, при котором меняется схема (таблицы и их колонки; вспомогательные вещи такие как индексы и пр.) - и называется миграцией.
Причем важный момент - изменения в структуру базы данных могут вноситься, когда она уже давно существует и наполнена важной информацией, которую нельзя потерять, что еще больше затрудняет процесс.
И еще важный момент:
Как правило та или иная версия программы рассчитана на работу или со старой или с новой схемой базы данных. Не одновременно со старой и новой. То есть перед, тем как вы начнете эксплуатировать новую версию - вам обязательно нужно произвести миграцию. И после того как произведете миграцию - уже нельзя будет использовать старую версию программы. Что еще дополнительно усложняет процедуру перехода на новую версию программы.