DBA是否需要了解除SQL之外的其他系统语言编程方法?


20

除了“仅SQL”外,数据库管理员还需要在多大程度上了解系统或应用程序级别的编程语言(例如.NET或PHP)?

就此问题而言,由于该问题与SQL领域之外的台式机或服务器语言有关,因此未考虑针对此答案的SQL标准特定版本(SQL ANSI 86,SQL ISO 87,SQL:2008)。

Answers:


25

这取决于。

在一家大商店里,可能不是因为您要照顾数千台服务器并且提供了工具。在小商店里,您可能需要更多的知识,因为您的职权范围更广。

脚本语言(例如PowerShell,cmd.exe)对于监视,部署等始终很有用。我经常需要维护一些Perl脚本(差不多)。然后是您应该了解的各种ETL软件包。

这样说,大多数DBA(我知道)将能够编写基本的CLR内容或非常了解PL / SQL。对我而言,分界线是关于.net或Java的更广泛模式或体系结构的了解。作为数据库开发人员或DBA,我不需要它。就像.net或PHP或Java Monkeys一样,我也无法像我一样理解数据库的设计,架构或代码。

就个人而言,几年前,我决定停止使用最新的或最佳的客户端语言,而专注于数据库工作。那并不能使我成为“非程序员”:如果必须的话,我需要再次学习它。


4
+1表示“取决于”,然后是其他人都错过了(或者可能认为太明显)了-这取决于您商店的规模。我之前的工作是IT部门的三个人,我不得不做所有事情,包括Web开发。现在,在我目前拥有80名IT员工的地方,所有时间都是数据库。
Simon Righarts 2012年

idk,我觉得我不适合大大小小的商店……
jcolebrand

“ ..几年前,我决定停止使用最新或最好的客户端语言,而将精力集中在数据库工作上……” –这是我的最爱。好点。我想将db视为一个伟大的常数,由此您可以通过数据库的各种“访问点”将其他语言带到聚会中。是否要建立这些接入点取决于您。如果您发现自己经常问这个问题,也许转移重点是合适的。
robopim

gbn-您每天发现自己编写了多少代码?它主要是SQL吗?
robopim

@pimbrouwers现在,它是PowerShell和SQL,但我是sysadmin + DBA。最后的工作是SQL,一些PowerShell,一些c#。在此之前,主要是SQL和SSIS(BI DBA)。这取决于SQL在我所做的工作中始终具有的功能。
gbn

14

我知道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的作风,但他们仍可以完成有用的工作。但是,当工具用尽时,通常要做的唯一方法是实际编写一些代码来完成。在这里,编程技能使男人和男孩分开。


6

我通常不会说,但它永远不会伤害您。SQL Server足够大,我认为没有人可以掌握整个产品。从SQL Server 4.2开始,我一直是一名DBA,并且认为自己是大多数领域的专家,但是我承认,如果没有google的帮助,我将无法在每个步骤的每一步都编写MDX查询。

我想说的是,您不可能在所有事情上都是专家。成为一名真正的优秀DBA意味着您应该精通T-SQL,但不一定擅长.NET,或者至少不如其他可以专注于.NET的人有效。

Powershell和SSIS的来龙去脉都是很好的认识。除此之外,将其他开发语言留给开发人员。


我认为值得一提的是,SSAS实际上是与SQL Server分离的实体,并且很少有人遇到需要大量工作的情况。从2001年左右开始,我就一直在使用SSAS,而实际上我每年只使用它几个星期。
ConcernedOfTunbridgeWells

SSAS与SSIS和SSRS一样,也是SQL Server系列的一部分。就像我说的那样,SQL Server很大。
datagod 2012年

1
SSAS与SQL Server捆绑在一起,但是它是一个独立的系统。您实际上并不需要SQL Server来使用它-它可以从您可以连接到的任何内容加载数据。我认为SSAS仅在相当少数的SQL Server站点中使用。尝试比较需要sql服务器技能的jobserve.com上的列表数量与mdx广告数量的比较。花几年时间使用SQL Server而不接触SSAS并非没有道理。
ConcernedOfTunbridgeWells

SSIS可以作为独立系统安装。这也适合您的模型吗?您认为SSAS甚至代表什么?SQL Server Analysis Services。无论用户是否使用它,它都是套件的一部分。
datagod 2012年

