作者/jeffrey yao 曾经做了大约9年的dba,期间有一些开发人员不断的问我:“我厌倦了编码,现在我想转为dba,我应该从什么地方开始呢?”我答应基于我的经验写一篇文章去回答这些问题,所以这篇文章主要基于我做sqlserver和db2的dba的经验,并且欢迎其他dba
作者/jeffrey yao
曾经做了大约9年的dba,期间有一些开发人员不断的问我:“我厌倦了编码,现在我想转为dba,我应该从什么地方开始呢?”我答应基于我的经验写一篇文章去回答这些问题,所以这篇文章主要基于我做sqlserver和db2的dba的经验,并且欢迎其他dba在此问题上共享他们的经验。
初级dba的战略1. 着眼于基本的dba任务:事有先后。
成为初级dba最快的方式是了解dba每天的任务范围并掌握完成这些任务需要的技术。我认为初级dba的工作至少是每天dba任务的40%。下面是每个dba基本的任务列表。
安装sqlserver。需要的知识:sqlserver组件(企业管理器、事件探查器、查询分析器和其他工具,等等),sqlserver的版本和需要的安装环境(硬件、操作系统、网络协议等等),远程/自动/手动安装。备份/恢复。需要的知识:恢复模型,备份/恢复工具和相应的sql语句,怎样使你的恢复计划适应你的商业需求。安全:角色/登录/用户帐号。需要的知识:审计模式,角色类型,怎样去管理安全帐号,分配/取消访问数据的权限和怎样做一个安全计划以适应你的商业需求。数据库维护。需要的知识:一些dbcc命令(我最爱用dbcc checkdb/dbreindex/checkcatalog/inputbuffer),sp_who,sp_kill,和所有的数据库任务向导。2. 着眼于用sql编程:将来成长的基础
t-sql是一个强有力的工具,它能使dba通过将日常任务如审计、备份/恢复、性能调优等编写为脚本来实现他们的数据库管理风格。现实世界里大多数应用程序的性能问题都跟糟糕的sql语句有关。我不能过分强调写好的sql脚本的重要性。
对我而言下面是一些基本的sql语句:
关于数据库、表、视图、自定义函数、触发器和存储过程的crud(create、read、update、delete)语句。t-sql编程控制语句,如if…else…,begin…end,while…break…continue和case语句以及游标的使用。sqlserver内部函数,如@@identity、@@spid、substring(),convert/cast()等等。中级dba的战略着眼于数据模型:超越数据进入商业。需要的知识:为建立数据库的商业知识;逻辑/物理模型的知识(3范式);专门的建模工具如erwin、visio等。一个好的数据模型不断能提升应用程序的性能,而且能减少数据库的维护。例如,我曾经看到过一个政府中介的数据模型,它在每个表里都存储了所有雇员的薪水信息,原来的想法是要更快的生成各个不同部门需要的汇总报表,但后来发现在同步所有的信息时时间和速度上的开销太大(一些表有触发器,同步时增加了时间)。着眼于性能调优:有趣并有挑战性。需要的知识:表/索引结构、索引选择/建立;服务器/数据库/会话选项;执行计划;使用事件探查器来优化和审计sql语句,dbcc语句。性能调优是dba发挥作用的地方。对于dba来说要找到总是隐藏在某处的挑战以便一个查询能在2秒之内完成而不是2分钟。相信我。性能调优是很有趣的。着眼于高级管理:成为专家的关键。需要的知识/技能:vbscript,dts,sql-dmo,复制。我总是认为不懂vbscript的dba在管理sqlserver系统时不可能有创造性,因为微软使vbscript变得如此强大以至于它能用来促进大多数基于windows的应用程序的管理,sqlserver也不例外。当联合使用vbscript、dts和sql-dmo时,我打赌基本上所有的管理工作都能写成脚本用调度来自动运行。高级dba战略着眼于软件技能:职业的关键。作为高级dba,你更多的时间是花在和客户做需求分析上,给其他组的成员提供指导,这儿的软件技能如时间管理、沟通、谈判和领导等等,比技术技能扮演了更重要的角色。没有软件技能。你很难成为一个有价值的dba。在这方面我有血的教训。我还记得很久以前,我被分配去为一个项目做数据库架构,我不得不和不同部门的客户讨论他们的需求。我不时的发布一些新的数据模型版本。然而,在这个过程期间,有几列我不断的改变,要么添加它们到不同的表里,要么简单的删除或重命名。问题在于我忘记记录为什么我要修改它们,是基于和谁的讨论。当我被问及在版本1.0.04(四周以前)和版本1.0.06之间特定列的不同时,我不能告诉为什么列出现在版本1.0.04而没出现在版本1.0.05里,然后在版本1.0.06里又出现了。我被告知我不能胜任我的角色即使我的项目经理肯定我的技术能力。后来,因为项目经理不得不考虑客户的担心而取消我的角色。我好笨啊!从那时起,我就形成了记录对基本的项目文件做的每个更改背后的原因的习惯。着眼于创新:通向荣耀的最后一步。创新是使用目前的技术和资源来创建新的过程/方法,以便在时间和经济效益上做出更好的解决方案。作为高级dba,要有广阔的视野,并要有兴趣对你老板的商业底线作出贡献。在电子商务时代,更多的商业依赖于数据做出决定和行动,这给所有的dba,特别是高级dba有更多的机会在数据价值链的每一阶段去有创造性的操作数据,从数据收集、处理、挖掘到报表、分发和存储.结论要成为一个有资格的dba,你必须在正确的时候精通正确的技能。你做dba的开头不必知道每一件事,但你必须知道从哪儿开始。在初级dba和中级dba或者中级dba和高级dba之间没有明确的界线。但我个人感觉当级别越来越高的时候,你需要更多的技术技能来证明你的价值。最后给那些有兴趣做dba的人的忠告:
不要把数据库管理当作你的日常工作,而是把它当作证明你想像力和创造力的一门艺术。