杂项-职位-DBA:DBA

ylbtech-杂项-职位-DBA:DBA 
数据库管理员(Database Administrator,简称DBA),是从事管理和维护 数据库管理系统(DBMS)的相关工做人员的统称,属于 运维工程师的一个分支,主要负责业务数据库从 设计、测试到部署交付的全生命周期管理。
DBA的核心目标是保证数据库管理系统的 稳定性、安全性、完整性和高性能
在国外,也有公司把DBA称做 数据库工程师(Database Engineer),二者的工做内容基本相同,都是保证数据库服务7*24小时的稳定高效运转,可是须要区分一下DBA和 数据库开发工程师(Database Developer):
1) 数据库开发工程师的主要职责是 设计和开发数据库管理系统和数据库应用软件系统,侧重于 软件研发
2) DBA的主要职责是 运维和管理数据库管理系统,侧重于 运维管理
1.返回顶部
一、
中文名:数据库管理员
外文名:Database Administrator
简    称:DBA
定    义:负责管理和维护 数据库系统的人
相关词条: 数据库运维运维工程师
二、
2.返回顶部
一、

主要职责

 

狭义

通常意义上的数据库管理员是一个负责管理和维护数据库服务器的人,数据库管理员负责全面管理和控制数据库系统,包括数据库的 安装、监控、备份、恢复等基本工做。数据库管理员的主要职责有如下几个方面:
设计数据库设计,包括字段、表和关键字段资源在辅助存储设备上是怎样使用的,怎样增长和删除文件及记录,以及怎样发现和补救损失
2. 监视监控数据库的警告日志,按期作备份删除。监控数据库的平常会话状况。 碎片、剩余表空间监控,及时了解表空间的扩展状况、以及剩余空间分布状况。监视对象的修改。按期列出全部变化的对象安装和升级数据库服务器(如Oracle、MicrosoftSQLserver),以及应用程序工具。 数据库设计系统存储方案,并制定将来的存储需求计划制定数据库备份计划,灾难出现时对数据库信息进行恢复。维护适当介质上的存档或者备份数据。备份和恢复数据库。 联系数据库系统的生产厂商,跟踪技术信息
3.备份对数据库的备份监控和管理数据库的备份相当重要,对数据库的备份策略要根据实际要求进行更改,数据的平常备份状况进行监控。
4.修改密码:规范数据库用户的管理按期对管理员等重要用户密码进行修改。对于每个项目,应该创建一个用户。DBA应该和相应的项目管理人员或者是程序员沟通, 肯定怎样创建相应的数据库底层模型,最后由DBA统一管理,创建和维护。任何数据库对象的更改,应该由DBA根据需求来操做。
5.SQL语句:对SQL语句的书写规范的要求一个SQL语句,若是写得不理想,对数据库的影响是很大的。因此,每个程序员或相应的工做人员在写相应的SQL语句时,应该严格按照 《SQL书写规范》一文,最后要有DBA检查才能够正式运行。
6.最终用户服务和协调:数据库管理员规定用户访问权限和为不一样用户组分配资源。若是不一样用户之间互相抵触,数据库管理员应该可以协调用户以最优化安排。
7.数据库安全:数据库管理员可以为不一样的数据库管理系统用户规定不一样的访问权限,以保护数据库不被未经受权的访问和破坏。例如,容许一类用户只能检索数据,而另外一类用户可能拥有更新数据和删除记录的权限。
 

广义

