成为一名DBA需要具备什么能力?
DBA 是数据库管理员(Database Administrator)的简称,是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支。
DBA 主要负责业务数据库从设计、测试到部署交付的全生命周期管理,它的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能。
在国外,也有公司把 DBA 称作数据库工程师(Database Engineer),两者的工作内容基本相同,都是保证数据库服务24小时的稳定高效运转。
DBA 与数据库开发工程师不同,DBA 的主要职责是运维和管理数据库管理系统,侧重于运维管理。而数据库开发工程师的主要职责是设计和开发数据库管理系统和数据库应用软件系统,侧重于软件研发。
DBA 主要负责以下几个方面:
设计数据库,包括表和字段
监视监控数据库日志
数据库备份与恢复
数据库用户密码和权限的管理/数据库安全
检查 SQL 语句是否符合规范
对 DBA 而言,掌握数据库的基本知识是必不可少的。从数据库的操作角度而言,SQL 语句才是基础中的基础。 DBA 一方面要根据需求在数据库中实现某些功能,另一方面要指导非数据库专业人士在数据库中完成他们想要实现的功能,所以,数据库中很多细节性的东西都需要 DBA 去掌握。
另外,还需要了解数据库架构方面和 SQL 底层的一些知识。例如,一般情况下,学过数据库的人都知道索引对提高查询性能十分重要,但却不知道过多的索引也会给数据的处理带来负担。如果不了解索引的内部实现机制以及 SQL 使用索引的原理,那么就无法合理地创建索引。
在实现了用户的需求后,接下来的工作就是维护。再好的数据库架构,也需要经常被维护和保养。例如,原来很有效的索引因为索引碎片的增多,读取的性能就会下降。因为业务的变化,有的索引被删除,我们要保证重要的数据不会丢失,敏感的数据不会被不该访问的人访问。这一系列的问题,除了要调查、分析,并制订出一套完整的方案外,还需要相关的知识来实施这套方案。
日常维护的过程中会遇到非常多的问题,这些问题除了 SQL 的问题外,很多是跟系统或者网络相关的,甚至是程序中出现的问题需要调试。所以,对于一名优秀的 DBA 而言,操作系统、计算机网络与通信、程序设计语言等相关知识都需要有所涉猎。
为了管理好数据库,特别是管理好多台服务器,DBA 有时也需要编写工具来辅助完成任务。所以,懂 Shell 或 Python 也是必不可少的。
通过上面的分析,可以得出 DBA 需要的技能如下:
熟练掌握数据库知识,包括 SQL 语言、备份、恢复、管理、数据库结构知识、数据库运行原理。
至少熟练掌握一种数据库,了解其他数据库(有一定应用能力)。实际应用中,很少有不与其他类型数据库交互的数据库,如果只熟练掌握一种数据库,那么当需要与其他数据库交互时,就会无从下手。
综合应用能力,有一定的程序设计能力,包括操作系统、网络与安全等知识。
DBA 主要有 ORACLE、MySQL、DB2、SQLSERVER 等方向。按照简单容易上手依次排为 SQL SERVER、MySQL、ORACLE。这里对 DB2 不做解释。
SQL SERVER 建议大家学习 .NET,MySQL、ORACLE 建议大家学习 JAVA。因为 SQL SERVER 和 .NET 是一家公司的,MySQL,ORACLE 和 JAVA 是属于一家公司的,数据接口都比较方便,兼容比较好。
职业前景
数据库作为整个系统的一部分,它的表现直接受服务器、操作系统、存储、网络、应用程序中SQL语句的质量、数据库设计的质量、以及其它诸多因素的影响,这些因素加在一起非常复杂,经验起着非常重要的作用。因此一个好的DBA除了知识作为基础,经验的多寡、见识的薄广,往往决定了是否合格与优秀。
优秀的DBA不仅关心自己运维的数据库系统的原理和发展,而且紧跟业界数据库前沿技术,并关注数据库领域的顶级会议。其中包括国际著名的数据库三大会议SIGMOD、VLDB、ICDE,还有知名数据库公司Percona主办的Percona Live和Oracle主办的Open World,以及国内知名的DBA盛会中国数据库技术大会(DTCC)等。
从另外一个角度说,DBA工作领域对实践经验和独立工作能力要求较高,没有经过大量的动手实践是很难胜任DBA相关工作的 [6] 。正是由于上述原因,其职场现状是DBA职位不易进入,而用人单位很难找到合适的从业人员,人员缺口非常大。
也正是由于上述原因,随着工作年限的增长,DBA的经验在增加,就像医生一样,其价值会越来越高,可以逐步成长为资深DBA、系统架构师、信息主管(CIO)等等,而不会出现许多软件开发从业人员在一定年龄后面临的转行问题。
另外,从职业前景看,从事DBA有着更多的职场机遇 [7] 。一般而言,系统中的软硬件都是IBM、HP、Oracle等业界一流厂商提供的,在与厂商谈判、合作、测试、实施、维护、优化等等过程中,会产生许多极佳的职场机遇,这一点是从事开发工作很难比拟的。
从DBA的工资统计数据看,随着工作经验的积累,DBA工资的增长幅度会远大于其它的计算机方向。
从工作的稳定性上看,系统的复杂性和经验的重要性已经决定了DBA职位的不可替代性。
从知识的积累、更新和替代角度看,数据库的根基始终没变,变的是不断增强的功能和不断扩展的应用范围。因此,在不同时期所学的知识和获得的经验是叠加和累积的关系。
因此, DBA职业是一个高挑战和高回报的职业,有一定能力的和聪明的技术人员应该挑战自我,进入这个被二十多年事实不断证明的越来越有前景的职业 。
- 点赞
- 收藏
- 关注作者
评论(0)