Django Deployment: Обработка данных в базе данных

Прямо сейчас я использую мерзавца для развертывания Django, которое кажется удовлетворением мне. Моя единственная проблема состоит все еще в том, как обработать данные в базе данных правильно. Например, Я должен часто редактировать данные, прибывающие из prodution сайта локально, и откладывать данные по месту производства (обратите внимание, что я говорю об изменениях данных и не миграциях схемы!). Я думаю, что рабочий процесс должен так или иначе быть похожим на следующее: данные Дампа по месту производства> данные загрузки> данные загрузки в дб> вносят изменения локально>, данные дампа> делают разность для данных>, загружают разность и применяют изменения на место производства.

Важный для меня был бы то, что это также работает на изменения в существующих строках базы данных, удаления и т.д...

Таким образом, если я начинаю экспериментировать с тем самостоятельно: 1. Это будет работать с каким-либо из предложений форматов дампа данных? 2. Кто-либо еще работающий как этот, возможно, уже имея немного (матрица) решения для сценария для этого готового?

11
задан Bernhard Vallant 6 August 2010 в 11:19
поделиться

4 ответа

Таблицы, которые я хочу сбросить / изменить / восстановить, довольно малы и доступны только для чтения через общедоступный интерфейс. Используется следующий подход:

  1. Данные выгружаются на сервер с помощью команды ./manage.py dumpdata.
  2. Затем файл результатов передается в VCS на сервере.
  3. Я извлекаю изменения и выполняю ./manage.py loaddata.
  4. После внесения изменений ./manage dumpdata выполняется локально.
  5. Файл результатов передается в VCS и отправляется обратно на сервер
  6. ./ команда управления loaddata выполняется на сервере

Это можно автоматизировать с помощью Fabric, например

1 + 2 + 3 = fab dump_data: cities , 4 + 5 + 6 = fab push_data: cities

Различия создаются внутри VCS. Этот подход работает не для всех, но я нашел его полезным для простых случаев.

6
ответ дан 3 December 2019 в 09:39
поделиться

Если ваша база данных SQL Server, Red-Gate имеет инструмент сравнения данных, который вы можете использовать. Не уверен, какие инструменты доступны за пределами мира SQl Server.

1
ответ дан 3 December 2019 в 09:39
поделиться

1) Я понимаю, что вы не говорите о миграции схемы. Однако существует такая вещь, как перенос данных . Я использовал Юг , чтобы внести изменения в производственные данные, которые вы описали. Возможно, стоит потратить время на его изучение.

2) IMHO, применение diff - не лучший способ изменить дампы базы данных . Различия и слияние более применимы к исходному коду / тексту, чем к дампу базы данных. Тем не менее, мне любопытно узнать, успешно ли выполнял diff / patch / merge для дампа базы данных.

2
ответ дан 3 December 2019 в 09:39
поделиться

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

Рекомендации, позволяющие избежать этого , если вы можете изменять данные в производственной базе данных :

  1. создать сценарий SQL на основе локальных изменений и выполнить его в производственной базе данных,
  2. создать представление, обрабатывающее изменения данных и выполнить его на производственном веб-сервере

или, если вы не можете изменить данные в производственной базе данных:

  • создать дамп, загрузить и загрузить его локально,
  • изменить данные локально,
  • создать локальный дамп,
  • сравнить удаленный дамп с локальным и создать дамп, содержащий только измененные / добавленные записи ,
  • загрузить его и загрузить

загрузить и загрузить часть в этом случае будет намного быстрее, но вы ' d придется обрабатывать удалений другим способом.

2
ответ дан 3 December 2019 в 09:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: