Как администраторы баз данных могут быть более «дружественными к программисту»?

46

Ответы и комментарии по версии dba.se и programmers.se версии вопроса «Какие аргументы против или для сдачи логики приложения в слое базы данных?» очень показателен разрыв между администраторами баз данных и программистами на некоторых рабочих местах.

Что могут сделать администраторы баз данных по-другому, чтобы лучше работать с программистами по таким вопросам?

Можем ли мы:

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

Ответы:

27

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

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

Чад
источник
63

Я был администратором баз данных MySQL в течение последних 6,5 лет. Я также провел около 16 лет в качестве разработчика и взаимодействовал со многими администраторами баз данных. Многие из них прагматичны. Некоторые из них противны. Некоторые понятия не имеют, что значит быть администратором.

Я пришел к такому выводу:

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

  1. Провел годы как сами разработчики
  2. Иметь представление о теории баз данных
  3. Иметь хорошее представление о том, как внутренняя СУБД работает
  4. Иметь превосходные знания об операционной системе

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

Что касается личности, то всегда будут конфликты, мелочность и, возможно, даже зависть. Одно можно сказать наверняка: ни в каком конкретном порядке администраторы баз данных и разработчики не похожи на мужей и жен (в течение 16 лет я была счастлива в браке с текущими проектами [4 детей]).

Независимо от того, кто рассматривается как муж, а кто рассматривается как жена, применяются следующие принципы:

  1. один должен посоветоваться с другим
  2. один должен ценить точку зрения другого
  3. нужно принимать решения на благо обеих сторон
  4. нужно поддержать, а не саботировать принятое решение
  5. один не должен очернять другого, если решения приводят к плохим последствиям
  6. нужно радоваться вкладу обеих сторон в успех решений
  7. нужно консультироваться с вышестоящим органом (HA), если решение не может быть взаимно согласовано

Эти семь (7) принципов в равной степени применимы на рабочем месте, особенно в сфере ИТ.

Общаясь на каждом этапе пути, все должны:

  1. макет своих ожиданий
  2. порождает уважение к способности другой стороны выполнять свою роль на основе прошлых результатов
  3. иметь доверие и уверенность, что другая сторона может выполнить свое назначение
  4. оправдать наши собственные ожидания
  5. получить под руководством HA (см. принцип № 7)

В этом нет места для микроуправления. Администраторы баз данных не должны рассказывать разработчикам, как думать, как администраторы баз данных. Разработчики не должны рассказывать администраторам баз данных, как быть разработчиками. Окончательные решения о производительности и использовании базы данных должны приниматься администраторами баз данных . Окончательные решения по потребностям приложения должны приниматься разработчиками . Этот симбиоз должен поддерживаться всегда.

ПОСЛЕДНИЕ МЫСЛИ

Принцип № 7 требует активного участия и надзора со стороны ВЫСШЕЙ власти (ГА), то есть менеджера проекта, руководителя группы, ведущего разработчика. Ваш HA лучше знает, как обе стороны работают индивидуально и как обе стороны должны работать вместе. Если HA не устанавливает основные правила для обеих сторон, или если HA не может руководить сторонами по отдельности и вместе, проекты в какой-то момент всегда останавливаются и ставят под угрозу само существование (занятость) разработчика, администратора базы данных, или даже ГА.

RolandoMySQLDBA
источник
28

То, что команды сидят в разных секциях / этажах, как-то, похоже, поощряет менталитет «мы против них».

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

Общение лицом к лицу, особенно при обмене идеями, гораздо эффективнее, чем электронная почта, и у него меньше шансов вызвать неприятные ощущения из-за недопонимания.

datagod
источник
20

Подобные вещи сильно различаются от места к месту. На моем текущем сайте грань между разработчиками и администраторами баз данных очень размыта - мы (администраторы баз данных) тоже пишем PL / SQL, а они (разработчики) разбирают планы запросов. Мы все видим себя как сверстников, просто с разными навыками и обязанностями. Это очень забавно: недавно компания запрыгнула на платформу DevOps . Сообщество баз данных вообще не понимает этого; мы всегда так работали. Излишне говорить, что мы чрезвычайно продуктивно работаем, как это: уровень базы данных , безусловно,Самая надежная часть технологического стека компании, она проста в эксплуатации (поскольку у нас есть опыт работы в команде администраторов баз данных, чтобы понять приложение на глубоком уровне, а разработчики знакомы с администратором баз данных, чтобы понимать операции 24/7/365 и как структурировать свои приложения для этого).

Но я знаю, что вы имеете в виду, когда говорите о «неправильном» виде разработчика. Он самоучка, что само по себе является благородной вещью, но по пути он обнаружил недоверие к каким-либо формальным инструкциям. Он не знает, чего не знает , и обижается на любого, кто пытается его просветить, он считает это оскорблением его навыков самообучения. Он выучил императивный стиль программирования, потому что вы можете изучать его без каких-либо теоретических вещей, о которых постоянно болтают типы CS (ну, плохо; каждый должен знать о биг-ои подобные биты теории). Он тоже немного изучил ОО только потому, что ему нужно использовать Java. Но хороший специалист по базам данных - разработчик или администратор баз данных - должен уметь думать в декларативном стиле, думать о теории множеств, нормальных формах и даже понимать реляционную алгебру и исчисление. С этими людьми очень и очень трудно общаться, потому что они активно враждебны ко всему, что может вытолкнуть их из их зоны комфорта, которая в целом ограничена тем, как отформатировать что-либо на веб-странице. Если они вообще думают о базах данных, они думают, что таблица подобна классу, а строка - как объект. Эти парни буквально просто делают, SELECT * FROM TABLEфильтруют и сортируют результаты в своем собственном коде., Они действительно, действительно не понимают, почему база данных лучше, чем простой файл (и они не так тайно думают, что любой, кто использует реляционную базу данных, является идиотом).