可是广义上的DBA职责比这个大得多,须要覆盖产品 从需求设计、测试到交付上线的整个生命周期,在此过程当中不只要负责数据库管理系统的 搭建和运维,更要参与到前期的数据库设计中期的数据库测试和后期的数据库容量管理和性能优化
对于初创公司,DBA的工做可能由运维工程师来兼任, 从申请域名开始,到服务器上架,配置网络设备,部署操做系统,安装数据库,设计和部署监控,防止漏洞和攻击等等。而大型公司对DBA工做的要求愈来愈高,如下从各个维度来看DBA工做的职责。
产品生命周期维度
DBA负责了业务数据库从设计、测试到部署交付的全生命周期管理 ,各个阶段的职责包括:
1. 产品发布前
这个阶段DBA的职责是数据库准入,主要包括:
1) 产品的业务熟悉
2) 产品数据库设计评审:包括 架构的合理性评估,存储容量和性能是否知足需求,是否须要缓存,是否须要冗余备份等,同时须要提供 数据库schema设计的合理性建议以使产品可以知足上线发布并稳定运行的基本要求;
3) 资源评估,包括所需的 服务器资源、网络资源以及资源的分布等, 同时把关产品对资源预算申请的合理性,控制服务成本
4) 资源就位将申请的服务器及基础环境/域名准备就位
2. 产品发布
这个阶段DBA负责数据库发布的具体工做,将具体的数据库安装部署和初始化完成后并对外提供服务。对于已在线数据库的升级也属于发布范畴,这个时候的产品发布通常要保障在线发布,在不中断对外服务的状况下完成数据库的升级。对于大型复杂的变动也存在停止服务发布完成后再从新提供服务的状况,但这种状况须要DBA经过尽量的技术手段来避免。
3. 产品运行维护
这个阶段的工做重点包括:
1) 监控:对数据库服务运行的状态进行实时的监控,包括 数据库会话、数据库日志、数据文件碎片、表空间监控、用户访问监控等,随时发现数据库服务的运行异常和资源消耗状况;输出重要的平常数据库服务运行报表以评估数据库服务总体运行情况,发现数据库隐患;
2) 备份:制定和实施数据库备份计划,灾难出现时对数据库信息进行恢复,维护适当介质上的存档或者备份数据。对数据库的备份策略要根据实际要求进行更改,数据的平常备份状况进行监控。
3) 安全审计:为不一样的数据库管理系统用户规定不一样的访问权限,以保护数据库不被未经受权的访问和破坏。例如,容许一类用户只能检索数据,而另外一类用户可能拥有更新数据和删除记录的权限。
4) 故障处理:对数据库服务出现的任何异常进行及时处理,尽量避免问题的扩大化甚至停止服务。这以前DBA须要针对各种服务异常,如机房/网络故障、程序bug等问题制定处理的预案,问题出现时能够自动或手动执行预案达到止损的目的。
5) 容量管理:包括数据库规模扩张后的 资源评估、扩容、机房迁移、流量调度等规划和具体实施。
4. 数据库性能优化
产品对外提供服务最重要的一点是用户体验,用户体验中很是重要的是产品的 可用性和响应速度。而如何用最合理的资源支持产品提供高可用和高速度的用户体验,这也是DBA的重要职责。
 

技术分工

产品的整个生命周期里数据库管理员的职责重要而普遍,这催生了各个纵向的运维技术方向,凡是关系到数据库 质量、效率、成本、安全等方面的工做,及涉及到的技术、组件,主要包括:
  • 数据库监控技术:包括 监控平台的研发、应用服务监控准确性、实时性、全面性的保障。
  • 数据库故障管理:包括服务的故障预案设计,预案的 自动化执行,故障的总结并反馈到产品/系统的设计层面进行优化以提升产品的稳定性。
  • 数据库容量管理:测量服务的容量,规划服务的机房建设,扩容、迁移等工做。
  • 数据库性能优化:从各个方向,包括 SQL优化、参数优化、应用优化、客户端优化等,提升数据库的性能和响应速度,改善用户体验。
  • 数据库 安全保障:包括数据库的 访问安全、防攻击、权限控制等。
  • 数据库自动部署:部署平台/工具的研发,及平台/工具的使用,作到安全、高效的发布服务。
  • 数据库集群管理:包括数据库的 服务器管理、分布式集群管理等。
  • 数据库模型设计:包括 数据库逻辑和物理模型的设计,如何实现 性能最优,架构可扩展,服务可运维等。
 

