数据库技术人员的能力评估建议与培养规划
- 自挖坑,存档
岗位职能区分
数据库技术在现代软件技术领域有广泛的应用,与数据相关的技术岗位和职能,也可以区分为若干个不同的类别。根据在一个理想的开发团队中不同的分工和知识掌握的不同,可以区分为:
- 程序员
- 分析师
- 设计师
- 架构师管理员
对于数据库领域,分析与设计岗位、架构与运维岗位(管理员)的重叠较高。特别是分析与设计岗位通常在团队中由同一(组)人承担。在更多的团队中架构师也与分析和设计人员的岗位重叠。因此,从项目开发周期考虑,可以简单的分为三类:
- 分析与设计岗位(含架构)
- 开发岗位
- 运维岗位
个人能力发展路线
基本路线图
- 初级程序员
- 中级技术岗位
- 初级设计人员
- 初级管理员
- 中级开发人员
- 高级技术岗位
- 架构师
- 设计师
- 高级管理员
入门
通
常来说,新手接触数据库技术,从程序员岗位做起。这是因为对于数据库技术,此岗位比较容易切入。在软件开发团队中,通常允许初学数据库技术的开发人员,从
事受限的数据库开发工作,此类工作内容可以是基本的增删改查,其数据结构已经由设计人员固定。初级程序员岗位是练习 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