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


20

В какой степени администратор базы данных должен знать языки программирования системного или прикладного уровня (например, .NET или PHP) помимо "просто SQL"?

Для целей этого вопроса не рассматривается какая-либо конкретная версия стандарта SQL для этого ответа (SQL ANSI 86, SQL ISO 87, SQL: 2008), поскольку этот вопрос касается языков настольных компьютеров или серверов за пределами области действия SQL.

Ответы:


25

По-разному.

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

Языки сценариев (например, PowerShell, cmd.exe) всегда полезны для мониторинга, развертывания и т. Д. У меня часто было несколько сценариев Perl, которые мне приходилось поддерживать (почти). Тогда есть разные ETL-пакеты, о которых вы должны знать.

Сказав это, большинство администраторов баз данных (которые я знаю) могли бы писать базовые вещи CLR или хорошо знать PL / SQL. Для меня разделительной линией является знание о более широких шаблонах или архитектуре .net или Java. Мне не нужно это как разработчик БД или DBA. Точно так же, как .net, PHP или Java Monkeys не понимают дизайн базы данных, архитектуру или код так же хорошо, как я.

Лично я решил прекратить погоню за последним или лучшим языком клиента много лет назад и сосредоточиться на работе с базами данных. Это не делает меня «не программистом»: я должен был бы изучить это снова, если бы мне пришлось.


4
+1 за «это зависит», за которым следует то, что все остальные пропустили (или, может быть, мысль была слишком очевидной) - это зависит от размера вашего магазина. Моей предыдущей работой было трое из нас в отделе ИТ, мне приходилось заниматься всем, включая веб-разработку. Сейчас на моем нынешнем месте, где работают 80 ИТ-специалистов, это все базы данных.
Саймон Ригартс

ИДК, я чувствовал, что мой не был ориентирован на большой или маленький магазин ...
jcolebrand

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

gbn - сколько кода вы пишете ежедневно? Это в основном SQL?
Робопим

@pimbrouwers сейчас, это PowerShell и SQL, но я администратор и администратор баз данных. Последняя работа была SQL, некоторые PowerShell, некоторые C #. До этого в основном SQL и SSIS (BI DBA). Зависит от того, что SQL всегда показывает то, что я делаю.
ГБН

14

Я знал администраторов баз данных, у которых мало или совсем нет навыков программирования, но у каждого администратора, которого я когда-либо считал хорошим, были, по крайней мере, разумные навыки программирования. Один или два, о которых я могу думать, имели значительный опыт разработки и были довольно хорошими разработчиками сами по себе. Там в справедливое количество из открытого источника инструментов написаны людьми , которые работают в АБД в своей повседневной работе и IIRC парень , который написал ЖАБА используется для работы в качестве администратора базы данных.

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

Современные «корпоративные» среды разработки, такие как .Net или Java, достаточно сложны, чтобы разработчик мог сделать карьеру, просто специализируясь на них. Как администратор баз данных, особенно в среде разработки, знание C # или Java на практике может не повредить, но вы, вероятно, не будете тратить много времени на то, чтобы на самом деле кодировать их.

Вероятно, вы получите больше преимуществ от любых инструментов сценариев, используемых на вашей платформе, хотя многие системы предоставляют API-интерфейсы .Net, Java, COM или веб-служб. Если вам нужно что-то кодировать с помощью этих API, вам понадобятся хотя бы базовые знания о том, что может использовать этот API. Тем не менее, продвинутые навыки архитектуры приложений обычно не нужны для этого.

Некоторые разработчики будут иметь сильные навыки работы с базами данных, но иррациональный страх перед базами данных довольно распространен в кругах разработчиков. Многие разработчики так и не смогли разобраться с парадигмой «операций над множествами», лежащей в основе SQL. Как администратор Dev, вы можете столкнуться с последствиями этого, и, возможно, придется вмешиваться в код хранимых процедур, чтобы разобраться с проблемами производительности.

ETL и инструменты, окружающие базу данных, также могут попадать в сферу полномочий администратора баз данных. Я видел довольно много рекламируемых ролей DBA, которые, по-видимому, включали в себя значительную часть работы по фоновой разработке. Это будет наиболее распространенным в небольших компаниях. Один из недавних авторов хотел интегрировать пользовательские метрики в Oracle Enterprise Manager, у которого есть API для подключаемых модулей. Довольно часто встречаются такие требования, и, по сути, единственный способ сделать это - написать немного кода.

В ИТ-отделе работает множество «инструментальных парней», и они могут выполнять полезную работу, несмотря на зверство. Однако, когда инструменты заканчиваются, часто единственный способ что-то сделать - это написать немного кода для этого. Именно здесь навыки программирования отделяют мужчин от мальчиков.


6

Я бы сказал, что нет, но это никогда не повредит. SQL Server достаточно большой, и я не думаю, что один человек сможет освоить весь продукт. С SQL Server 4.2 я являюсь администратором баз данных и считаю себя экспертом в большинстве областей, но я признаю, что не смог бы написать MDX-запрос без Google на каждом шагу.

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

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