能力要求

数据库管理员以技术为基础,经过技术保障数据库提供更高质量的服务。DBA工做的职责及在业务中的位置决定了DBA须要具有更加广博的知识和深刻的技术能力。在数据库环境的管理与维护中,技术任务可归结成许多不一样的分类。下面列出了一名DBA应掌握的一些技术(排名不分前后)。
1.理解数据备份/恢复与灾难恢复
恢复已损坏的数据库是每个DBA应掌握的最重要的技能。DBA须要彻底理解数据库全部可能的备份与恢复方法,以及不一样备份方法与不一样恢复策略的对应关系。此外,DBA还须要与业务部门合做,一块儿确认业务需求,明确用户可以容忍的数据丢失底线。此外,业务用户还须要肯定在系统故障状况下,他们的业务可以维持多长时间。理解这些需求能够帮助DBA开发出一个知足业务用户要求的备份/恢复方法。一个优秀的DBA要按期测试备份与恢复流程,保证他们有能力恢复业务数据,知足企业所规定的业务数据丢失与恢复要求。
2.工具集的使用
所谓工具集,指是的他们要有一组用于执行不一样DBA任务的脚本。这个工具集应该包含不一样的小代码片断,它们能够快速诊断问题或执行一个特定的任务。这些工具脚本应该按DBA的活动类型归类,如备份、索引维护、性能优化、容量管理等。因为老是会执行新任务、发现新问题或找到其余人开发的好用脚本,所以一个优秀的DBA会不断地给这个工具集增长新脚本。此外,他还应该了解网上哪里可以找到一些免费的工具和脚本。一个好的DBA知道何时能够利用其余人编写的脚本,从而节省本身的时间和改进本身的工具集。
3. 知道如何快速寻找答案
数据库 天天会面临各类各样故障的挑战,从硬件到网络,从性能压力到程序bug,DBA都要从容应对,一一排除即便是数据库大牛,也不多是无所不知的所以每一个DBA一方面须要不断修炼本身,积累操做系统、网络、硬件、存储系统、分布式计算等理论基础另外一方面还要有快速寻找新问题解决方法的能力。若是一个数据库实例不能按预期方式运转,那么快速寻找新问题的解决方法也是一个重要能力。 一个好的DBA知道如何快速地在网上查找一个未知问题的解决方法。此外,他们也可能已经知道了一些很是不错的网站,也知道业界专家会提供一些好建议,同时知道何时应该忽略一些很差的建议。你可能想象不到,确实有一些建议不值得参考。
4.知道如何监控和优化数据库性能
对于任何数据库产品,性能都尤为重要,它会直接影响产品的响应速度和用户体验。对于一个DBA来讲,性能优化通常须要占用50%的工做时间,所以DBA须要知道如何监控和优化数据性能。
以SQL Server举例,性能是一个关键的问题,所以DBA须要知道如何修复故障和监控性能问题。有许多第三方性能监控工具能够帮助DBA优化性能。若是DBA只使用第三方工具,而不会使用SQL Server自带的原生工具来监控性能,那么相信很快就会出现问题。虽然使用第三方工具来监控性能也很不错,可是DBA必定要理解SQL自带的一些原生工具,如 SQL Server Profiler、Database Engine Tuning Advisor、Dynamic ManagementViews、系统/扩展的存储过程、Extended Events等。许多第三方工具实际上在使用这些底层的原生工具。所以,理解这些自带的原生工具将有利于加强DBA使用第三方工具的经验。
5.研究新版本
在技术领域中,没有什么是一成不变的。每隔两三年,主流数据库厂商都会发布一个大版本的更新。DBA应该紧跟新版本所做的修改,它们可能有许多变化方法,最好的方法是早晚介入这个过程。测试版开放后立刻下载和安装,尽快掌握第一手使用经验。一名好的DBA老是走在学习排头兵,老是会第一时间安装和测试新版本。这样他们就能够尽早理解新特性,而后提出一些合理的新建议,帮助组织更好地利用新版本数据库。
6. 理解代码最佳实践方法
DBA应该了解如何编写高效的代码。有许多糟糕的编码实践方法会致使拙劣的性能。一名好的DBA要可以理解和识别这些糟糕的编码实践方法,知道如何修改这些烂代码,让它们变成高效代码。此外,他们还要记录下写代码的最佳实践方法,而且将这些实践方法分享给其余人。
7.持续不断地学习
数据库及其组件涉及面很是广。DBA很难理解一个技术的方方面面。DBA须要持续学习如何管理数据库。这个学习过程有不少方法。其中之一就是参加正式培训。可是,并不是人人都有这样充裕的事件和金钱,也并不是人人都可以放下手头工做专门出去参加正式的培训。可是,还有许多其余方法能够得到培训,并且大多数仍是免费的。一名好的DBA必定要订阅一些按期发布数据库新技巧和新文章的社区网站。此外,他还应该加入一些用户组织,能够在周末参加一些当地的免费沙龙活动。
8.数据库安全性
安全性是一个热门话题。DBA应该彻底掌握如何实现数据库的安全访问。他们应该理解操做系统身份验证和数据库身份验证的区别,以及它们各自的使用场合。他们应该理解如何使用数据库角色来管理不一样类型用户的安全配置。他们应该理解链接数据库的端口与协议。此外,他们还应该理解如何加密整个数据库,或者加密一个数据库中一个表的某一个字段,同时理解关于加密数据的各类问题。
9.数据库设计
决定数据库性能的一个关键问题是数据库设计。DBA须要理解关于数据库设计的各个方面。他们要可以理解设计好坏的区别。他们须要理解为何使用正确的 外键约束、主键、检查约束和使用数据类型可以保持 数据库的数据完整性和实现高效的数据查询与更新
10. 索引设计
数据库索引是 提升应用程序检索和更新数据速度的重要环节。DBA须要知道索引的工做原理。他们应该知道 聚簇索引和非聚簇索引的区别,知道这些索引的物理存储方式。DBA应该知道如何在执行计划中使用这些索引。他们应该理解如何找到索引的使用统计、理解索引碎片及如何发现丢失的索引。他们应该知道如何维护索引,以及索引统计信息对于查询引擎的重要做用。
11.容量监控与规划
数据库每每要使用大量的资源,包括 CPU、内存、I/O及磁盘空间。DBA应该理解如何监控数据库所须要的不一样主机资源的用量。他们应该可以理解这些资源在不一样时间的使用状况,以及利用历史使用数据来规划将来的容量需求。在监控过程当中,DBA应该可以预见到容量规划会在未来何时出现问题,而后采起必要的措施保持数据库不会由于容量限制而出现中断。
12.数据库许可证
不一样的产品有许多不一样的许可证受权方式。并且,同一款产品自己又有许多不一样的版本。DBA应该理解所负责的数据库版本的不一样受权模式。他们应该可以提供指导如何经过合理购买受权来减小数据库总拥有成本,以及如何合理利用受权方法来下降将来版本的升级成本。
13.尽量实现自动化
DBA天天都须要执行许多的平常任务。其中一些任务须要天天执行,而另外一些则每周、每个月或每一年执行。一名好的DBA须要理解如何高效地安排本身的时间。其中一种方法是创建工做流程,这些平常任务的自动执行。经过实现平常任务的自动化执行,DBA就能够用更多的时间去关注于数据库环境管理中遇到的严重问题。
 

