数据库技术在现代软件技术领域有广泛的应用,与数据相关的技术岗位和职能,也可以区分为若干个不同的类别。根据在一个理想的开发团队中不同的分工和知识掌握的不同,可以区分为:
对于数据库领域,分析与设计岗位、架构与运维岗位(管理员)的重叠较高。特别是分析与设计岗位通常在团队中由同一(组)人承担。在更多的团队中架构师也与分析和设计人员的岗位重叠。因此,从项目开发周期考虑,可以简单的分为三类:
通
常来说,新手接触数据库技术,从程序员岗位做起。这是因为对于数据库技术,此岗位比较容易切入。在软件开发团队中,通常允许初学数据库技术的开发人员,从
事受限的数据库开发工作,此类工作内容可以是基本的增删改查,其数据结构已经由设计人员固定。初级程序员岗位是练习 SQL
语言基本技能、理解关系模型的很好的切入点。
近 年来,此岗位工作通常使用 ORM
工具来完成工作,以提高工作效率和质量。但是对数据库的了解仍然对这个岗位有重要意义。对数据库知识有深入了解的开发人员,可以编写出更高质量的
ORM 代码,可以在必要的时候越过 ORM 的功能局限,编写扩展代码,可以定位性能瓶颈进行优化,等等。
因
此,关系型数据库研发岗位,在当今应用层封装技术非常成熟的前提下,入门更为容易。程序员可以先从 ORM
入手,通常自己比较熟悉的应用层编程环境学习数据访问知识,然后再进一步了解 SQL 语言的知识。另一方面, ORM
并不能代替关系数据库本身。关系数据库知识的掌握程度直接影响程序员的职业发展。
技
术人员掌握了基本的数据库访问知识后,通常在数据库技术领域,可以有三个不同的发展方向。常见的一个发展方向是转入分析与设计领域。UML
的用例分析、类图、需求分析等知识,与关系数据库的基本设计工具 E-R
图有直接的关系。由此也可以看出,关系数据库的设计和分析工作其实是整合在项目开发过程中的。因为,向此方向发展的技术人员应该提升综合能力,转向软件分
析设计知识。
良好的项目分析准备,能更好的厘清数据库设计所需要的信息。良好的数据库设计,是编写出优质应用层代码的基础。个人前期工作中积累的数据库编程经验,能够使得设计师理解数据库设计中的关键点,了解基本泛式和常见设计模式的运用方法。
===== 中级开发人员 ====
面向数据库的编程工作,本身存在较深入的技术要求。高水平的数据库开发人员,面对各种问题,可以更快的给出解决方案,提供高质量的软件产品。
通常在复杂查询、复杂事务、数据迁移、业务报表定制等方面,需要高水平的开发人员支持。
初级数据库管理员可能由开发人员转岗,也可能独立学习,或由系统管理员转岗。除了掌握系统管理员的基本能力,还要了解关系数据的知识。
作为数据库管理员,要能够实现数据库服务的部署、备份、恢复。能够为开发人员和客户提供问题诊断、预警支持。能够找出运营过程中发生的常见问题,予以解决。
对于大型项目,系统架构成为独立的、重要的岗位。架构师要求综合性的知识和能力,有关数据库领域,主要在于集群设计,备份方案的实现,这需要对操作系统、网络工程、数据库自身的特性都有深入的了解。要求能够解决项目中数据库层的性能和可靠性问题。
通常来说设计师的工作与架构师有一定的重叠。相对来说设计师的工作更偏“软”,需要与开发团队有更多的交流。往往设计师要肩负高级数据库开发人员的职责。同时要有对业务的深入了解。能够设计出应对海量数据、高可靠性、复杂业务的数据库方案。
高级数据库管理员是通常概念中数据库领域的高端岗位。这个岗位要求有很强的运维技术能力。要能够参与数据库架构方案的设计,并将其实现。要求能够完成复杂集群的实施、备份恢复方案实现、预警和问题诊断。
刘鑫 wrote:
>
>
> 数据库技术人员的能力评估建议与培养规划
>
> http://zerolab.co.cc/?q=node/41
>
> * 自挖坑,存档
>
>
> 岗位职能区分
>
> 数据库技术在现代软件技术领域有广泛的应用,与数据相关的技术岗位和职能,
> 也可以区分为若干个不同的类别。根据在一个理想的开发团队中不同的分工和知
> 识掌握的不同,可以区分为:
>
> * 程序员
> * 分析师
> * 设计师
> * 架构师管理员
>
> 对于数据库领域,分析与设计岗位、架构与运维岗位(管理员)的重叠较高。特
> 别是分析与设计岗位通常在团队中由同一(组)人承担。在更多的团队中架构师
> 也与分析和设计人员的岗位重叠。因此,从项目开发周期考虑,可以简单的分为
> 三类:
>
> * 分析与设计岗位(含架构)
> * 开发岗位
> * 运维岗位
>
>
> 个人能力发展路线
>
>
> 基本路线图
>
> * 初级程序员
> * 中级技术岗位
> * 初级设计人员
> * 初级管理员
> * 中级开发人员
> * 高级技术岗位
>
> * 架构师
> * 设计师
> * 高级管理员
> * - 掌握基本的编程知识,能够用项目使用的编程语言参与开发
> * 文档阅读能力,能够读懂项目文档,使用术语与团队成员交流
> * 有内外存的基本知识
>
>
> 达标指标
>
> * 能够使用 ORM 工具(对我部门建议 SQLAlchemy )进行基本的增删改查操作
> * 能够理解 ORM 生成的 SQL 脚本
> * 能够手工编写简单的单表和两表关联操作
> * 学会使用客户端工具
>
>
> 中级岗位
>
>
> 中级开发人员
>
> * 能够使用 SQL 语言解决复杂的查询
> * 熟练使用工作数据库平台,包括特定的编程功能
> * 熟练使用 ORM 工具,可以灵活的使用 ORM 和 SQL 解决工作中的技术问题
> * 可以判断出程序运行中的数据性能问题、设计问题,提出解决方案
>
>
> 分析/设计人员
>
> * 能够理解业务模型,将其转化为数据模型
> * 能够使用 UML 完成从需求分析到数据库设计的思考和工具
> * 能够设计出合理的数据库结构,编程方便,维护容易,避免性能和安全隐患
> * 能够指导初级开发人员解决技术问题 - 熟练阅读和编写复杂的 SQL 语句
>
>
> 管理员
>
> * 熟悉 SQL 编程,能够编写复杂的报表查询和数据操作 - 熟悉 *nix 系统
> 环境能够
> * 了解数据库安装和部署方法 - 能够为架构师和开发人员提供问题诊断支持
> * 能够设计和实现基本的备份方案 - 能够使用系统脚本和 SQL 快速解决常
> 见的管理问题包括:
> * 数据备份恢复
> * 服务器状态查询
> * 解决死锁、死链
> * 存储迁移
> * 授权管理
>
>
> 高级岗位
>
>
> 架构师
>
> * 熟悉特定数据库的特性
> * 能够理解需求分析,掌握客户需求
> * 能够设计出合理的服务架构和运维方案
> * 能够为开发和设计人员提供数据库技术的咨询支持
> * 能够为运维人员提供数据库运维问题的解决方案
> * 能够为客户提供良好的售前咨询
>
>
> 设计师
>
> * 熟悉项目设计
> * 了解业务需求,能够与分析人员和客户进行良好的沟通
> * 了解数据特性,能够根据使用的技术进行设计
> * 能够将业务需求转化为良好的设计方案
> * 能够为开发和设计人员提供数据库技术的咨询支持
>
>
> 管理员
>
> * 熟悉机房环境
> * 熟悉操作系统和服务器的运维技术
> * 熟悉数据库特性
> * 能够制定数据库服务器整体运维方案
> * 能够为数据库运营提供灾备、预警、优化、扩展服务
>
>
>
> --
> 每一个成功都是不可复制的。
> ……
>
> 劉鑫
> March.Liu
>
> >
--
夏清然
Xia Qingran
E-mail: qin...@zeuux.org
Gtalk: qingr...@gmail.com
MSN: super...@msn.com