Как предотвратить запуск устаревшего кода на более новой БД?(в Джанго) - PullRequest
0 голосов
/ 06 августа 2011

Я работаю над проектом с несколькими сервисами, которые используют общую базу данных. Я хотел бы свести к минимуму риск того, что операционные ошибки приводят к повреждению данных, и один из случаев, против которых я хотел бы защититься, - запуск устаревшего кода для новой БД.

То есть я хотел бы как-то пометить БД версией, а затем при запуске все службы старше этой версии вышли из строя. Таким образом, после переноса БД старый код не может быть запущен для более новой БД. Есть ли какие-либо готовые способы, которыми другие люди боролись с этим? Я использую Django, но меня также интересуют решения, используемые другими фреймворками.

Ответы [ 2 ]

1 голос
/ 06 августа 2011

У вас может быть простая таблица, в которой хранится приложение, в сравнении с минимальным номером версии приложения.

Часть ваших сценариев обновления БД будет заполнять эту таблицу.Когда приложение запускается, оно проверяет свою версию на соответствие минимальной версии в таблице и взрывается, если ее версия слишком мала.

Я не знаю ни о каком существующем пакете, который делает это, но это не похоже на большой код для достижения.Мне нравится идея.

0 голосов
/ 06 августа 2011

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

Вы, конечно, захотите запустить это только один раз.

...