Я думаю, что стоит отметить, что SSAS - это действительно отдельный объект от SQL Server, и немногие люди оказываются в ситуации, когда они выполняют с ним большую работу. Я использую SSAS время от времени примерно с 2001 года, и каждый год я работаю с ним всего несколько недель.
ConcernedOfTunbridgeWells

SSAS является такой же частью семейства SQL Server, как SSIS и SSRS. Как я уже сказал, SQL Server БОЛЬШОЙ.
датагод

1
SSAS в комплекте с SQL Server, но это автономная система. Вам на самом деле не нужен SQL Server, чтобы использовать его - он может загружать данные из всего, к чему вы можете подключиться. Я думаю, что SSAS используется только в довольно небольшом меньшинстве сайтов SQL Server. Попробуйте сравнить количество записей на jobserve.com, желающих получить навыки работы с сервером sql, и числа, рекламирующего mdx. Нередко тратить годы на работу с SQL Server и никогда не трогать SSAS.
ConcernedOfTunbridgeWells

SSIS может быть установлен как автономная система. Это подходит для вашей модели? Как вы думаете, название SSAS даже означает? Службы аналитики SQL Server. Это часть пакета, независимо от того, используют его люди или нет.
Датагод

5

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

У меня был инструктор по администрированию баз данных в аспирантуре, который дал нам список вопросов, на которые должен ответить любой хороший администратор баз данных (Oracle): (Я просто опубликую некоторые из основных моментов из списка 40 или около того)

  • Почему Oracle не создает индексы автоматически по столбцам внешнего ключа?
  • Когда вы удаляете ограничение, когда вы будете использовать предложение KEEP INDEX?
  • Когда бы вы использовали IOT против обычного стола?
  • Это хорошая идея, чтобы разместить таблицы и индексы в отдельных табличных пространствах?
  • В чем разница между типами данных VARCHAR и VARCHAR2?
  • Лучше ли использовать триггер или ограничение для обеспечения соблюдения бизнес-правила?
  • Когда вы хотите использовать автоматическое распределение по сравнению с фиксированным размером сегмента?
  • Когда бы вы использовали внешнюю таблицу, таблицу кучи или таблицу B-дерева?
  • Как часто вы должны очищать корзину?
  • Какие стратегии вы бы порекомендовали для резервного копирования многораздельной таблицы? Как насчет секционированного индекса?

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


5

Если вы администратор базы данных, вы, вероятно, работаете в сфере производительности и безопасности (среди прочих). Это может включать профилирование и помощь в настройке клиентских приложений, над которыми работают разработчики. Таким образом, конечно, не мешало бы знать основы языков, которые используют разработчики, и как взаимодействовать с сервером базы данных. Для SQL Server это, вероятно, .NET. Для MySQL, вероятно, какая-то комбинация php или java.

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

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


1
+1 Мой .net в основном ограничен знанием того, как они называют мои базы данных. Это важный бит :-)
gbn

4

Что ж, давайте посмотрим, Oracle использует PL / SQL, который действительно похож на Pascal (язык, который раньше использовался для создания кода приложений для настольных компьютеров, но который упал в последние годы, и разработчики перешли на Delphi, который некоторые ушли оттуда в .NET), и Oracle теперь также поддерживает Java для некоторых видов деятельности. Поскольку администратор базы данных Oracle должен знать все аспекты системы, чтобы иметь высокую оценку, я бы сказал, что знание Паскаля и Java будет требованием.

TSQL имеет возможность писать управляемый код .NET (CLR) для некоторых функций Sql Server, и, следовательно, хороший администратор баз данных, вероятно, должен знать об этом (но его не всегда можно использовать в более старых версиях, поэтому очень много В моем опыте администраторов баз данных, как правило, уклоняются от этого набора функций).

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


+1, но я думаю, что серверная Java на Oracle обычно не очень полезна (есть странное исключение )
Джек Дуглас

@JackDouglas - в основном серверный код Java или CLR полезен для системных задач. Стоит обратить внимание на код на стороне сервера: вы, как правило, платите за лицензирование сервера БД в зависимости от мощности ЦП, используемой для его запуска.
ConcernedOfTunbridgeWells

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

-1

Я вполне убежден, что только большие магазины с большими приложениями имеют спрос на DBA, не предназначенный для программирования, поскольку небольшие магазины с простыми базами данных могут обойтись без разработчика на все руки / DBA. Чтобы администратор базы данных стал мастером продукта (Oracle, SQL Server и т. Д.), Для этого знания должен быть спрос! Администратор базы данных должен быть подвержен сложным условиям и проблемам, чтобы помочь ему стать более осведомленным. По сути, это моя напыщенная речь, потому что я работаю администратором в небольшом магазине и не занимаюсь чем-то, что требует более двух нейронов. Думаю, я трачу свое время на эту работу. Я хочу быть разработчиком.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.