Автоматизированное развертывание базы данных с пользовательским контентом (а-ля CMS) - PullRequest
6 голосов
/ 07 сентября 2011

За последние пару лет моя команда все больше и больше увлекается CMS.Мы также все больше и больше вовлечены в постоянную интеграцию.Примирение двух оказалось трудным.Что еще хуже, мы создаем сайты LAMP и .NET, поэтому наши сценарии идеально подходят для обоих типов.

У нас есть четыре среды для каждого сайта: локальная, интеграция, подготовка и производство.Ввод контента и загрузка файлов регулярно происходят на производственной площадке.Развитие очевидно начинается локально и идет своим путем.

Какие методы или приемы я могу применить на своем сервере сборки для автоматической загрузки обновлений данных и схем из сред разработки в рабочую среду без перезаписи содержимого, созданного пользователем?И наоборот, как (и когда) я могу автоматически выводить пользовательские данные в среды разработки?

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

В вашей базе данных будет 3 вида вещей, о которых вам нужно беспокоиться.

1) Схема, которую можно определить в DDL.2) Статические данные или данные поиска, которые могут быть определены в DML.3) Динамические (или пользовательские) данные, которые также могут быть определены в DML.

Обычно изменения в (1) и (2) должны просто перейти к производству с кодом, на который они взаимно зависят.(3) никогда не должно идти вверх, но может быть скопировано в среды разработки, если они в то время синхронизированы с производственными средами.

Конечно, это намного сложнее, чем это.Чтобы получить (1), может потребоваться преобразование существующей схемы / DDL в конкретные операторы alter, а также может потребоваться манипулирование данными, если типы данных или местоположения меняются.Для получения (2) требуется синхронизация со сборкой кода, которая может стать сложной в сложных средах.

Существует множество инструментов, и если вам требуется автоматизация, вам, возможно, понадобится совет от кого-то, кто знаком с ними.*

Я использую очень простую схему, где все изменения схемы отражаются в сценарии сборки SQL, а также добавляются в сценарий изменения SQL, который включает в себя весь SQL, необходимый для выполнения любых необходимых преобразований.Это хорошо работает для меня, но мой сценарий очень прост (1 человек, 1 сервер) и поэтому нетипичен.

Однако ключом к любому успеху является определение работы, необходимой для внесения изменений в момент внесения изменений.,Наивным методом простого изменения БД разработки и последующего исправления во время развертывания является катастрофа.

0 голосов
/ 10 сентября 2011

Для А) лучше всего использовать систему приоритетов. Где ваш контент «по умолчанию», а пользовательский контент «переопределяет» его. И этот контент находится в двух разных местах. Таким образом, вы обновляете свои вещи без шансов иметь дело с каким-либо процессом слияния. Ваши данные могут находиться в другом каталоге или по-разному помечаться в БД. Недостатком этого является то, что вы не можете просто использовать базовые функциональные возможности сервера коробки для обработки данных, если вы не выполняете фактическое отображение при генерации ссылок.

т.е. вы можете либо перехватить /site/images/icon.png и подать либо /site/images/default/icon.png, либо /site/images/client/icon.png, либо когда вы выписываете страницы, вы можете выполнить проверку там и отправьте правильные URL-адреса, чтобы сервер мог обслуживать их напрямую.

Во-вторых, когда вы можете использовать данные клиентов, это скорее юридическая проблема ИС, с которой вам нужно будет поговорить с клиентом о том, желают ли они и даже б) могут делиться своими данными. довольствоваться вами. После этого технология проста.

...