Богартинг уровня доступа к данным

9

Ситуация: dba является сторонним подрядчиком, который хранит весь код DAL в TFS. Было бы неплохо, как разработчик внешнего интерфейса, иметь возможность добавлять столбцы, настраивать процессы и все такое, не полагаясь на то, что этот чувак ответит на ваши письма, чтобы выполнить свою работу.

Вопрос: Каким было бы рекомендуемое решение / процесс, который позволил бы более быстрое / гибкое развитие, сохраняя при этом целостность данных, а также мир, любовь и счастье в команде?

spaghetticowboy
источник
Меня беспокоит, почему вам нужно было добавить столбец и какие бизнес-правила связаны с этим столбцом. Вы можете найти способ обойти это и в конечном итоге добавить столбец, но что, если вы использовали неправильный тип данных, нулевые настройки, определение индекса, что еще хуже, если столбец не должен принадлежать таблице или если вы вообще пропускаете таблицу пересечений? Я думаю, что кто-то должен нести ответственность за влияние новых данных на бизнес, а также кто-то должен нести ответственность за влияние изменения базы данных на код (кроме администратора баз данных). 2 роли могут играть один и тот же человек.
NoChance
Требуется администратор БД Для работы в собственной ветке. Не давайте им права на оформление покупки в основной ветке разработки. Поочередно создайте свою собственную ветку разработчика и объедините ваши изменения по мере необходимости.
SoylentGray

Ответы:

11

Мартин Фаулер и Прамод Садалаж написали отличную статью на эту тему.

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

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

сокол
источник
1
оооо, мне нравится ... это мой первый вопрос здесь, так что я пока не могу высказать свое мнение, но вы наверняка получите один комментарий ... может быть /, вероятно, ответ тоже, но мне нравится немного подождать, чтобы увидеть, что говорят другие люди
spaghetticowboy
Проблема в том, что разработчик выполняет всю свою работу, предполагая, что dba одобрит.
HLGEM
@ HLEGM: По моему опыту, это редкий случай, в большинстве случаев администратор БД одобряет или изменяет его лишь незначительно. Это все же лучше, чем сидеть без дела. Более того, это, вероятно, приведет к лучшему решению, если администратор и разработчик - разумные люди.
Сокол
+1 за объяснение, почему это отличная статья, а не просто опубликовать ссылку.
JeffO
@HLGEM - я думаю, что обе стороны должны оправдать свои действия. Администратор БД должен получить преимущество от сомнений в вопросах БД, но оба должны ответить кому-то еще, кто примет окончательное решение.
JeffO
3

Wellll, когда я делаю дело с DBA, я, как известно, блокирую все, чтобы чертовски грязные программисты не могли использовать свои возможности. Все думают, что знают, как это сделать лучше, и «подправляют» вещи, чтобы им было легче, и это порождает безобразный беспорядок.

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

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

Satanicpuppy
источник
мы чертовски грязные ... а иногда мы чертовски нетерпеливы, и нам нужно самим что-то делать
spaghetticowboy
@ spaghetti: Да ... я, наверное, хуже, чем большинство, потому что я проделал много работы с DBA, поэтому у меня вдвое больше "Я знаю, как это сделать лучше!" чем большинство программистов. Я скажу так: с базами данных гораздо важнее сделать это как можно раньше ... Если вы продолжите добавлять до конца в проекте, это почти наверняка вызовет проблемы.
Satanicpuppy
3

Существует серьезная проблема, которая заменяет любую другую проблему:

  1. Почему подрядчик всегда проверяет код?

Почему ему разрешено это делать? Никто не должен проверять файл, если он не вносит правки. Там должна быть командная политика о проверках.

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

Джордж Стокер
источник
1

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

Таким образом, ни один человек / команда не может блокировать таким образом.

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

Конечно, есть разделы (дизайн пользовательского интерфейса и дизайн БД), которые могут потребовать больше специальной работы, но вы поняли идею.

Ozz
источник
1

Просто, если вы этого еще не сделали, у вас должно быть 3 среды:

  • Среда разработки
  • QA Environment
  • Производственная среда

Среда разработки должна администрироваться вашими разработчиками.

Вы также можете добавить RC-среду.

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

АЕК
источник
1
ОП говорит о проверенном коде. Различные среды не будут иметь влияния.
NotMe
1

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

HLGEM
источник
+1: это также может быть причиной проблемы. У многих компаний слишком мало администраторов баз данных.
Сокол
1

Это вопрос управления, а не только технический.

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

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

Не я
источник