Это работа программистов для разработки базы данных?

16

Я был программистом в течение последних шести лет. На протяжении всей своей карьеры я работал над многими веб-приложениями.

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

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

Разве это не в интересах приложения и компании, чтобы сделать это экспертом?

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

ashishjmeshram
источник
2
Ответ - да. Правильный ответ поможет вашему руководству изменить свое мнение? Я так не думаю. И с другой стороны, это будет очень хороший опыт. Почему бы не попробовать создать схему данных?
eminemence
9
«Эксперт по БД» и «программист» не являются взаимоисключающими. Вам понадобится эксперт для разработки базы данных. Этот эксперт может быть программистом.
Лорд Тидус
10
Это моя работа, как солдат, чтобы знать, как ездить на лошади? Это может или не может быть частью обучения, но если по какой-то причине ваше выживание зависит от лошади, то ответ очевиден. Если описание вашей работы меняется, что удивительно, то, возможно, посмотрите в другом месте. Лично я бы приобрел эти навыки дб только потому, что не люблю зависеть от других.
Работа
@Job не мог бы сказать это лучше :)
Songo

Ответы:

32

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

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

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

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

Майкл Боргвардт
источник
Не могли бы вы рассказать мне разницу между администратором базы данных и разработчиком базы данных, когда речь идет о разработке базы данных?
Сонго
@ Сонго: ИМО не должно быть никакой разницы.
Майкл Боргвардт
1
действительно? Я всегда думал, что администратор баз данных больше заботится о работе с базой данных и ее настройке, а разработчик баз данных больше заботится о моделировании и дизайне баз данных!
Сонго
3
Администратор базы данных и разработчик базы данных - это две разные вещи. Малые и средние компании обычно не знают разницы. При работе в крупной корпоративной системе у вас могут быть dba, разработчик бизнес-аналитики (службы анализа, хранилище данных) и разработчик базы данных. Для нас это очень разные работы.
CodeART
1
@CodeWorks: Они, конечно, разные, но IMO - это организационный антипаттерн, чтобы закрепить чрезмерную специализацию такого рода, поскольку это делает сотрудничество между людьми, которые знают только свою специализацию, очень проблематичным.
Майкл Боргвардт
4

Программисты часто делают базу данных. Очень распространенный. К сожалению, многие программисты не имеют опыта работы с БД. Они не понимают, как составлять отчеты по большим данным, концепциям витрин данных, схемам типа «звезда» и т. Д. Некоторые даже не понимают основ нормализации.

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

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

Лорд тидус
источник
Я нахожу, что это происходит во всех моих маленьких командах. Ожидается, что разработчики с небольшим опытом работы с БД будут разрабатывать (не так уж сложно на первый взгляд) и настраивать (намного сложнее) базы данных под свой код. Всегда хотелось бы иметь в своем распоряжении администратора баз данных.
Рог
1
«Не преувеличение». Это так, если вы не можете квалифицировать это требование как-то.
Бурхан Али
4

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

Кроме того, если вы посмотрите на Entity Framework Code-first, то это предполагает, что та же мысль, что и при построении низкоуровневой модели данных, приведет к созданию разумной схемы или, по крайней мере, намека на одну из них.

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

Проблема в том, что разработка хорошей (или, по крайней мере, адекватной) схемы - это еще не все, особенно если база данных должна масштабироваться. Мне кажется, что «добавленная стоимость», привнесенная администратором базы данных, заключается в том, чтобы получать вещи, отличные от базовой схемы, - правильные индексы, конфигурировать хранилище, поддерживать базу данных (контролировать размеры файлов, перестраивать индексы и т. Д.), Быть умнее с пользователями и ролями и так далее и тому подобное.

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

Murph
источник
4

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

С учетом вышесказанного, особенно для больших приложений, жизненно важно правильно настроить базу данных в первый раз (схема, индексирование и т. Д.). Если у компании есть доступ к квалифицированному администратору базы данных, эта задача должна упасть на их тарелку; в общем они будут более квалифицированными. Потенциально необходимо провести обзор / обсуждение с ведущим разработчиком, который будет работать с базой данных на стороне клиента и работать с ней, чтобы не было никаких неожиданностей. Если нет DBA, программист проектирует базу данных.

Бобби Everyteen
источник
1
Администраторы базы данных не обязательно являются аналитиками данных. Для настройки базы данных и нормализации реляционных данных требуются разные наборы навыков соответственно.
Гилберт Ле Блан
1

Я вижу два вопроса здесь:

  • Должны ли разработчики баз данных моделировать бизнес-логику?
  • Должен ли я знать, как сохранить данные в базе данных?

Бизнес Логика

  • Бизнес-логика не живет в базе данных. Это концептуальная модель, которая не должна зависеть от других уровней в вашей системе.

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

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

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

Постоянные данные

  • Вы должны знать, как сохранять данные на разных носителях, включая решения SQL и NoSQL.

  • Уровень требуемой квалификации зависит от размера системы, над которой вы работаете.

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

Обобщить:

  • Доменная модель - это основа вашей системы, а не базы данных.

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

  • Если вы работаете в крупной компании в корпоративной системе, то, вероятно, имеет смысл передать работу экспертам по предметной области.

CodeART
источник