淘先锋技术网

首页 1 2 3 4 5 6 7

        在中国,企业的IT部门用得起专职DBA的不算很多,而奢侈到能够将DBA的工作进行细分的企业,就更少了。但这并不是说我们今天讨论“开发DBA“的工作就毫无意义。

  中国最大的数据库技术社区ITPUB对此问题做的一项调查显示,高达30%参与调查者(DBA)不参与数据库的前期设计和开发,而只单纯负责后期数据库的管理和优化。

        1、参与数据库架构方面的设计、开发数据库的管理、开发人员的培训以及上线后问题的解决。282(69.63%)

        2、数据库的设计由开发人员自己做,只负责开发数据库的管理,开发人员的培训以及上线。81(20.00%)

        3、数据库就是黑盒,只是上线后出现问题的时候负责解决以及调优。42(10.37%)

  参与调查的网友普遍认同前期数据库架构和设计的重要性,已经深知这些工作是否扎实与后期DBA的维护工作量有很大关系。

  来自于阿里巴巴支付宝的网友玉玄宫表示,“我们这里的开发DBA对项目主要工作有: 1。了解项目需求和设计,审核开发人员的DB结构设计;2。制定和培训SQL规范;3。每个项目开发完成后,审核SQL;4。线上反馈的SQL问题,跟进和推动解决问题;5。非项目范围的数据变更、数据迁移,参与或主导PL/SQL的编写。”

  不过,每个公司的实际情况还是差别很大,有的公司里面的DBA在Oracle方面基本上只管数据库的安装、备份和恢复。业务上的事都是“开发DBA”来做,这个职位不知道是叫项目管理人员还是叫“开发DBA”。

  无疑,开发DBA需要在前期和开发人员做大量的沟通,并参与其设计和开发工作,或者对开发人员提供有关数据库知识方面的培训,比如,如何写出最佳的SQL语句,但是,对很多被做为DBA人员招聘入职的人来说,这是一个难题。

  “曾经对将优化过后的SQL语句给开发人员,不敢说写的最好但是比开发开发人员写的至少快3,交给他们并说明以后,但人家说页面里的程序已经嵌好了,改起来很麻烦,从此也就作罢。”网友flaming_tower反馈他和开发人员沟通过程中的问题。

另外一方面,很多DBA也不大愿意去了解业务细节,宁愿将时间花在技术上,也不愿意花在业务上,开发人员也懒得和他们去费口舌讲业务,就直接按照自己掌握的数据库知识水平书写SQL或者将业务逻辑封装在比较复杂的Procedure中,而这些都极易成为今后数据库性能的隐患。

  ITPUB技术社区的斑竹王琦认为目前大部分实施中的IT项目对DBA的重视程度极低,他在讨论中谈到,“说实在的,现在的大多数项目都不太重视DBA的。项目经理大多都以实现需求和功能为目标,压根就没考虑性能问题;上面的选项都是理想的状态和选项。根据我的观察,DBA就是帮别人写写复杂逻辑的脚本,指导和规划开发人员的行为根本谈不上的,DBA的地位只有在大型IT系统和一些门户网站在能取得应有的地位吧。”

  网友卡卡西也举自己遇到的例子说明DBA在团队中是如何被轻视的,“我目前所在的项目组也是不太重视DBA的工作, 直到发生了一件事情.。开发人员做了一个自动翻译的程序, 词库是放在数据库里的, 有一天翻译的程序突然跑的很慢, 开发人员抱着试一试的心理找到了我, 我打开sqlplus一看数据库中正在跑的SQL,发现翻译的主要SQL语句做了修改, 原来的t1.col1=:1 改为了upper(t1.col1)=:1, 原来的t1.col1字段是有索引的, 但是开发更改SQL之后并没有告诉我, 于是我把索引改为upper(t1.col1), 速度一下提高了100倍, 开发大惊。项目组长趁机语重心长的对开发人员说, 今后SQL更改一定要告知DBA。”

  在调查中,记者了解到,还有的公司将DBA划归于运维部,研发部开发完成上线之后,如果有性能的上问题就会找到运维。一般来说问题有以下几类:1、SQL低效;2、程序实现低效;3、业务部门需求低效。做为一个DBA说小了应该做到第一类工作,往大了说应该做上以上三类工作。

  公司的技术领导人对基于数据库的系统的认识问题,也是一个重要的因素。如果是一个研发出身的,他就引导大家先实现功能,再考虑性能。凡此种种,DBA在项目中受轻视,是开发DBA难以发挥真正作用的根本性原因。

  DBA在当前的IT开发环境中要想更好地生存,实现自己的价值,是需要相当技巧的。阿里巴巴首席DBA 冯春培曾经谈到,DBA如何在团队中发挥自己的最大作用,

  “很多时候让别人接受你的合理优秀的东西是需要自己的努力的,你一来就要求别人把你的话当作圣旨一样,让别人按你的想法改代码,是不是换成你也很难舒服啊?毕竟每个人都认为自己是很优秀的,再者,如果每个人都能像你一样知道那么多DBA应该懂的东西,从DBA的角度思考问题,你在这个团队中也就没有位置了。所以个人认为DBA不应该过多的抱怨团队如何如何,如果你争取后仍然没有得到别人的重视,也不一定要换地方,其实优化也有很多种方法,如果应用不能修改,SQL不能优化,结果你还是把问题很好解决了,这个时候你就真正知道如何工作了。”

      开发DBA,在团队中如何发挥自己的价值,确立自己的地位,需要做什么,请大家点击继续参与讨论,发表观点:http://www.itpub.net/thread-930552-1-1.html