我为什么坚持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
我为什么坚持DBA一定要懂开发的更多相关文章
- 招聘前端、Java后端开发、测试、Mysql DBA
公司介绍: http://www.lagou.com/gongsi/43095.html http://www.yamichu.com 简历发到: zhuye@yamichu.com 招聘职位: JA ...
- 测试经验总结(“二次开发”)
参考原文地址:http://www.51testing.com/html/86/n-3601786.html 不知不觉已经工作五年时间了,从茁壮.康拓普.利鑫云端到现在的惠卡世纪,经历过机顶盒软件(嵌 ...
- 【python全栈开发】初识python
本人最开始接触python是在2013年接触,写过hello word!在此之前对开发类没有多大兴趣,不知道重要性,属于浑浑噩噩,忙忙乎乎,跌跌撞撞的.随后选择了Linux运维作为就业主攻方向. 经过 ...
- 升讯威微信营销系统开发实践:(1)功能概要与架构设计( 完整开源于 Github)
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...
- 美图秀秀DBA谈MySQL运维及优化
美图秀秀DBA谈MySQL运维及优化 https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=401797597&idx=2& ...
- INFORMATICA 开发规范
目 录 Informatica开发规范.... 1 目 录.... 2 1 编写目的.... 4 2 ETL研发责任人界定.... 4 3 ETL ...
- 2015 年最热门的国人开发开源软件 TOP 50
开源中国在 2015 年得到了快速的发展,单开源软件收藏量就接近 40000 款,其中不乏优质的国产开源项目.本文从软件的收藏.下载.访问等多角度挑选出了 2015 年最热门的国产开源软件前五十名,让 ...
- 6-MySQL DBA笔记-查询优化
第6章 查询优化 查询优化是研发人员比较关注也是疑问较多的领域.本章首先为读者介绍常用的优化策略.MySQL的优化器.连接机制,然后介绍各种语句的优化,在阅读本章之前,需要先对EXPLAIN命令,索引 ...
- PostgreSQL 优势,MySQL 数据库自身的特性并不十分丰富,触发器和存储过程的支持较弱,Greenplum、AWS 的 Redshift 等都是基于 PostgreSQL 开发的
PostgreSQL 优势 2016-10-20 21:36 686人阅读 评论(0) 收藏 举报 分类: MYSQL数据库(5) PostgreSQL 是一个自由的对象-关系数据库服务器(数据库 ...
随机推荐
- Save Update saveOrUpdate delete
参考:Hibernate Session的saveOrUpdate()方法 saveOrUpdate与Update的作用 Hibernate Delete query Hibernate Basics ...
- img 鼠标滑上后图片放大,滑下后图片复原
<style type="text/css">img{ -webkit-transition: ease .2s; transition: ease .2s; -web ...
- deepin2014.1快捷键
初试deepin2014.1,发现windows很多快捷键在deepin中也完美支持,举例如下: ctrl+shift+n : 新建文件夹 窗口键+E:打开文件系统 窗口键+TAB:3D切换桌面 al ...
- QQ头像一键添加校徽
简书链接地址:http://www.jianshu.com/p/dcb2cbd07e4d 项目展示链接地址:www.zhaozhengyu.cn/SchoolImage/index.html
- 二维离散平稳小波分解swt2
对信号X进行N尺度平稳小波分解 [A,H,V,D]=swt2(X,N,'wname'); clc,clear all,close all; load woman; [cA,cH,cV,cD]=swt2 ...
- art中的部分内容,留着慢慢研究
root@hbg:/tmp# cat /proc/mtddev: size erasesize namemtd0: 00040000 00010000 "u-boot" ...
- Openjudge-计算概论(A)-点与正方形的关系
描述: 有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴.写一个程序,判断一个给定的点是否在这个正方形内.输入输入坐标x,y输出ye ...
- BJFU 1397 致我们终将逝去的爱情
LIS 由于要记录轨迹,所以不能用O(nlogn)优化,直接dp加father记录每个节点的转移. #include<cstdio> #include<algorithm> ...
- 有关webapplicationcontext的初始化
ApplicationContext是Spring的核心,Context我们通常解释为上下文环境,我想用“容器”来表述它更容易理解一些,ApplicationContext则是“应用的容器”了:在We ...
- sql语句的group by与having子句
准备数据: DROP TABLE IF EXISTS `t_player`; CREATE TABLE `t_player` ( `player_id` int(11) NOT NULL AUTO_I ...