在经历了2009年的分布式启步之后,经过改造的数据库系统性能得到极大的提升,但这个变化仍然不构成今天这篇文章的主题,我想要说的是另外一方面的变化,这个变化在某种程度上影响着当前DBA的角色变化问题。
在分布式数据库时代,开发DBA的开发支持工作相比于以前,会有更多的系统思考问题的机会,会结合应用来设计量身定做的分布式数据库系统,如果一个DBA对业务有着深刻的理解,深刻理解数据库原理,既具有整体性的架构思维,又有一些关键细节把握能力的时候,设计一套分布式系统是水到渠成的事。对于开发支持的一些工作,比如SQL审核,表结构变更,数据订正,历史迁移,如果没有工具的支持,那做起来还是比较吃力的。这些方面,我们还有许多的道路要走,怎么样改变目前的现状。
在分布式数据库时代,系统DBA的运维要求难度在某方面有所降低,整个应用因为在容错性方面做了比较多的努力,比如down掉一个数据库时,对于整个应用系统的健康运行影响较小,运维的压力相对减少。相比于集中式的数据库环境下的运维,在另外一个层面运维难度又有所增加,第一,运维的机器数量呈几何指数的增长,由于大量采用低端机器,集群中某个机器出问题的概率大增,可能每天都会处理好几次down机的事故;第二,对监控系统的要求增加,对10台数据库的监控与对1000台数据库的监控方法肯定会有许多差异的,我们的监控系统也应该具有分布式的能力,避免单点;第三,系统精细化运维能力需要提升,采用大量低端pc server,在机房的设计上要尽可能的下功夫,可以参考一下google的机房建设的论文,pc server的硬件在不同应用上的定制化以尽量节能,CPU个数是否存在严重过多的情况,pc server上装的linux os是否有优化过,不同版本的os是否存在稳定性问题,os上跑的mysql是否已经足够的优化。
另外一个方面的变化,是来自于我们的分布式数据层的开发人员。他们开发的数据层是前端应用与底层数据库集群的中间纽带,是整个分布式数据库系统最重要的组成部份。而开发分布式数据层的开发人员自然会成为核心的核心,他们对于许多底层技术的理解相当的深入。与他们讨论问题时,倍感知识的匮乏。大部份DBA由于缺乏长期的开发经验的积累,双方沟通时,有时会比较吃力。
从长远的方向来讲,分布式数据库系统将会越来越依重于分布式中间件产品,整个应用系统的健康也会更依赖于开发人员的能力。在某种程度上,分布式数据库时代的DBA的重要性,会低于集中式数据库时代的DBA重要性。但对于公司而言,整个公司的技术实力有了质的飞跃,大大节约了成本,也掌握了未来的主动权。
如何扩大DBA的外延与内涵,来适应这种变化,是我们共同努力的方向.