5

我的经验是,尽管大多数DBA具有一定的开发背景,但根本不需要编写代码。与我合作过的真正优秀的DBA具有广泛的知识,涉及各种主题,包括Shell脚本,操作系统和专门的应用程序知识(例如:PeopleSoft)。

我在研究生院有一位数据库管理讲师,他给我们列出了任何好的(Oracle)DBA都应该能够回答的问题列表:(我只列出40个左右的列表中的一些要点)

  • Oracle为什么不自动在外键列上创建索引?
  • 删除约束时,何时使用KEEP INDEX子句?
  • 什么时候使用物联网与常规表格?
  • 将表和索引放在单独的表空间中是个好主意吗?
  • VARCHAR和VARCHAR2数据类型之间有什么区别?
  • 使用触发器或约束来执行业务规则更好吗?
  • 什么时候要使用自动分配与固定段大小?
  • 什么时候使用外部表,堆表或B树表?
  • 您应该多久清除一次回收站?
  • 您将推荐什么策略来备份分区表?分区索引怎么样?

(Oracle)DBA需要知道这些事情才能有效。我认识的大多数开发人员(针对Oracle的代码)都很难正确回答其中的一两个问题。


5

如果您是DBA,那么您可能正在性能和安全性领域(以及其他领域)工作。这可能涉及分析和协助调整开发人员正在处理的客户端应用程序。因此,了解开发人员正在使用的语言的基础知识以及如何与数据库服务器进行交互当然不会有任何伤害。对于SQL Server,可能是.NET。对于MySQL,可能是php或java的某种组合。

例如,如果服务器承受客户端线程的压力,则有助于通知开发人员其ObjectDataSources应该使用单例实例,以便他们可以重用单个数据库连接,这将有所帮助。还要确保他们正确使用了参数化查询以限制SQL注入。像这样的东西。

如果您严格地是DBA,就不会在开发客户端应用程序方面进行任何编程,但是您应该知道它们的工作原理(通常来说)。


1
+1我的.net通常仅限于了解他们如何称呼我的数据库。这是重要的一点:-)
gbn 2012年

4

好吧,让我们看看,Oracle使用的PL / SQL确实类似于Pascal(一种曾经用于生成桌面应用程序代码的语言,但是在最近几年中已经下降,并且开发人员已经转向了Delphi,而有些人已经放弃了。从那里到.NET),Oracle现在也支持Java进行某些活动。由于Oracle DBA必须了解系统的各个方面才能得到很好的理解,因此我想说,必须要了解Pascal和Java。

TSQL具有为Sql Server中的某些功能编写.NET(CLR)托管代码的能力,因此,好的DBA可能需要了解这一点(但是它并不总是能够在较旧的版本中使用,因此很多根据我的经验,DBA往往会避开该功能集。

所以这是两个大问题,也是大多数人在问的时候都提到的问题。我不知道所有其他引擎都知道它们在做什么和不支持什么,但是我知道除了SQL之外,还有许多其他引擎也具有语言集成。


+1,但我认为Oracle上的服务器端Java 通常不是很有用(有一个奇怪的例外
Jack Douglas

@JackDouglas-大多数服务器端Java或CLR代码对于系统任务很有用。关于服务器端代码要注意的一件事是,您倾向于为运行它的CPU容量支付DB服务器许可费用。
ConcernedOfTunbridgeWells

这些都不是每天特别有用的,但是当您需要它时,就需要它。而且,如果DBA不了解这些事情,并且至少不能阅读开发人员提供的代码,那么他就很麻烦。我就是这么说
jcolebrand

-1

我非常坚信,只有具有大型应用程序的大型商店才需要非编程DBA,因为具有简单数据库的小型商店可以摆脱千篇一律的开发人员/ DBA。要使DBA成为产品(Oracle,SQL Server等)的主人,就必须有这一知识的要求!DBA必须经受复杂的环境和问题的困扰,以帮助他变得知识渊博。这基本上是我的烦恼,因为我是一家小商店的DBA,并且我不需要做任何需要两个以上神经元的事情,所以我想我在浪费时间。我想成为一名开发人员。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.