Позвольте мне привести вам реальный пример: недавно я говорил с одним из этих типов о проблемах, связанных с откатом выпуска нашего программного обеспечения после его запуска в производство, если проблема проскочила мимо QA. Я объяснил, что, хотя мы можем откатить его приложение (одно из многих обращающихся к базе данных), оно должно быть в состоянии работать с развернутой базой данных. Он спросил, почему, и я ответил, что в этих новых таблицах и столбцах будут реальные данные о клиентах. Затем он сказал, так что просто скопируйте его во временную таблицу, в чем проблема. Я недоверчиво уставился на него: когда клиент звонит и говорит, что мои деньги исчезли с моего счета, что мы ему скажем, что все в порядке, они во временной таблице? Он просто не понимал, что когда вы имеете дело с чужими деньгами, вы должны вести себя как ответственный взрослый. Насколько я знаю, он до сих пор не знает; его больше нет с нами

Лагеря MySQL были такими долгое время; они сказали бы, что вам не нужны транзакции, внешние ключи и т. д., если вы думаете, что это было сделано, только потому, что вы понятия не имели, что делаете, и т. д. и т. д. (тогда, когда они выросли, они тихо добавили их). Для таких людей были разработаны ORM, такие как ActiveRecord или Hibernate, чтобы они могли писать приложения баз данных без необходимости касаться SQL. Использование этих технологий я считаю красным флагом - это не та компания, которая ценит навыки DBA. То, что они действительно хотят, это няня ...

Gaius
источник
18

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

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

Ли Риффель
источник
12

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

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

По моему мнению, это не имеет ничего общего с тем, чтобы быть «дружественным программисту» больше, чем профессионалом. Для dba это означает, что мы должны быть в состоянии объяснить, почему мы делаем то, что мы делаем, и быть готовы к тому, чтобы пересмотреть решение, если оно поможет, без потери обычных целей, таких как доступность, масштабируемость, возможность восстановления и производительность. Для программиста это означает, что он должен общаться с DBA, иногда обучать DBA, иногда учиться у DBA. Мой девиз таков: пусть первый день, когда я ничего не узнаю, будет днем, когда гроб закроется над моей головой. Нормальное сотрудничество, объединение команд с разработчиками и dba, безусловно, помогает упростить ситуацию.

ik_zelf
источник
9

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

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

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

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

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

Другая часть проблемы - неуважение с обеих сторон. Я встречался с несколькими разработчиками приложений, которые думают, что работа с данными не сложна и не интересна, и которые верят, что вы сделаете эту работу, только если не сможете взломать ее в их мире. Люди, как правило, плохо реагируют на обращение с ними, как если бы они были глупыми и бесполезными. С другой стороны, некоторые администраторы баз данных склонны относиться к разработчикам приложений с неуважением и ставят свои задачи по рассмотрению того, что разработчики делают с базой данных, как низкий приоритет (что может быть при наличии больших сложных производственных баз данных). Они могут отказаться слышать или реагировать. Кто хочет, чтобы весь его проект был отложен до тех пор, пока администратор не пересмотрит его через две недели? А потом он говорит вам, что это недопустимо, и вы должны переписать все это?

HLGEM
источник
8

На протяжении многих лет, с тех пор как я начал работать с SQL Server (1998), многие разработчики рассказывали мне, как выполнять свою работу. Интересно, что они все знают больше меня, а также являются превосходными разработчиками .net. На самом деле, они тоже архитекторы и должны делать больше, чем манипулировать кодом.

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

Я оставлю исправления до других ответов (я согласен на 100% с 2), но добавлю, что культура управления и магазина также должна поддерживать и развивать сотрудничество.

ГБН
источник
8

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

... Общая тема, правда ... Общение ... общение ... общение.

Там действительно нет лучшего способа выразить это. Разработчики получают галочку из-за того, что «администратор БД сказал мне, что это невозможно, я уверен, что доказал его неправоту в прошлый раз». АБД ставят галочку, потому что «этот разработчик не понимает, что я должен делать каждый раз, когда он меняет свои спецификации».

Разработчики и администраторы баз данных, как сказал @Rolando, должны понимать друг друга. Когда все сводится к этому, мы оба говорим «Единицы и нули» - можно подумать, что это было бы хорошим совпадением. У нас есть 2 сферы ответственности: администраторы баз данных имеют данные, разработчики получают остальную часть компьютера. Но без данных у программистов действительно не было бы много работы.

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

IAbstract
источник
7

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

Кто здесь виноват? Г-жа Связь.

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

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

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

Фил Лелло
источник
6

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

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

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

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

Уолтер Митти
источник
3

Некоторое смирение может помочь некоторым из вас. ;)

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

eevar
источник