职业性格

DBA须要跟各类人员打交道,这些人员多是销售商、用户、开发人员或者管理人员。这说明:DBA必须具备下面的个性特色:
  • 自信心:足够的自信心可以帮助DBA在重要紧急时刻果断下决定,而不是不知所措地看着事故发生
  • 好奇心:几乎全部的数据库系统都在不停地更新。但并非全部的更新都有技术文档。对于好的DBA来讲,好奇心是必需的。没有好奇心和求知欲的DBA老是等待有人告诉他们答案。而一个求知欲强的DBA将安装最新版本的数据库系统,并当即开始搜寻那些哪怕是细微的功能和性能上的差别和加强,从而改进本身的工做。应试时一个必然问及的问题是:你手头有哪些参考资料?你如何使用它们?毫无疑问,若是你只回答了数据库的文档,或者你甚至没有读过他们,你的"股票市值"将大大降低。好奇心会驱使DBA们理解数据字典(Data Dictionary)、管理工具(Tools)或者其余支持包(Packages)。
  • 坚韧的意志力和沉着的心态:DBA经常会碰到棘手的问题。寻找答案是一个须要坚韧意志力、能够经受摔打的个性特色。同时面对紧急状况时要能处乱不惊,保持平和的心态冷静处理问题。
  • 自我驱动:自我驱动对每一个人都是很重要的,对DBA尤为如此。DBA要能想办法使问题出现,而不是等待问题的出现。自驱力强的DBA经常设法取得或者本身写一些必要的脚本(Script)来监控包括数据 表大小(Table Size)、表空间使用(Tablespace Usage)等项目,这些项目若是被忽视,他们将遇到麻烦。应试的时候DBA们经常被问及在PL/SQL、SQL或者SQL*PLUS方面的经验,这些问题将把你从历来没有编写过本身须要的脚本的那些DBA们区分开。
  • 良好的沟通能力、具备团队合做精神:DBA的工做须要跨部门、跨工种接触不少工程师,善于沟通、团队协做可以起到良好做用。不少时候,开发者、管理者、用户,他们会提出毫无道理的需求,DBA们须要老练地引导、修正它们的要求,说服他们。
  • 工做认真细致,勤于思考:最后说说注意细节,这种性格倾向很是重要。注意细节的DBA们衣着整洁,有本身的日程安排,在应试前对应聘的单位作过调查。注意细节的DBA们深刻了解数据库的内核,并能理解视图、表之间的关系。
  • 时间管理能力:数据库运维的工做很是繁琐,所以须要将碎片化的时间充分利用起来。
 

