Подтвердить что ты не робот

Должен ли у нас отдельный экземпляр базы данных для каждого разработчика?

Каков наилучший способ для разработки приложения на базе базы данных? Мы можем иметь два подхода.

  • Одна общая база данных для всех разработчиков.
  • Отдельная база данных для всех разработчиков.

Каковы плюсы и минусы каждого? И какой из них лучше?

Изменить: Более чем один разработчик должен обновить базу данных, и у нас уже есть SqlExpress 2005 на каждой машине для разработчиков.

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

4b9b3361

Ответ 1

Оба -

Мне нравится одна база данных, изменения которой тестируются, прежде чем идти в прямом эфире или перейти в "формальную" тестовую среду. Это ваша проверка работоспособности вашего разработчика; он остается в курсе живой системы, и он всегда учитывает изменения друг друга. Правило должно заключаться в том, что изменения здесь не происходят, если они могут сломать что-то еще.

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

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

Ответ 2

Общая база данных

  • Simpler
  • Меньше случаев "Работает на моей машине".
  • Сила интеграции
  • Проблемы обнаруживаются быстро (быстро сбой)

Индивидуальные базы данных

  • Никогда не влияйте на других разработчиков, но это тоже плохо, в непрерывной интеграции

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

У нас есть отдельные серверы разработки (web), но они имеют одну и ту же базу данных. Наши разработчики имеют возможность использовать свою собственную базу данных, поскольку они знают, как ее настроить, и будут делать это иногда, но только временно. Норма, для нас, заключается в совместном использовании базы данных.

Ответ 3

Думаю, что я выброшу это, но почему бы не позволить каждому разработчику разместить собственный экземпляр SQL Server Developer на своих рабочих столах, а затем иметь общий сервер для каждой из других сред (разработка, QA и prod)? Я думаю, что даже базовая MSDN, поставляемая с Visual Studio Pro (если вы ее выберете), включает лицензию для разработчика SQL Server.

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

EDIT: Я должен добавить, что экземпляр рабочего стола позволяет разработчикам делать то, что он обычно использует администраторами баз данных в общих средах. Это включает создание базы данных, резервное копирование/восстановление, профилировщик и т.д. Эти вещи не являются существенными, но они позволяют разработчику стать намного более продуктивными, одновременно уменьшая требования, предъявляемые к вашим администраторам баз данных.

Общая среда полностью необходима для тестирования - я бы не рекомендовал переходить с рабочего стола на производство. Но вы можете добавить так много, позволяя разработчикам иметь 100% -ный контроль над определенной базой данных (включая изоляцию от других) с относительно небольшими затратами.

Ответ 4

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

В реальном мире я нашел следующий подход довольно удовлетворительным:

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

Вот еще несколько пунктов:

Если два разработчика (две команды) работают над изменениями, которые могут влиять друг на друга, они должны выполнять свои задачи самостоятельно, а затем интегрировать/объединить и протестировать. Для этого гораздо лучше иметь отдельные среды разработки (если только они не должны работать вместе, и в этом случае я считаю их частью одной и той же команды, но они могут работать с собственными копиями базы данных и совместно использовать ее, если необходимо)

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

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

Тем не менее, это здорово, если вы можете делиться тестовыми примерами, так что способность сбрасывать/восстанавливать базу данных легко и быстро является большим плюсом.

EDIT:
Все вышеизложенное предполагает, что наличие копии на локальной машине всей системы для целей тестирования возможно (размер, производительность, лицензии и т.д.).

Ответ 5

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

Ответ 6

Я бы выбрал решение # 1: Одна общая база данных для всех разработчиков.

Pros

  • Менее дорого для инфраструктуры;
  • При обновлении базы данных разработки требуется только один дамп;
  • Каждый развивается с одинаковыми данными, поэтому он тесно представляет производственную среду;

против

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

Что касается решения # 2: одна независимая база данных для каждого из разработчиков;

Pros

  • Это может быть полезно для разработки новых функций, когда разработка требует изоляции;

против

  • Более дорогая для компании (инфраструктура, лицензии...);
  • Умножение проблем, вызванных энергичной средой разработки изоляции (работает в devloper environement, не интегрировано);
  • Умножение дампов администраторами баз данных той же копии из рабочей среды.

Учитывая вышеизложенное, я бы рекомендовал в зависимости от размера вашей компании:

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

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

Ответ 7

Мы делаем оба:

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

Что приятно с этим подходом, так это то, что, когда наш "источник правды" проверяется на исходный контроль, все изменения базы данных автоматически распространяются на других разработчиков, когда они восстанавливают и восстанавливают. Это хорошо работает для нас.

Ответ 8

Простой ответ:

Имейте одну базу данных разработки, и если разработчики захотят их самостоятельно, они могут просто запустить свой собственный экземпляр на своих собственных машинах. Просто не забудьте проверить/опубликовать на общих.

Ответ 9

Лучшим способом является одиночная база данных на сервере Test/QA и одна база данных (возможно, на локальном компьютере разработчика) для каждого разработчика (поэтому 10 разработчиков работают с базами данных 10 + 1).

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

Кроме того, подход с несколькими базами данных упрощает схему сохранения базы данных в системах управления версиями. Мы сохраняем скрипты создания базы данных в SVN.

Мы используем подход, описанный здесь: http://www.sqlaccessories.com/Howto/Version_Control.aspx

Ответ 10

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

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

Ответ 11

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

Ответ 12

Самые большие проблемы с разработчиками, имеющими собственные базы данных:

  • Сначала маловероятно, чтобы размер реальной производственной базы данных (если вы берете все базы данных, которые нам нужны для работайте здесь, они займутся несколько сотен гигабайт пространства, я не иметь того, что доступно на моем машина), это приводит к тому, что плохой код написанное, которое никогда не будет работать на большая база данных для производительности причины. Код SQL никогда не должен быть написан против набора данных, значительно меньшего, чем тот, что был на prod.
  • Во-вторых, разработчики, которые используют свои собственные базы данных создают проблемы, когда они проводят долгое время что-то, а затем узнать только после того, как они сливаются с реальной datbase что это влияет на что-то другое. Вы найти этот материал намного быстрее, когда вы делиться окружающей средой. Таким образом, существует в конечном итоге время.
  • Третий разработчик, работающий над вещи должны знать об изменениях вы делаете, это повлияет на их изменение.

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

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

Я не вижу никаких преимуществ в использовании отдельных баз данных.