Розміщення рівня доступу до даних


9

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

Запитання: Що було б рекомендованим рішенням / процесом, який би дозволяв швидше / спритний розвиток, зберігаючи цілісність даних, а також миролюбність і щастя серед команди?


Мене тут хвилює питання, чому вам потрібно було додати стовпець та які правила бізнесу пов’язані з цим стовпцем. Ви можете знайти шляхи навколо нього і врешті-решт додати стовпчик, але що робити, якщо ви використовували неправильний тип даних, параметри нуля, визначення індексу, а ще гірше, що якщо стовпець не повинен належати до таблиці або якщо вам взагалі відсутня таблиця перетину? Я думаю, що хтось повинен нести відповідальність за вплив бізнесу на визначення нових даних, а також хтось повинен відповідати за вплив зміни бази даних на код (крім DBA). 2 ролі може грати одна і та ж людина.
NoChance

Потрібна DBA для роботи у власному відділенні. Не надайте їм прав на отримання головної галузі розвитку. По черзі створіть свою власну відділення розробників та об'єднайте свої зміни за потребою
SoylentGray

Відповіді:


11

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

У кожного розробника є своя база даних, в яку можуть бути внесені зміни. Ці зміни потім передаються назад (як набір змін) до DBA, який реалізує їх у головній базі даних, тому він все ще бере участь у процесі, він, мабуть, найкраще знає про структури та потреби бази даних у будь-якому разі. Я думаю, що це найкращий підхід, оскільки він задовільний для всіх людей, які беруть участь у процесі, а також він дуже спритний.

Ви можете змінити DAL аналогічним чином. Просто внесіть зміни та надайте набір змін для DBA, коли ви думаєте, що ви закінчили, щоб він міг переглянути його та об'єднати його зі своїм господарем.


1
oooh мені подобається ... це мій перший Q тут, тому я не можу підняти, але у вас є впевнений результат, можливо, / можливо, відповідь теж, але мені подобається трохи почекати, щоб побачити, що кажуть інші люди
spaghetticowboy

Проблема в цьому полягає в тому, що розробник виконує всю свою роботу за припущенням, що dba затвердить.
HLGEM

@HLEGM: На мій досвід, це рідкісний випадок, більшість випадків DBA затверджує його або лише незначно змінює. Це все-таки краще, ніж непрацюючі дивовижі сидіти навколо. Більше того, це, ймовірно, призведе до найкращого рішення, якщо DBA і dev - це розумні люди.
Сокіл

+1 для пояснення, чому це чудова стаття, а не просто розміщення посилання.
JeffO

@HLGEM - Я думаю, що це вимагає від обох сторін виправдати те, що вони роблять. DBA має отримати користь від сумнівів у питаннях db, але обидва повинні відповісти комусь іншому, хто мав би остаточне рішення.
JeffO

3

Ну, коли я роблю справу з DBA, мені було відомо, що я все закриваю, щоб чортові брудні програмісти не змогли домогтися їх. Всі думають, що вони знають, як це зробити краще, і вони «підправляють» речі, щоб полегшити їх собі, і це спричиняє нечесний безлад.

Інша альтернатива - кинути його широко відкритим, і дозволити програмістам блискавити по ньому деякий час, а потім заскочити і навести порядок, коли все починає накручуватися ... Це, безумовно, "спритніше", але це може бути справжній кошмар залежно від того, що треба вирізати чи змінити ... Асоціація оборонців часто краще розуміє проект у цілому, а деякі зміни, які здаються нешкідливими, можуть бути проблематичними.

Якщо він буде єдиним воротарем, йому потрібно або мати фіксовану специфікацію, або бути в змозі "продати" своє бачення решті бісів.


ми досить чортово брудні ... а іноді і ми досить чортові нетерплячі, і нам потрібно зробити речі самі
spaghetticowboy

@spaghetti: Так ... я, мабуть, гірший, ніж більшість, тому що я багато працював над DBA, тому у мене вдвічі більше "я знаю, як це зробити краще!" ніж більшість програмістів. Я скажу так: із базами даних набагато важливіше це правильно одержати рано ... Якщо ви продовжуєте додавати до проекту пізно, це майже напевно спричинить проблеми.
Satanicpuppy

3

Існує головна проблема, яка перевершує будь-яку іншу проблему:

  1. Чому підрядник завжди перевіряє код?

Чому йому дозволено це робити? Ніхто не повинен перевіряти файл, якщо вони активно не вносять зміни. Повинна бути командна політика щодо оформлення замовлень.

Підрядник (їм це подобається чи ні) працює в складі команди, а іноді іншим членам команди може знадобитися внести зміни. Це питання зв’язку. На жаль, немає автоматизованого способу вирішити цю проблему зв'язку.


1

Замість горизонтальних шарів я вважаю за краще працювати в силосах поперек шарів.

Таким чином жодна людина / команда не може блокувати таким чином.

Це також означає, що ви розробники багатокваліфіковані і здатні набагато легше переміщувати функції.

Звичайно, є розділи (дизайн інтерфейсу та дизайн баз даних), які можуть потребувати більш спеціалізованих робіт, але ви розумієте.


1

Просто, якщо ви ще цього не зробили, у вас повинні бути 3 середовища:

  • Середовище розвитку
  • Навколишнє середовище QA
  • Виробниче середовище

Середовище розробки має адмініструвати ваші розробники.

Ви також можете додати середовище RC.

Ще одна відповідь: Якщо декілька середовищ неможливі, ви можете розробитись із насмішкуваного сховища ... Таким чином ви будуєте свої моделі, а потім ваш підрядник відповідає за те, щоб ваші моделі відповідали БД. Зрештою, це краще, оскільки це звільняє ваших розробників від турботи про базу даних.


1
В ОП йдеться про код, який перевіряється. Різні середовища не впливали б.
NotMe

1

У вас проблема, здається, є однією з робочих сил. Це доцільно і необхідно, щоб усі можливі зміни бази даних були затверджені фахівцем з бази даних. Якщо нинішня людина не може вчасно не відставати від роботи, вам потрібно більше фахівців із бази даних.


+1: Це також може бути причиною проблеми. Багато компаній мають занадто мало DBA.
Сокіл

1

Це питання управління як настільки технічне.

Безумовно, є вагомі причини для DBA (незалежно від того, на місці чи виходу, підрядника чи працівника), щоб уникнути розробників від внесення будь-яких змін у базу даних.

Однак головна проблема, яку ви визначили, - це наявність. Чи знає ваш менеджер, що на цю людину витрачається витрачений час / гроші? Якщо ні, то, можливо, ви захочете вияснити, як усі сидять.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.