职业等级

DBA的等级并非很严格的。按照对数据库的掌握状况,我简单地分红三个等级: 初级Primary、中级Intermediate和高级Senior
初级DBA又称为DBBS,是英文Database Baby Sitter的缩写。初级DBA经常是兼职的,他们每每同时是程序员或者兼任其余的工做。初级DBA每每把我的简历写得很棒,参与了不少和数据库有关的项目或工做。可是,这些项目或者工做每每是:第三方软件供应商已经安装并配置了数据库,他们只作一些监控的工做。他们能处理一些简单的问题,但大多数时候他们向应用软件供应商求救。初级DBA更喜欢图形化的数据库管理或者监控工具,他们喜欢Access这样的桌面数据库简单易用,并把这些小型数据库的经验简单地应用到大型数据库相关的工做中。
初级DBA是最好区分的。而中级DBA和高级DBA就不太好区分。他们的差异在于经验的不一样和个性特色、能力方面的差别。中级DBA比较多,他们能够胜任高级DBA的大部分工做,包括:
一、数据库安装;
二、数据库配置和管理;
三、权限设置和安全管理;
四、监控和性能调节;
五、备份和恢复;
六、解决通常的问题;
中级DBA每每从业一年左右,熟悉某种操做系统环境下的数据库。由于对中级DBA来说,Windows NT和Unix是有很大差异的。中级DBA对SQL比较熟悉,他们本身购买了几本数据库方面的书籍,并深刻钻研。中级DBA每每同时兼任数据库程序员,他们的工做对性能、稳定性、安全性的追求基本上不是很高,每每配合高级DBA作一些例行工做。
高级DBA在国内是很是少的。他们可以熟练阅读数据库方面的英文资料,而且都熟悉不少种操做平台下的几种大型数据库。他们知道各类不一样数据库在不一样环境下的优点和劣势,并能在数据库平台和数据库环境的选择方面作出决策。他们通常通晓系统架构和数据库设计,并能对数据库进行各类级别的优化。高级DBA通常都配有助手,他们更偏向作决策和计划。高级DBA每每在银行业、保险业、在线交易等对稳定性、安全性、性能都要求比较高的关键业务处理领域大显身手。
不少时候,是否取得数据库专家认证证书并非很重要。不少数据库厂商的培训只要你去了都会得到证书。有不少的公司提供商业化的培训,他们的服务质量也有好有劣。因此证书并非特别地有意义。
 

