Прямо сейчас я использую мерзавца для развертывания Django, которое кажется удовлетворением мне. Моя единственная проблема состоит все еще в том, как обработать данные в базе данных правильно. Например, Я должен часто редактировать данные, прибывающие из prodution сайта локально, и откладывать данные по месту производства (обратите внимание, что я говорю об изменениях данных и не миграциях схемы!). Я думаю, что рабочий процесс должен так или иначе быть похожим на следующее: данные Дампа по месту производства> данные загрузки> данные загрузки в дб> вносят изменения локально>, данные дампа> делают разность для данных>, загружают разность и применяют изменения на место производства.
Важный для меня был бы то, что это также работает на изменения в существующих строках базы данных, удаления и т.д...
Таким образом, если я начинаю экспериментировать с тем самостоятельно: 1. Это будет работать с каким-либо из предложений форматов дампа данных? 2. Кто-либо еще работающий как этот, возможно, уже имея немного (матрица) решения для сценария для этого готового?
Таблицы, которые я хочу сбросить / изменить / восстановить, довольно малы и доступны только для чтения через общедоступный интерфейс. Используется следующий подход:
Это можно автоматизировать с помощью Fabric, например
1 + 2 + 3 = fab dump_data: cities
, 4 + 5 + 6 = fab push_data: cities
Различия создаются внутри VCS. Этот подход работает не для всех, но я нашел его полезным для простых случаев.
Если ваша база данных SQL Server, Red-Gate имеет инструмент сравнения данных, который вы можете использовать. Не уверен, какие инструменты доступны за пределами мира SQl Server.
1) Я понимаю, что вы не говорите о миграции схемы. Однако существует такая вещь, как перенос данных . Я использовал Юг , чтобы внести изменения в производственные данные, которые вы описали. Возможно, стоит потратить время на его изучение.
2) IMHO, применение diff - не лучший способ изменить дампы базы данных . Различия и слияние более применимы к исходному коду / тексту, чем к дампу базы данных. Тем не менее, мне любопытно узнать, успешно ли выполнял diff / patch / merge для дампа базы данных.
Если вы загружаете> изменяете> выгружаете дамп целиком, вы должны быть готовы к потере данных. Любые данные, которые создаются / изменяются в процессе производства, когда вы загружаете, изменяете или выгружаете измененные данные , будут потеряны .
Рекомендации, позволяющие избежать этого , если вы можете изменять данные в производственной базе данных :
или, если вы не можете изменить данные в производственной базе данных:
загрузить и загрузить часть в этом случае будет намного быстрее, но вы ' d придется обрабатывать удалений другим способом.