2009年11月22日星期日

数据库技术人员的能力评估建议与培养规划

数据库技术人员的能力评估建议与培养规划

http://zerolab.co.cc/?q=node/41

  • 自挖坑,存档

岗位职能区分

数据库技术在现代软件技术领域有广泛的应用,与数据相关的技术岗位和职能,也可以区分为若干个不同的类别。根据在一个理想的开发团队中不同的分工和知识掌握的不同,可以区分为:

  • 程序员
  • 分析师
  • 设计师
  • 架构师管理员

对于数据库领域,分析与设计岗位、架构与运维岗位(管理员)的重叠较高。特别是分析与设计岗位通常在团队中由同一(组)人承担。在更多的团队中架构师也与分析和设计人员的岗位重叠。因此,从项目开发周期考虑,可以简单的分为三类:

  • 分析与设计岗位(含架构)
  • 开发岗位
  • 运维岗位

个人能力发展路线

基本路线图

  • 初级程序员
  • 中级技术岗位
  • 初级设计人员
  • 初级管理员
  • 中级开发人员
  • 高级技术岗位
  • 架构师
  • 设计师
  • 高级管理员

入门

常来说,新手接触数据库技术,从程序员岗位做起。这是因为对于数据库技术,此岗位比较容易切入。在软件开发团队中,通常允许初学数据库技术的开发人员,从

事受限的数据库开发工作,此类工作内容可以是基本的增删改查,其数据结构已经由设计人员固定。初级程序员岗位是练习 SQL

语言基本技能、理解关系模型的很好的切入点。

近 年来,此岗位工作通常使用 ORM

工具来完成工作,以提高工作效率和质量。但是对数据库的了解仍然对这个岗位有重要意义。对数据库知识有深入了解的开发人员,可以编写出更高质量的

ORM 代码,可以在必要的时候越过 ORM 的功能局限,编写扩展代码,可以定位性能瓶颈进行优化,等等。

此,关系型数据库研发岗位,在当今应用层封装技术非常成熟的前提下,入门更为容易。程序员可以先从 ORM

入手,通常自己比较熟悉的应用层编程环境学习数据访问知识,然后再进一步了解 SQL 语言的知识。另一方面, ORM

并不能代替关系数据库本身。关系数据库知识的掌握程度直接影响程序员的职业发展。

提升

分析/设计岗位

术人员掌握了基本的数据库访问知识后,通常在数据库技术领域,可以有三个不同的发展方向。常见的一个发展方向是转入分析与设计领域。UML

的用例分析、类图、需求分析等知识,与关系数据库的基本设计工具 E-R

图有直接的关系。由此也可以看出,关系数据库的设计和分析工作其实是整合在项目开发过程中的。因为,向此方向发展的技术人员应该提升综合能力,转向软件分

析设计知识。

良好的项目分析准备,能更好的厘清数据库设计所需要的信息。良好的数据库设计,是编写出优质应用层代码的基础。个人前期工作中积累的数据库编程经验,能够使得设计师理解数据库设计中的关键点,了解基本泛式和常见设计模式的运用方法。

===== 中级开发人员 ====

面向数据库的编程工作,本身存在较深入的技术要求。高水平的数据库开发人员,面对各种问题,可以更快的给出解决方案,提供高质量的软件产品。

通常在复杂查询、复杂事务、数据迁移、业务报表定制等方面,需要高水平的开发人员支持。

初级管理员

初级数据库管理员可能由开发人员转岗,也可能独立学习,或由系统管理员转岗。除了掌握系统管理员的基本能力,还要了解关系数据的知识。

作为数据库管理员,要能够实现数据库服务的部署、备份、恢复。能够为开发人员和客户提供问题诊断、预警支持。能够找出运营过程中发生的常见问题,予以解决。

高级技术岗位

架构师

对于大型项目,系统架构成为独立的、重要的岗位。架构师要求综合性的知识和能力,有关数据库领域,主要在于集群设计,备份方案的实现,这需要对操作系统、网络工程、数据库自身的特性都有深入的了解。要求能够解决项目中数据库层的性能和可靠性问题。

设计师

通常来说设计师的工作与架构师有一定的重叠。相对来说设计师的工作更偏"软",需要与开发团队有更多的交流。往往设计师要肩负高级数据库开发人员的职责。同时要有对业务的深入了解。能够设计出应对海量数据、高可靠性、复杂业务的数据库方案。

高级管理员

高级数据库管理员是通常概念中数据库领域的高端岗位。这个岗位要求有很强的运维技术能力。要能够参与数据库架构方案的设计,并将其实现。要求能够完成复杂集群的实施、备份恢复方案实现、预警和问题诊断。

技术能力评佑

初级岗位

预备要求

  • - 掌握基本的编程知识,能够用项目使用的编程语言参与开发
  • 文档阅读能力,能够读懂项目文档,使用术语与团队成员交流
  • 有内外存的基本知识

达标指标

  • 能够使用 ORM 工具(对我部门建议 SQLAlchemy )进行基本的增删改查操作
  • 能够理解 ORM 生成的 SQL 脚本
  • 能够手工编写简单的单表和两表关联操作
  • 学会使用客户端工具

中级岗位

中级开发人员

  • 能够使用 SQL 语言解决复杂的查询
  • 熟练使用工作数据库平台,包括特定的编程功能
  • 熟练使用 ORM 工具,可以灵活的使用 ORM 和 SQL 解决工作中的技术问题
  • 可以判断出程序运行中的数据性能问题、设计问题,提出解决方案

分析/设计人员

  • 能够理解业务模型,将其转化为数据模型
  • 能够使用 UML 完成从需求分析到数据库设计的思考和工具
  • 能够设计出合理的数据库结构,编程方便,维护容易,避免性能和安全隐患
  • 能够指导初级开发人员解决技术问题 - 熟练阅读和编写复杂的 SQL 语句

管理员

  • 熟悉 SQL 编程,能够编写复杂的报表查询和数据操作 - 熟悉 *nix 系统环境能够
  • 了解数据库安装和部署方法 - 能够为架构师和开发人员提供问题诊断支持
  • 能够设计和实现基本的备份方案 - 能够使用系统脚本和 SQL 快速解决常见的管理问题包括:
  • 数据备份恢复
  • 服务器状态查询
  • 解决死锁、死链
  • 存储迁移
  • 授权管理

高级岗位

架构师

  • 熟悉特定数据库的特性
  • 能够理解需求分析,掌握客户需求
  • 能够设计出合理的服务架构和运维方案
  • 能够为开发和设计人员提供数据库技术的咨询支持
  • 能够为运维人员提供数据库运维问题的解决方案
  • 能够为客户提供良好的售前咨询

设计师

  • 熟悉项目设计
  • 了解业务需求,能够与分析人员和客户进行良好的沟通
  • 了解数据特性,能够根据使用的技术进行设计
  • 能够将业务需求转化为良好的设计方案
  • 能够为开发和设计人员提供数据库技术的咨询支持

管理员

  • 熟悉机房环境
  • 熟悉操作系统和服务器的运维技术
  • 熟悉数据库特性
  • 能够制定数据库服务器整体运维方案
  • 能够为数据库运营提供灾备、预警、优化、扩展服务


--
每一个成功都是不可复制的。
……

劉鑫
March.Liu