Answers:
这取决于。
在一家大商店里,可能不是因为您要照顾数千台服务器并且提供了工具。在小商店里,您可能需要更多的知识,因为您的职权范围更广。
脚本语言(例如PowerShell,cmd.exe)对于监视,部署等始终很有用。我经常需要维护一些Perl脚本(差不多)。然后是您应该了解的各种ETL软件包。
这样说,大多数DBA(我知道)将能够编写基本的CLR内容或非常了解PL / SQL。对我而言,分界线是关于.net或Java的更广泛模式或体系结构的了解。作为数据库开发人员或DBA,我不需要它。就像.net或PHP或Java Monkeys一样,我也无法像我一样理解数据库的设计,架构或代码。
就个人而言,几年前,我决定停止使用最新的或最佳的客户端语言,而专注于数据库工作。那并不能使我成为“非程序员”:如果必须的话,我需要再次学习它。
我知道DBA很少或根本没有编程技能,但是我曾经认为过的任何DBA至少都具有合理的编程技能。我能想到的一两个人具有丰富的开发背景,并且凭自己的能力是相当不错的开发人员。有一个公平 量的开源 工具通过谁作为自己的日常工作和IIRC谁写蟾蜍用来工作的DBA的家伙的DBA工作的人写的。
根据所扮演的角色,您可能会发现自己编写或调整查询,编写脚本以自动执行任务或咨询应用程序设计。在某些情况下,您可能只是通过OEM或某些其他监视工具来管理一堆服务器。
诸如.Net或Java之类的现代“企业”开发环境非常复杂,以至于开发人员仅凭专注于它们就可以从事职业。作为一名DBA,尤其是在开发领域,具有C#或Java的工作知识可能不会受到损害,但是您可能不会花费大量时间在其中进行编码。
尽管许多系统都公开了.Net,Java,COM或Web服务API,但您可能会从平台上使用的任何脚本工具中受益匪浅。如果您需要针对这些API编写代码,则至少需要具备一些可以使用该API的知识。但是,通常不需要高级应用程序体系结构技能。
一些开发人员将具有很强的数据库技能,但是对数据库的非理性恐惧在开发界很普遍。许多开发人员也从来没有真正意识到过基于SQL的“设置操作”范式。作为开发人员DBA,您会发现自己正在处理此问题的后果,并且可能需要干预存储过程代码来解决性能问题。
数据库周围的ETL和工具也可能属于DBA。我已经看过很多DBA职位,这些职位似乎涉及大量的后端开发工作。这将在较小的公司中最常见。最近的一位发帖人希望将自定义指标集成到Oracle Enterprise Manager中,Oracle Enterprise Manager具有用于执行此操作的插件API。看到这样的需求很普遍,并且实质上唯一的方法是编写一些粘合代码。
IT领域有很多“工具专家”,尽管存在狭och的作风,但他们仍可以完成有用的工作。但是,当工具用尽时,通常要做的唯一方法是实际编写一些代码来完成。在这里,编程技能使男人和男孩分开。
我通常不会说,但它永远不会伤害您。SQL Server足够大,我认为没有人可以掌握整个产品。从SQL Server 4.2开始,我一直是一名DBA,并且认为自己是大多数领域的专家,但是我承认,如果没有google的帮助,我将无法在每个步骤的每一步都编写MDX查询。
我想说的是,您不可能在所有事情上都是专家。成为一名真正的优秀DBA意味着您应该精通T-SQL,但不一定擅长.NET,或者至少不如其他可以专注于.NET的人有效。
Powershell和SSIS的来龙去脉都是很好的认识。除此之外,将其他开发语言留给开发人员。
我的经验是,尽管大多数DBA具有一定的开发背景,但根本不需要编写代码。与我合作过的真正优秀的DBA具有广泛的知识,涉及各种主题,包括Shell脚本,操作系统和专门的应用程序知识(例如:PeopleSoft)。
我在研究生院有一位数据库管理讲师,他给我们列出了任何好的(Oracle)DBA都应该能够回答的问题列表:(我只列出40个左右的列表中的一些要点)
(Oracle)DBA需要知道这些事情才能有效。我认识的大多数开发人员(针对Oracle的代码)都很难正确回答其中的一两个问题。
如果您是DBA,那么您可能正在性能和安全性领域(以及其他领域)工作。这可能涉及分析和协助调整开发人员正在处理的客户端应用程序。因此,了解开发人员正在使用的语言的基础知识以及如何与数据库服务器进行交互当然不会有任何伤害。对于SQL Server,可能是.NET。对于MySQL,可能是php或java的某种组合。
例如,如果服务器承受客户端线程的压力,则有助于通知开发人员其ObjectDataSources应该使用单例实例,以便他们可以重用单个数据库连接,这将有所帮助。还要确保他们正确使用了参数化查询以限制SQL注入。像这样的东西。
如果您严格地是DBA,就不会在开发客户端应用程序方面进行任何编程,但是您应该知道它们的工作原理(通常来说)。
好吧,让我们看看,Oracle使用的PL / SQL确实类似于Pascal(一种曾经用于生成桌面应用程序代码的语言,但是在最近几年中已经下降,并且开发人员已经转向了Delphi,而有些人已经放弃了。从那里到.NET),Oracle现在也支持Java进行某些活动。由于Oracle DBA必须了解系统的各个方面才能得到很好的理解,因此我想说,必须要了解Pascal和Java。
TSQL具有为Sql Server中的某些功能编写.NET(CLR)托管代码的能力,因此,好的DBA可能需要了解这一点(但是它并不总是能够在较旧的版本中使用,因此很多根据我的经验,DBA往往会避开该功能集。
所以这是两个大问题,也是大多数人在问的时候都提到的问题。我不知道所有其他引擎都知道它们在做什么和不支持什么,但是我知道除了SQL之外,还有许多其他引擎也具有语言集成。