我为什么坚持DBA一定要懂开发

我为什么坚持DBA一定要懂开发
时间 2016-03-23 15:34:08 张碧池的幸福生活
原文 http://pottievil.com/我为什么坚持dba一定要懂开发/
主题 DBA 数据库
最近手头在忙几个开发项目,主要在做的是数据库方面的自动化运维系统。

本来就捉襟见肘的人手现在更要匀出一部分完成开发任务(虽然几个开源项目的二次开发就没停过。。)。可能是最近给组里的兄弟们灌了太多的技术鸡汤,终于有同学憋不住问我:我们是不是离DBA的老本行越走越远了?

后来我也严肃的自问自己这个问题:我是不是把团队的方向带的有点跑偏了?

好在圈里的很多朋友纷纷的给我圆场,说近年DBA人员的素质出现下滑。参加面试的人纵然有几年工作经验,然而做的事情无非是导数据、处理脏数据、设计表、优化索引。。这些非常非常基础的事情。甚至这些事情一些好学的运维同学(小企业尤其突出)已经开始逐渐的能接手过去了。

面对这样的情况,他们便向我发问:DBA存在的意义到底在哪里?

想起读研的时候,正好赶上业内Oracle大佬们极力倡导DBA2.0的时期。不过那时的问题是Oracle正逐步将所有需要DBA人工干预的操作自动化,那么作为Oracle DBA必须要有其他的出路,而不是沦为数据的操作工。

现在的情况是不是也和那时相同呢?只不过我们维护的工具从Oracle变成了MySQL而已。

我觉得在互联网+的大环境影响下,一个优秀的DBA是绝对绝对不能只做好眼前的一亩三分地的。DBA存在的意义将不仅是数据的维护者,在一个合格的团队中应当扮演更重要的角色。如在一个项目的开发初期便开始掌控整个应用的数据流向,帮助项目选择相应的数据产品,设计相应的高可用架构等。

不过,很快新的问题又来了:我不懂开发,或者我不想去做开发,甚至我不想了解开发。

这又回到文章最初的那个问题,做开发真的会离我们的老本行越来越远么?

有句古话叫艺不压身。多学点东西总没坏处。这么来解释这个问题是不是有点太不负责任。。

那么我为什么坚持DBA要懂开发呢,其实我的初衷是想让组里的DBA小伙伴们了解我们的开发同学都在做什么。知己知彼,这样才能帮助你在项目评审时不做木偶,才能做到真的帮助项目组设计数据流向,而不是机械的等开发出身的所谓架构师帮你设计数据侧的架构,真的从Administrator变为Architect。

其次,学会开发技能帮你万事不求人。

为什么要这么说呢,可能是我比较讨厌求人办事儿的态度吧。比如很多大公司,职责分工会很细,有专门的运维开发组。那么DBAs只需要将自己的需求提出来,就有对口的运维开发同学来受理。当然上面的确实是一种较理想的状态。那么实际的情况会怎样呢?

实际情况往往是运维开发组的同学们忙着开发运维相关的需求,不断的将DBAs的需求后移。什么SQL审核之类的功能往后排期吧。

以上还是有运维开发组的情况。那么没有运维开发组的话只会更悲催。所有与我们日常工作相关的自动化工具都需要自己来做,这时候恐怕不想接触开发也不行了。

最后,不要错误的把数据库开发当成会写存储过程。这点Oracle出身的DBAs肯定会体会更深。因为Oracle强大的功能,导致很多应用在取数操作时使用存储过程会比直接在应用中实现更快。虽然我也是Oracle出身,但是多年开源数据库(主要是MySQL)的折磨使得我现在认为数据库就仅限于存、取数据(简单查询就够了)。更多数据相关的逻辑操作最好还是在应用侧完成,这样做的主要目的还是方便我们使用不同的数据产品来解决不同的应用需求,这样就做到了掌控数据流。同时使应用在设计时,数据侧更清晰。因此,我的观点是能在应用中实现的逻辑尽量不要放在存储过程里,同样,也不要错误的把数据库开发仅仅当成会写存储过程。

OK。那么我说的对DBAs来说的重要的开发技能是什么呢?

就现在而言,我个人觉得掌握PHP和Python应当是必须的(虽然我的JD上会写三者会其一即可。。)同时,要尽可能的了解常用的开发思想(比如RESTful的API、SOA、微服务等等),了解什么是MVC(当然这可能已经挺老旧的了),了解常用的PHP WEB框架或者Django和Flask以及等等等等。只要你精力足够恐怕没什么是你不能学到的。

最后,希望我们每一位DBAs都能去戗行~都能做一个称职的二手开发~在职业道路上越走越宽~

By Perry.Zhang

03.23.2016

posted @ 2016-12-15 14:20  feiyun8616  阅读(812)  评论(0编辑  收藏  举报