Обновить

Как правильно откатывать миграции? Если коротко, то никак.

В продакшене миграции могут идти только вперед. Какого? Откат миграции во время ролбека (при неудачном деплое) во-первых сильно усложняет всю процедуру, во-вторых, в теории, может ее некисло замедлить, уже не говоря про потенциальные локи на время отката. На фоне этого возможны ошибки, которые приведут всю систему в неконсистентное состояние.

Ролбек, в идеале, это просто переключение с одной версии кода на другую. Но ведь тогда возможны ошибки связанные с изменениями в базе? Если делать через жопу, то возможны. При правильном подходе, база всегда обратно совместима как минимум на одну версию. Только в этом случае мы можем обеспечить и бесшовный деплой (zero downtime deploy) и практически моментальный откат.

А это значит, что нельзя менять тип у колонок (если тип сужается), нельзя менять именования таблиц и полей. Если это все таки нужно, то существует немало техник, позволяющих сделать переход через создание новых сущностей и синхронизацией либо через код либо через саму базу (например с помощью триггеров). По этой теме даже написали целую книгу "Refactoring Databases: Evolutionary Database Design".

Получается, что любые ошибки в базе будут только накапливаться? Не совсем. Обратная совместимость обычно нужна только на текущую и следующую версию. Если у нас не коробка, а облачное решение, то одновременно могут работать только две версии. В таком случае, мы без проблем можем писать любые миграции, которые удаляют и меняют все что угодно, что уже не используется. Заметьте, это не откат, а новые миграции.

А вот в разработке откат миграции конечно же удобен. Пока код еще не слит в основную ветку или лежит только локально, то мы без проблем можем откатить и удалить миграции, которые сами же недавно создали, но в процессе проработки поняли что они нам не нужны или их нужно переделать.

Больше про разработку в моем телеграм-канале организованное программирование

Теги:
Всего голосов 8: ↑6 и ↓2+5
Комментарии2

А все-таки Qwen3.8-27B — думает меньше и быстрее чем 3.6

В пятницу вышла Qwen3.8-27B. Скажу честно, с середины мая я отказался от подписок и сидел исключительно на локальной Qwen3.6 (для всех своих домашних проектов), у меня даже статья была на эту тему. Поэтому мне было очень интересно увидеть на что способна новая Qwen3.8-27B.

Тут на Хабре было несколько статей о том, что 3.8 слишком долго думает и что у 3.8 слишком много галлюцинаций (что, как мне кажется, не совсем корректно), поэтому я решил поделиться настройками, которые работают (у меня), надеюсь они будут кому-нибудь полезны. Qwen3.8-27B превзошла мои самые смелые ожидания, и уж что-что, а задумчивой ее никак не назовешь.

А все-таки Qwen3.8-27B — думает меньше и быстрее чем 3.6

Публикации