行业竞争力

1. 薪酬竞争力
1)影响因素:经验和能力决定DBA的等级,熟悉的数据库系统决定DBA的领域,个性特色和潜力决定你的升值空间。
2)纵向对比:DBA做为专项领域的高质量人才,薪酬竞争力较高,市场需求旺盛,尤为是 中高阶DBA,每每紧缺程度高于软件研发工程师
3)第三方薪酬调查报告,仅供参考:
《2013年数据库工程师薪酬调查报告
《Database Administrator Salary
2. 市场需求
1)数据库运维行业的市场价值:参考ITOM(IT Operation Management) 2013年的市场规模是190亿美金
2)人员需求:因为业务规模较大,中大型公司比较紧缺中高阶DBA,而初创公司因为其新生的业务特色,比较紧缺初级和中级DBA。
 

职业前景

数据库做为整个系统的一部分,它的表现直接受服务器、操做系统、存储、网络、应用程序中SQL语句的质量、数据库设计的质量、以及其它诸多因素的影响,这些因素加在一块儿很是复杂,经验起着很是重要的做用。所以一个好的DBA除了知识做为基础,经验的多寡、见识的薄广,每每决定了是否合格与优秀。
优秀的DBA不只关心本身运维的数据库系统的原理和发展,并且紧跟业界数据库前沿技术,并关注数据库领域的顶级会议。其中包括国际著名的数据库三大会议SIGMOD、VLDB、ICDE,还有知名数据库公司Percona主办的Percona Live和Oracle主办的Open World,以及国内知名的DBA盛会中国数据库技术大会(DTCC)等。
从另一个角度说,DBA工做领域对实践经验和独立工做能力要求较高,没有通过大量的动手实践是很难胜任DBA相关工做的 。正是因为上述缘由,其职场现状是DBA职位不易进入,而用人单位很难找到合适的从业人员,人员缺口很是大。
也正是因为上述缘由,随着工做年限的增加, DBA的经验在增长,就像医生同样,其价值会愈来愈高,能够逐步成长为资深DBA、系统架构师、信息主管(CIO)等等,而不会出现许多软件开发从业人员在必定年龄后面临的转行问题。
另外,从职业前景看,从事DBA有着更多的职场机遇 。通常而言,系统中的软硬件都是IBM、HP、Oracle等业界一流厂商提供的,在与厂商谈判、合做、测试、实施、维护、优化等等过程当中,会产生许多极佳的职场机遇,这一点是从事开发工做很难比拟的。
从DBA的工资统计数据看,随着工做经验的积累,DBA工资的增加幅度会远大于其它的计算机方向
从工做的稳定性上看,系统的复杂性和经验的重要性已经决定了DBA职位的不可替代性
从知识的积累、更新和替代角度看,数据库的根基始终没变,变的是不断加强的功能和不断扩展的应用范围。所以,在不一样时期所学的知识和得到的经验是叠加和累积的关系。
所以, DBA职业是一个高挑战和高回报的职业,有必定能力的和聪明的技术人员应该挑战自我,进入这个被二十多年事实不断证实的愈来愈有前景的职业
二、
3.返回顶部
 
4.返回顶部
 
5.返回顶部
一、
二、
 
6.返回顶部
 
warn 做者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。
相关文章
相关标签/搜索