У нас есть много файлов миграции базы данных — должны ли мы их сохранить?

У нас есть около 100 файлов миграции базы данных. Многие из них вносят необратимые изменения в схему. Существуют также более поздние миграции, которые изменяют или удаляют таблицы, созданные в предыдущих миграциях.

Мы создаем новые базы данных прямо из файла schema.rb, поэтому нам было интересно, есть ли смысл сохранять полный набор миграций?

Мы создадим новую миграцию, основанную на нашем существующем schema.rb.


person roo    schedule 17.02.2012    source источник


Ответы (2)


Да, то, что вы предлагаете, считается лучшей практикой.

Я делал это со своими старыми приложениями несколько раз. Вы захотите где-нибудь создать резервную копию своих миграций, пока не будете удовлетворены тем, что все в порядке, конечно, это важная часть обслуживания приложения — если у вас много старых миграций, может потребоваться вечность, чтобы выполнить db:reset или запустить новую среду разработки.

person Mark Tabler    schedule 17.02.2012
comment
Мы попытались найти где-нибудь, где об этом говорили - знаете ли вы какие-либо сайты или ресурсы, в которых подробно рассказывается о передовых методах работы с рельсами/базами данных? - person roo; 17.02.2012
comment
@roo Я видел несколько сайтов с передовыми практиками, но ни один из них не занимается конкретно этой проблемой. Я воспринял это как передовую практику после обсуждения с некоторыми коллегами-рубистами на местном хакатоне; вряд ли научный, но, безусловно, рецензируемый. :) Если бы мне пришлось аргументировать этот случай как наилучшую практику, я бы сказал, что нет смысла загромождать любую вашу кодовую базу, включая миграции, историей, которую никто не может использовать. Если кто-то хочет прочитать историю базы данных для собственного образования, Git поможет вам; нет причин для того, чтобы он был в рабочей ветке. - person Mark Tabler; 17.02.2012
comment
Да, мы тоже примерно к такому же выводу пришли. Приятно знать, что у других был такой же разговор :) - person roo; 17.02.2012
comment
Вы когда-нибудь находили какие-либо «передовые практики», в которых подробно рассказывается об этом вопросе? - person stephenmurdoch; 18.01.2014
comment
Аргумент, что db:reset будет принимать навсегда, неверен, rake db:reset и rake db:setup уже используют schema.rb (или structure.sql). Тем не менее: удаление старого беспорядка имеет смысл :) - person nathanvda; 01.06.2014

Я использую исключительно rake db:setup и rake db:reset (никогда rake db:migrate) для установки новой базы данных на рабочий сервер или на новую машину для разработки. Эти команды уже используют schema.rb или structure.sql для воссоздания базы данных.

Тем не менее, очень легко сделать копию schema.rb, использовать ее в качестве новой отправной точки и удалить все старые миграции.

Я предпочитаю сохранять свои миграции для исторических целей, но это дело вкуса.

person nathanvda    schedule 01.06.2014