Це завдання програмістів проектувати базу даних?


16

Я був програмістом останні шість років. Протягом своєї кар’єри я працював над багатьма веб-додатками.

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

Але чи ми, як програмісти, повинні створити всю базу даних з нуля, коли нам доведеться створити нову програму, де дані є настільки важливими та мають безладні вимоги зі складною моделлю даних?

Хіба це не в інтересах програми та компанії, щоб це зробити експертом?

Я не намагаюся тікати від проектування бази даних, але це так важливо, щоб вийти правильно.


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

9
"Експерт з питань DB" та "програміст" не є взаємовиключними. Ви хочете, щоб експерт розробив базу даних. Цей експерт може бути програмістом.
Лорд Тидус

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

@Job не міг сказати це краще :)
Сонго

Відповіді:


32

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

Хоча дизайн БД є досить центральною частиною програми, не важливіше "правильно", ніж інші центральні частини, від яких буде залежати багато іншого коду.

І так само, як код, думка про те, що ти змусиш якогось супер-експерта сісти і подумати важко протягом тижня, а потім записати ідеальний дизайн, який ніколи не потрібно буде змінювати, - ілюзія. Дизайн БД може і змінюватись по мірі розробки програми.

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


Скажіть, будь ласка, різницю між DBA та розробником бази даних, коли мова йде про дизайн баз даних?
Сонго

@Songo: ІМО не має ніякої різниці.
Майкл Боргвардт

1
справді? Я завжди думав, що DBA більше стосується запуску бази даних та її налаштування, тоді як розробник баз більше переймається моделюванням та дизайном баз даних!
Сонго

3
Адміністратор бази даних та розробник баз даних - це дві різні речі. Малі та середні компанії зазвичай не знають різниці. Під час роботи у великій корпоративній системі у вас можуть бути dba, розробник бізнес-аналітики (служби аналізу, сховища даних) та розробник баз даних. Для нас це дуже різні робочі місця.
CodeART

1
@CodeWorks: Вони, безумовно, різні, але IMO є організаційним антипаттером, щоб посилити надмірну спеціалізацію такого роду, оскільки це робить проблемою співпрацю між людьми, які знають лише їх спеціалізацію.
Майкл Боргвардт

4

Програмістам прийнято робити базу даних. Дуже часто. На жаль, багато програмістів не мають досвіду роботи з БД. Вони не розуміють, як звітувати з великими даними, поняттями даних, зірками, схемами тощо. Деякі навіть не розуміють основ нормалізації.

Якщо один чоловік має навички робити все на експертному рівні, це робить дуже хороший продукт. Армія з однією людиною може зробити те, що може зробити команда з 10 чоловік за частину часу, в 1000 разів кращої якості. Не перебільшення.

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


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

1
"Не перебільшення". Це, якщо ви не зможете якось кваліфікувати цю претензію.
Бурхан Алі

4

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

Далі, якщо ви подивитесь на Entity Framework Code, по-перше, це говорить про те, що та сама думка, яка стосується побудови моделі даних низького рівня, створить розумну схему - або, принаймні, натяк на одну.

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

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

Хороший програміст повинен приносити різноманітний набір навичок - він повинен бути більше ніж [вставте мод на вибір], і я б включив розуміння баз даних у цьому портфоліо.


4

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

Зважаючи на це, особливо для великих додатків, важливо вперше отримати "правильну" базу даних (схема, індексація тощо). Якщо компанія має доступ до кваліфікованої DBA, це завдання повинно потрапити на їх табличку; загалом вони будуть більш кваліфікованими. Потенційно перегляд / обговорення слід проводити з провідним розробником, який матиме доступ та працювати з базою даних на стороні клієнта, щоб не було сюрпризів. Якщо немає DBA, програміст проектує базу даних.


1
Адміністратори бази даних не обов'язково є аналітиками даних. Для налаштування бази даних та нормалізації реляційних даних відповідно потрібні різні набори навичок.
Гілберт Ле Блан

1

Тут я бачу два питання:

  • Чи повинні розробники баз даних моделювати бізнес-логіку?
  • Чи повинен я знати, як зберігати дані в базі даних?

Бізнес-логіка

  • Логіка бізнесу не живе в базі даних. Це концептуальна модель, яка повинна бути незалежною від інших шарів у вашій системі.

  • Ви завжди можете замінити одну базу даних на іншу, або навіть можете вирішити використовувати рішення NoSQL для вирішення потенційних проблем продуктивності.

  • Розробники баз даних можуть бути задіяні під час моделювання, але зазвичай це роблять люди, які мають повне розуміння проблемної області. У нашій організації це роблять розробники на стороні сервера.

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

Зберігаються дані

  • Ви повинні знати, як зберігати дані на різних носіях, включаючи рішення SQL та NoSQL.

  • Рівень необхідної експертизи буде залежати від розміру системи, над якою ви працюєте.

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

Підсумовувати:

  • Модель домену - це основа вашої системи, а не база даних.

  • Якщо ви працюєте в невеликій компанії над відносно невеликим проектом, то, ймовірно, вам слід створити базу даних самостійно.

  • Якщо ви працюєте у великій компанії за корпоративною системою, то, ймовірно, має сенс передати роботу експертам домену.

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