阅读本节之前,我们先来了解一下什么是 DBA。
DBA 是数据库管理员(Database Administrator)的简称,是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支。
DBA 主要负责业务数据库从设计、测试到部署交付的全生命周期管理,它的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能。
在国外,也有公司把 DBA 称作数据库工程师(Database Engineer),两者的工作内容基本相同,都是保证数据库服务24小时的稳定高效运转。
DBA 与数据库开发工程师不同,DBA 的主要职责是运维和管理数据库管理系统,侧重于运维管理。而数据库开发工程师的主要职责是设计和开发数据库管理系统和数据库应用软件系统,侧重于软件研发。
DBA 主要负责以下几个方面:
对 DBA 而言,掌握数据库的基本知识是必不可少的。从数据库的操作角度而言,SQL 语句才是基础中的基础。 DBA 一方面要根据需求在数据库中实现某些功能,另一方面要指导非数据库专业人士在数据库中完成他们想要实现的功能,所以,数据库中很多细节性的东西都需要 DBA 去掌握。
另外,还需要了解数据库架构方面和 SQL 底层的一些知识。例如,一般情况下,学过数据库的人都知道索引对提高查询性能十分重要,但却不知道过多的索引也会给数据的处理带来负担。如果不了解索引的内部实现机制以及 SQL 使用索引的原理,那么就无法合理地创建索引。
在实现了用户的需求后,接下来的工作就是维护。再好的数据库架构,也需要经常被维护和保养。例如,原来很有效的索引因为索引碎片的增多,读取的性能就会下降。因为业务的变化,有的索引被删除,我们要保证重要的数据不会丢失,敏感的数据不会被不该访问的人访问。这一系列的问题,除了要调查、分析,并制订出一套完整的方案外,还需要相关的知识来实施这套方案。
日常维护的过程中会遇到非常多的问题,这些问题除了 SQL 的问题外,很多是跟系统或者网络相关的,甚至是程序中出现的问题需要调试。所以,对于一名优秀的 DBA 而言,操作系统、计算机网络与通信、程序设计语言等相关知识都需要有所涉猎。
为了管理好数据库,特别是管理好多台服务器,DBA 有时也需要编写工具来辅助完成任务。所以,懂 Shell 或 Python 也是必不可少的。
通过上面的分析,可以得出 DBA 需要的技能如下:
DBA 主要有 ORACLE、MySQL、DB2、SQLSERVER 等方向。按照简单容易上手依次排为 SQL SERVER、MySQL、ORACLE。这里对 DB2 不做解释。
SQL SERVER 建议大家学习 .NET,MySQL、ORACLE 建议大家学习 JAVA。因为 SQL SERVER 和 .NET 是一家公司的,MySQL,ORACLE 和 JAVA 是属于一家公司的,数据接口都比较方便,兼容比较好。