努力呀
作者努力呀·2017-07-17 10:16
数据库运维工程师·XX

致DBA,也写给想从事数据库工作的你

字数 2687阅读 1415评论 0赞 1

来源|丁码农博客

随着未来数据规模越来越大,数据的安全性越来越重要,数据的维护也变得很关键,DBA炙手可热,想要从事数据库方向工作?我们先来理清下面这些内容。

经常有人问我,有关数据库方面的职位、职业规划、转型等相关的问题。对于经常听到的“DBA(数据库管理员)、数据库开发工程师、数据挖掘工程师、数据库架构师......”这些职位,之前我也比较迷惑,甚至搞不清楚这些岗位具体的工作任务和职责,更别提什么职业规划了。后来通过跟从事数据库方面工作的朋友交流,结合自己的见解,抽空整理了一些经验,希望能够帮助到想走这条路的朋友。

数据库方面的工作

总的来讲,数据库方面的工作主要有两种:数据库管理,数据库开发。这是两个不同的方向。

数据库管理

所谓数据库管理,就是我们通常说的 DBA。主要工作是做数据库安装、管理、调优、备份、容灾、集群、安全等,主要技术点是除了对数据库本身比较熟悉外,还要对硬件(主机、存储、网络)、操作系统等方面有较好的理解,否则很难做到真正的高手。

例如,在做数据库调优中,I/O是比较常见的性能瓶颈,你要想真正最大限度的调优,必须了解磁盘(硬件)的工作原理,还要了解操作系统的相关知识(例如windows下的文件系统的特性)。在做数据库集群的过程中,拿SQL Server为例子,必须先实现windows操作系统的集群,如果你不了解windows系统的管理,怎么能胜任呢?优秀的DBA,不一定是个优秀的系统管理员,但至少也是非常数据操作系统实现和管理的,这毫不夸张。

数据库开发

所谓数据库开发,我认为有好几种。首先,一般人理解是指涉及到数据库应用的开发。例如使用PHP+MySQL开发网站的,运用Java+Oracle开发银行系统的,asp.net+mssqlserver开发企业级ERP系统的......这些都可以认为是数据库开发。在某些公司(一般是大公司),也有专业从事数据库层面开发的工程师。通常他们的系统都比较依赖于数据库层面,例如使用了很多事务控制,存储过程,高并发经常造成数据库死锁等等。这样一来,工作任务会很重,必须有单独的“数据库开发工程师”。

还有一种是采用纯数据库系统上的语言进行开发工作,这类一般是指专注于纯数据库技术开发的人员,如数据挖掘工程师(数据库抽取、传输、加载,是数据仓库应用的一部份)。此类入门的门槛较高,薪资待遇也非常好,随着商业智能在国内的兴起,这类职位的需求也越来越多。

有些大型公司,对数据库应用比较深入,可能会设置专业的DBA从事开发顾问工作,主要责任是与项目组一起进行系统的数据库结构设计、SQL相关的开发优化,建库建表操作等,这类DBA要求对系统业务有一定了解,对数据库开发与优化也比较熟悉,对这种职位每个公司的名称可能不一样,有些公司还是称为DBA或数据库开发工程师,阿里巴巴公司称为开发DBA或应用DBA。

例如我有个朋友在阿里巴巴下面的支付宝DBA项目组,他就主要从事Oracle数据库管理和调优工作。总而言之,大公司会细分,小点的公司则一般希望你是全能型的。这很好理解,大公司有钱,且对技术要求更高,所以需要很多“专才”来协作。而小公司财力等各个方面有限,相对技术要求低一点(也不一定),所以更倾向于“通才”(至于那种太小的公司或者不是专门从事IT行业的,一般不会设专门的DBA。打个比方,一个皮包公司招到一个程序员,恨不得立马就把公司里的美工也炒了,可想而知小老板对人才的渴望和要求)。至于“通才”还是”专才“,还是要看自己定位了。

应届生能选择做DBA吗?

应届毕业生要从事 DBA 工作门坎比较高,因为 DBA 职位是需要有一定实践经验的人员,但是如果你的特长刚好是公司需要的:比如说你在学校从事的项目或课题中有较深入的数据库相关应用,你在数据库理论方面又有很好的理解。或者你没有做过DBA,但是学校里参与设计过数据库系统,对数据库实现原理很了解。如果你是211或者有高学历(硕士以上),人家可能会愿意培养你。否则,成功入职的可能性就很小了。

但是,随着公司业务的快速发展,对于DBA的需求有增无减,所以目前行业里依然有很大的缺口。随着devops,自动化运维等技术的推行,会在一定程度上替代部分重复性的工作和任务,但是对高级DBA的需求依然很大,随着数据量的增长,业务需求的不断改进,对于系统的稳定性需求会越来越高,DBA在其中扮演的角色还是很重要的,从短期来看,DBA行业水涨船高,要求会越来越高,但是前途依旧光明。

关于考试与认证

“认证”的认可度是不错,数据库相关培训的价格也不低,但是,参加数据库培训更重要的是老师的经验&学习环境。如果你真想提高自己,而且有经济基础,那可以选择参加数据库培训,作为一个基础相对薄弱的新手,可能你需要花更多的精力来做这件事情,你要明白这是两座大山,所以对你的毅力是一个挑战,因为要想在短期时间内消化基本上不太可能,所以最好理论+大量实战相结合验证自己的学习效果,如果你连题目的意思都不理解或者里面的概念都没听过那还是花一些时间做些功课。

数据库学习的方法

关于数据库学习的方法,一定要理论加实践(否则就是纸上谈兵了),光看书是没用的,而且会让人感觉投入多收益少而失去学习兴趣。开始时多动手实践,掌握常用的功能,在工作中或网络上解决实际的问题,学习大牛解决问题的方法,对于不理解或不熟悉的知识点自己要亲自实践,解决的问题多了,自然就会感觉水平提高。

到一个阶段后,接着会发现水平提高得越来越慢,这时反过来从更基础的层面系统的学习数据库知识,尤其是研究偏底层和原理性的知识,再加以实践。过了这个阶段,基本算是入行了。现在很多网站上,经常有许多深入数据库底层相关的文章与讨论,让一些菜鸟望而却步,这些知识很重要而且难掌握,但并不表示这些知识很实用,因为我们学习知识主要目的是解决问题,而不是表现自己。因为我们大多数人还是从事应用层开发。

我曾对SQL Server的索引、事务、锁一直比较疑惑,想恶补一下。抱着几本《SQL Server 2005 技术内幕》啃,这系列的书是从SQL Server 2005底层开始揭示的,确实写得好,可惜不太适合我这种菜鸟。试想,连一条复杂的SQL语句都写不出来,你跟他讲SQL Server引擎内部执行原理,那能有好效果吗?所以,还是那句经典的话:由浅入深,循序渐进,理论加实践。说起来简单,做起来难啊!没有捷径。工作中积累,业余还得学习,不断积累多年。

( 本文来源:blog.csdn.net/dinglang_2009 ,转自微信公众号StuQ)

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广