数据库工程师

数据库工程师

从事管理和维护DBMS的相关工作人员
数据库工程师(Database Engineer),是从事管理和维护数据库管理系统(DBMS) 的相关工作人员的统称,他属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。数据库工程师的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能。在国外,也有公司把数据库管理员(Database Administrator,简称DBA) 称作数据库工程师,两者的工作内容基本相同,都是保证数据库服务7*24小时的稳定高效运转,但是需要区分一下数据库工程师和数据库开发工程师(Database Developer):1) 数据库开发工程师的主要职责是设计和开发数据库管理系统和数据库应用软件系统,侧重于软件研发;2) 数据库工程师的主要职责是运维和管理数据库管理系统,侧重于运维管理。
    中文名:数据库工程师 外文名:Database Engineer 别名: 类别:一种职业 相关词条:数据库,运维,运维工程师

主要职责

数据库工程师在不同的公司不同的发展阶段有着不同的职责与定位。一般意义上的数据库工程师只是负责数据库的运营和维护,包括数据库的安装、监控、备份、恢复等基本工作,但是广义上的数据库工程师职责比这个大得多,需要复盖产品从需求设计、测试到交付上线的整个生命周期,在此过程中不仅要负责数据库管理系统的搭建和运维,更要参与到前期的数据库设计,中期的数据库测试和后期的数据库容量管理和性能优化。

对于初创公司,数据库工程师的工作可能由运维工程师来兼任,从申请域名开始,到服务器上架,配置网络设备,部署操作系统,安装数据库,设计和部署监控,防止漏洞和攻击等等。而大型公司对数据库工程师工作的要求越来越高,以下从各个维度来看数据库工程师工作的职责。

产品生命周期维度

数据库工程师负责了业务数据库从设计、测试到部署交付的全生命周期管理,各个阶段的职责包括:

1. 产品发布前

这个阶段数据库工程师的职责是数据库准入,主要包括:

1)产品的业务熟悉;

2)产品数据库设计评审:包括架构的合理性评估,存储容量和性能是否满足需求,是否需要缓存,是否需要冗余备份等,同时需要提供数据库schema设计的合理性建议以使产品能够满足上线发布并稳定运行的基本要求;

3)资源评估,包括所需的服务器资源、网络资源以及资源的分布等,同时把关产品对资源预算申请的合理性,控制服务成本;

4)资源就位,将申请的服务器及基础环境/域名准备就位。

2. 产品发布

这个阶段数据库工程师负责数据库发布的具体工作,将具体的数据库安装部署和初始化完成后并对外提供服务。对于已在线数据库的升级也属于发布范畴,这个时候的产品发布一般要保障在线发布,在不中断对外服务的情况下完成数据库的升级。对于大型复杂的变更也存在中止服务发布完成后再重新提供服务的情况,但这种情况需要数据库工程师通过尽可能的技术手段来避免。

3. 产品运行维护

这个阶段的工作重点包括:

1)监控:对数据库服务运行的状态进行实时的监控,包括数据库会话、数据库日志、数据文件碎片、表空间监控、用户访问监控等,随时发现数据库服务的运行异常和资源消耗情况;输出重要的日常数据库服务运行报表以评估数据库服务整体运行状况,发现数据库隐患;

2)备份:制定和实施数据库备份计划,灾难出现时对数据库信息进行恢复,维护适当介质上的存档或者备份数据。对数据库的备份策略要根据实际要求进行更改,数据的日常备份情况进行监控。

3)安全审计:为不同的数据库管理系统用户规定不同的访问权限,以保护数据库不被未经授权的访问和破坏。例如,允许一类用户只能检索数据,而另一类用户可能拥有更新数据和删除记录的权限。

4)故障处理:对数据库服务出现的任何异常进行及时处理,尽可能避免问题的扩大化甚至中止服务。这之前数据库工程师需要针对各类服务异常,如机房/网络故障、程序bug等问题制定处理的预案,问题出现时可以自动或手动执行预案达到止损的目的。

5)容量管理:包括数据库规模扩张后的资源评估、扩容、机房迁移、流量调度等规划和具体实施。

4. 数据库性能优化

产品对外提供服务最重要的一点是用户体验,用户体验中非常重要的是产品的可用性和响应速度。而如何用最合理的资源支持产品提供高可用和高速度的用户体验,这也是数据库工程师的重要职责。

技术分工

产品的整个生命周期里数据库工程师的职责重要而广泛,这催生了各个纵向的运维技术方向,主要包括:

数据库监控技术:包括监控平台的研发、应用,服务监控准确性、实时性、全面性的保障

数据库故障管理:包括服务的故障预案设计,预案的自动化执行,故障的总结并反馈到产品/系统的设计层面进行优化以提高产品的稳定性

数据库容量管理:测量服务的容量,规划服务的机房建设,扩容、迁移等工作

数据库性能优化:从各个方向,包括SQL优化、参数优化、应用优化、客户端优化等,提高数据库的性能和响应速度,改善用户体验

数据库安全保障:包括数据库的访问安全、防攻击、权限控制等

数据库自动部署:部署平台/工具的研发,及平台/工具的使用,做到安全、高效的发布服务

数据库集群管理:包括数据库的服务器管理、分布式集群管理等

数据库模型设计:包括数据库逻辑和物理模型的设计,如何实现性能最优,架构可扩展,服务可运维等

等等,凡是关系到数据库质量、效率、成本、安全等方面的工作,及涉及到的技术、组件,都在数据库工程师的技术范畴里。做好每一个技术方向都对履行数据库工程师职责起到积极的作用,对业务的发展发挥关键影响。

技术能力

数据库工程师以技术为基础,通过技术保障数据库提供更高质量的服务。数据库工程师工作的职责及在业务中的位置决定了数据库工程师需要具备更加广博的知识和深入的技术能力。在数据库环境的管理与维护中,技术任务可归结成许多不同的分类。下面列出了一名数据库工程师应掌握的一些技能:

1)理解数据备份/恢复与灾难恢复

恢复已损坏的数据库是每一个数据库工程师应掌握的最重要的技能。数据库工程师需要完全理解数据库所有可能的备份与恢复方法,以及不同备份方法与不同恢复策略的对应关系。此外,数据库工程师还需要与业务部门合作,一起确认业务需求,明确用户能够容忍的数据丢失底线。此外,业务用户还需要确定在系统故障情况下,他们的业务能够维持多长时间。理解这些需求可以帮助数据库工程师开发出一个满足业务用户要求的备份/恢复方法。一个优秀的数据库工程师要定期测试备份与恢复流程,保证他们有能力恢复业务数据,满足企业所规定的业务数据丢失与恢复要求。

2)工具集的使用

所谓工具集,指的是一组用于执行不同数据库工程师任务的脚本。这个工具集应该包含不同的小代码片段,它们可以快速诊断问题或执行一个特定的任务。这些工具脚本应该按数据库工程师的活动类型归类,如备份、索引维护、性能优化、容量管理等。由于总是会执行新任务、发现新问题或找到其他人开发的好用脚本,因此一个优秀的数据库工程师会不断地给这个工具集增加新脚本。此外,他还应该了解网上哪里能够找到一些免费的工具和脚本。一个好的数据库工程师知道什么时候可以利用其他人编写的脚本,从而节省自己的时间和改进自己的工具集。

3)知道如何快速寻找答案

数据库每天会面临各种各样故障的挑战,从硬件到网络,从性能压力到程序bug,数据库工程师都要从容应对,一一排除。即使是数据库大牛,也不可能是无所不知的,因此每个数据库工程师一方面需要不断修炼自己,积累操作系统、网络、硬件、存储系统、分布式计算等理论基础,另一方面还要有快速寻找新问题解决方法的能力。如果一个数据库实例不能按预期方式运转,那么快速寻找新问题的解决方法也是一个重要能力。一个好的数据库工程师知道如何快速地在网上查找一个未知问题的解决方法。此外,他们也可能已经知道了一些非常不错的网站,也知道业界专家会提供一些好建议,同时知道什么时候应该忽略一些不好的建议。你可能想象不到,确实有一些建议不值得参考。

4)如何监控和优化数据库性能

对于任何数据库产品,性能都尤其重要,它会直接影响产品的响应速度和用户体验。对于一个数据库工程师来说,性能优化一般需要占用50%的工作时间,因此数据库工程师需要知道如何监控和优化数据性能。

以SQL Server举例,性能是一个关键的问题,因此数据库工程师需要知道如何修复故障和监控性能问题。有许多第三方性能监控工具可以帮助数据库工程师优化性能。如果数据库工程师只使用第三方工具,而不会使用SQL Server自带的原生工具来监控性能,那么相信很快就会出现问题。虽然使用第三方工具来监控性能也很不错,但是数据库工程师一定要理解SQL自带的一些原生工具,如SQL Server Profiler、Database Engine Tuning Advisor、Dynamic Management Views、系统/扩展的存储过程、Extended Events等。许多第三方工具实际上在使用这些底层的原生工具。因此,理解这些自带的原生工具将有利于增强数据库工程师使用第三方工具的经验。

5)研究新版本

在技术领域中,没有什么是一成不变的。每隔两三年,主流数据库厂商都会发布一个大版本的更新。数据库工程师应该紧跟新版本所作的修改,它们可能有许多变化方法,最好的方法是迟早介入这个过程。测试版开放后马上下载和安装,尽快掌握第一手使用经验。一名好的数据库工程师总是走在学习排头兵,总是会第一时间安装和测试新版本。这样他们就可以尽早理解新特性,然后提出一些合理的新建议,帮助组织更好地利用新版本数据库。

6)理解代码最佳实践方法

数据库工程师应该了解如何编写高效的代码。有许多糟糕的编码实践方法会导致拙劣的性能。一名好的数据库工程师要能够理解和识别这些糟糕的编码实践方法,知道如何修改这些烂代码,让它们变成高效代码。此外,他们还要记录下写代码的最佳实践方法,并且将这些实践方法分享给其他人。

7)持续不断地学习

数据库及其组件涉及面非常广。数据库工程师很难理解一个技术的方方面面。数据库工程师需要持续学习如何管理数据库。这个学习过程有很多方法。其中之一就是参加正式培训。但是,并非人人都有这样充裕的事件和金钱,也并非人人都能够放下手头工作专门出去参加正式的培训。但是,还有许多其他方法可以获得培训,而且大多数还是免费的。一名好的数据库工程师一定要订阅一些定期发布数据库新技巧和新文章的社区网站。此外,他还应该加入一些用户组织,可以在周末参加一些当地的免费沙龙活动。

8)数据库安全性

安全性是一个热门话题。数据库工程师应该完全掌握如何实现数据库的安全访问。他们应该理解操作系统身份验证和数据库身份验证的区别,以及它们各自的使用场合。他们应该理解如何使用数据库角色来管理不同类型用户的安全配置。他们应该理解连接数据库的端口与协议。此外,他们还应该理解如何加密整个数据库,或者加密一个数据库中一个表的某一个字段,同时理解关于加密数据的各种问题。

9)数据库设计

决定数据库性能的一个关键问题是数据库设计。数据库工程师需要理解关于数据库设计的各个方面。他们要能够理解设计好坏的区别。他们需要理解为什么使用正确的外键约束、主键、检查约束和使用数据类型能够保持数据库的数据完整性和实现高效的数据查询与更新。

10)索引设计

数据库索引是提高应用程序检索和更新数据速度的重要环节。数据库工程师需要知道索引的工作原理。他们应该知道聚簇索引和非聚簇索引的区别,知道这些索引的物理存储方式。数据库工程师应该知道如何在执行计划中使用这些索引。他们应该理解如何找到索引的使用统计、理解索引碎片及如何发现丢失的索引。他们应该知道如何维护索引,以及索引统计信息对于查询引擎的重要作用。

11)容量监控与规划

数据库往往要使用大量的资源,包括CPU、内存、I/O及磁盘空间。数据库工程师应该理解如何监控数据库所需要的不同主机资源的用量。他们应该能够理解这些资源在不同时间的使用情况,以及利用历史使用数据来规划未来的容量需求。在监控过程中,数据库工程师应该能够预见到容量规划会在将来什么时候出现问题,然后采取必要的措施保持数据库不会因为容量限制而出现中断。

12)数据库许可证

不同的产品有许多不同的许可证授权方式。而且,同一款产品本身又有许多不同的版本。数据库工程师应该理解所负责的数据库版本的不同授权模式。他们应该能够提供指导如何通过合理购买授权来减少数据库总拥有成本,以及如何合理利用授权方法来降低未来版本的升级成本。

13)尽可能实现自动化

数据库工程师每天都需要执行许多的日常任务。其中一些任务需要每天执行,而另一些则每周、每月或每年执行。一名好的数据库工程师需要理解如何高效地安排自己的时间。其中一种方法是建立工作流程,这些日常任务的自动执行。通过实现日常任务的自动化执行,数据库工程师就可以用更多的时间去关注于数据库环境管理中遇到的严重问题。

你具备的特质越多,作为数据库工程师的你就越优秀。成为一名成功数据库工程师的关键是不断地学习与提高,努力去掌握更多关于如何管理和维护数据库环境的知识。

性格要求

很多时候管理人员都忽视了数据库工程师的个性特点,他们只关注数据库工程师的技术能力。实际上,上面谈到的每个职责都意味着:数据库工程师需要跟各种人员打交道,这些人员可能是销售商、用户、开发人员或者管理人员。这说明数据库工程师必须具有下面的个性特点:

自信心:足够的自信心能够帮助数据库工程师在重要紧急时刻果断下决定,而不是不知所措地看着事故发生

好奇心:几乎所有的数据库系统都在不停地更新,但并不是所有的更新都有技术文档,对于优秀的数据库工程师来说,好奇心是必须的。没有好奇心和求知欲的数据库工程师总是等待别人来告诉他们答案。

自我驱动:自我驱动对每个人都是很重要的,对数据库工程师尤其如此。数据库工程师要能想办法使问题出现,而不是等待问题的出现。自驱力强的数据库工程师常常设法取得或者自己写一些必要的脚本来监控包括数据表大小(Table Size)、表空间使用(Tablespace Usage)等项目,这些项目如果被忽视,他们将遇到麻烦。

坚韧的意志力和沉着的心态:数据库工程师常常会碰到棘手的问题。寻找答案是一个需要坚韧意志力、可以经受摔打的个性特点。同时面对紧急情况时要能处乱不惊,保持平和的心态冷静处理问题。

工作认真细致,勤于思考:注意细节的数据库工程师能够深入了解数据库的内核,并能理解视图、表之间的关系,这点非常重要

时间管理能力:数据库运维的工作非常繁琐,因此需要将碎片化的时间充分利用起来。

良好的沟通能力、具有团队合作精神:数据库工程师的工作需要跨部门、跨工种接触很多工程师,善于沟通、团队协作能够起到良好作用

等级

数据库工程师的等级并不是很严格的。按照对数据库的掌握情况,可以分成三个等级:初级Primary、中级Intermediate和高级Senior。

初级数据库工程师又称为DBBS,是英文Database Baby Sitter的缩写。初级数据库工程师常常是兼职的,他们往往同时是程序员或者兼任其他的工作。初级数据库工程师往往把个人简历写得很棒,参与了很多和数据库有关的项目或工作。但是,这些项目或者工作往往是:第三方软件供应商已经安装并配置了数据库,他们只做一些监控的工作。他们能处理一些简单的问题,但大多数时候他们向应用软件供应商求救。初级数据库工程师更喜欢图形化的数据库管理或者监控工具,他们喜欢Access这样的桌面数据库简单易用,并把这些小型数据库的经验简单地应用到大型数据库相关的工作中。

初级数据库工程师是最好区分的。而中级数据库工程师和高级数据库工程师就不太好区分。他们的差别在于经验的不同和个性特点、能力方面的差异。中级数据库工程师比较多,他们可以胜任高级数据库工程师的大部分工作,包括:

1)数据库安装;

2)数据库配置和管理;

3)权限设置和安全管理;

4)监控和性能调节;

5)备份和恢复;

6)解决一般的问题;

中级数据库工程师往往从业一年左右,熟悉某种操作系统环境下的数据库。因为对中级数据库工程师来讲,Windows NT和Unix是有很大差别的。中级数据库工程师对SQL比较熟悉,他们自己购买了几本数据库方面的书籍,并深入钻研。中级数据库工程师往往同时兼任数据库程序员,他们的工作对性能、稳定性、安全性的追求基本上不是很高,往往配合高级数据库工程师做一些例行工作。

高级数据库工程师在国内是非常少的。他们能够熟练阅读数据库方面的英文资料,并且都熟悉很多种操作平台下的几种大型数据库。他们知道各种不同数据库在不同环境下的优势和劣势,并能在数据库平台和数据库环境的选择方面做出决策。他们一般通晓系统架构和数据库设计,并能对数据库进行各种级别的优化。高级数据库工程师一般都配有助手,他们更偏向做决策和计划。高级数据库工程师往往在银行业、保险业、在线交易等对稳定性、安全性、性能都要求比较高的关键业务处理领域大显身手。

很多时候,是否取得数据库专家认证证书并不是很重要。很多数据库厂商的培训只要你去了都会获得证书。有很多的公司提供商业化的培训,他们的服务质量也有好有劣。所以证书并不是特别地有意义。

数据库系统介绍

1)最流行的开源数据库系统——MySQL

在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。国内外很多互联网公司都在广泛使用着MySQL作为关系型存储的主要数据库系统,比如Facebook、百度、阿里、腾讯等。MySQL的开源特性,丰富的社区支持,让它成为入门级数据库工程师的首选。MySQL分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache/Nginx 可组成良好的开发环境。

2)最“容易”的数据库系统——Microsoft SQL Server

如果你打算做一个数据库工程师,建议你选择那些比较流行的数据库系统。这意味着你将有更多的就业机会、交流和培训机会,而且,流行自有流行的理由,你可以因此省心很多。当然,就业竞争压力也比较大。一般的入门者选择Microsoft SQL Server,这是非常适合中小型企业的数据库系统,熟悉Access的读者很容易就能初步使用Microsoft SQL Server,成为一个DBBS。

Microsoft SQL Server 7.0的报价,5用户版1399美金,增加用户时,127美金每用户。

3)最“难”的数据库——无冕之王Oracle

如果你有机会接触到Oracle,那可是个好机会。Oracle是目前最看好的数据库厂商,由于其强大的功能和可配置、可管理能力,Oracle 数据库工程师的薪资一般比其他数据库管理员的薪资要高。而且,Oracle在大中型企业的关键应用也更加普遍了。Oracle可以运行在Windows NT、Sun Solaris、Linux等平台下。很多情况下要求你不仅仅熟悉NT,还要你熟悉Unix;而且Oracle不太友善的界面和成箱的Oracle产品资料可能也是一个障碍。

Oracle 8i标准版的报价,如果运行在Windows NT,附带JServer和interMedia,支持5个并发用户,报价是3925美金每CPU。增加并发用户时,785美金每用户。增加附加的命名用户时,392.5美金每用户。

4)数据库系统的贵族-IBM UDB/DB2

作为30年数据库研究的成果,IBM DB2确实称得上“数据库系统的贵族”。不管是小型商业系统,还是大的银行系统,用DB2都是可以高枕无忧的。当前推出的新版DB2 6.1,管理和调节工具更加卓越和便于使用。DB2 可以运行在Intel架构上,也可以运行在IBM的S/390大型计算机上。如果你所在的行业对IBM的机器特别地称道,建议你学习IBM DB2。

DB2有两种版本:工作组版和企业版。工作组版999美元每服务器,外加249美元每个并发用户。而企业版是12500美元每个CPU,不限并发用户数量。

5)以Java为中心的数据库-Sybase Adaptive Server Enterprise(ASE) 12.0

即将发布的Sybase ASE 12.0,直接面向Java程序员。这种以Java为中心的数据库系统,为那些准备在Java平台下构建企业应用的企业来说,将是最好的选择。但是ASE称不上一个数据库领域的领先者,尽管相对于它以前的版本已经改进很多,并支持多个CPU和更多的并发,还有很多的新的特性。但Sybase的风光似乎已经不再。

行业竞争力

1)薪酬竞争力

影响因素:经验和能力决定数据库工程师的等级,熟悉的数据库系统决定数据库工程师的领域,个性特点和潜力决定你的升值空间。

纵向对比:数据库工程师作为专项领域的高质量人才,薪酬竞争力较高,市场需求旺盛,尤其是中高阶数据库工程师,往往紧缺程度高于软件研发工程师。

第三方薪酬调查报告,仅供参考:

《2013年数据库工程师薪酬调查报告

《Database Administrator Salary

2)市场需求

数据库运维行业的市场价值:参考ITOM(IT Operation Management) 2013年的市场规模是190亿美金

人员需求:由于业务规模较大,中大型公司比较紧缺中高阶数据库工程师,而初创公司由于其新生的业务特点,比较紧缺初级和中级数据库工程师。

职业发展

数据库作为整个系统的一部分,它的表现直接受服务器、操作系统、存储、网络、应用程序中SQL语句的质量、数据库设计的质量、以及其它诸多因素的影响,这些因素加在一起非常复杂,经验起着非常重要的作用。因此一个好的数据库工程师除了知识作为基础,经验的多寡、见识的薄广,往往决定了是否合格与优秀。

优秀的数据库工程师不仅关心自己运维的数据库系统的原理和发展,而且紧跟业界数据库前沿技术,并关注数据库领域的顶级会议。其中包括国际著名的数据库三大会议SIGMOD、VLDB、ICDE,还有知名数据库公司Percona主办的Percona Live和Oracle主办的Open World,以及国内知名的数据库工程师盛会中国数据库技术大会(DTCC)等。

从另外一个角度说,数据库工程师工作领域对实践经验和独立工作能力要求较高,没有经过大量的动手实践是很难胜任数据库工程师相关工作的

正是由于上述原因,其职场现状是数据库工程师职位不易进入,而用人单位很难找到合适的从业人员,人员缺口非常大。

也正是由于上述原因,随着工作年限的增长,数据库工程师的经验在增加,就像医生一样,其价值会越来越高,可以逐步成长为资深数据库工程师、系统架构师、信息主管(CIO)等等,而不会出现许多软件开发从业人员在一定年龄后面临的转行问题。

另外,从职业前景看,从事数据库工程师有着更多的职场机遇

。一般而言,系统中的软硬件都是IBM、HP、Oracle等业界一流厂商提供的,在与厂商谈判、合作、测试、实施、维护、优化等等过程中,会产生许多极佳的职场机遇,这一点是从事开发工作很难比拟的。

从数据库工程师的工资统计数据看,随着工作经验的积累,数据库工程师工资的增长幅度会远大于其它的计算机方向。

从工作的稳定性上看,系统的复杂性和经验的重要性已经决定了数据库工程师职位的不可替代性。

从知识的积累、更新和替代角度看,数据库的根基始终没变,变的是不断增强的功能和不断扩展的应用范围。因此,在不同时期所学的知识和获得的经验是叠加和累积的关系,而不像IT许多其他职业方向那样“唯一不变的是变化”,其知识是东风压倒西风还是西风压倒东风的关系。

因此, 数据库工程师职业是一个高挑战和高回报的职业,有一定能力的和聪明的技术人员应该挑战自我,进入这个被二十多年事实不断证明的越来越有前景的职业

相关杂志

1、《数据库工程师》简介:

《数据库工程师》是由企业级IT网络媒体TechTarget中国旗下TechTarget数据库网站推出的电子杂志。《数据库工程师》摘取TechTarget特邀专家、资深编辑以及终端用户所撰写的数据库技术及分析文章,旨在提供数据库技术技巧、数据库技术发展趋势及业内最新动态,为数据库从业人员及技术关注者提供参考。

2、样刊:

刊首寄予:数据库第三方服务的新时代

当你的数据库遇到问题时,你首先想到的是找原厂服务还是第三方服务?从我接触到的DBA来看,越来越多的公司开始倾向于后者,拿Oracle数据库来说,有不少的用户反馈原厂的工程师水平未必会比第三方好,而且响应速度、服务质量以及费用等一系列问题都困扰了DBA许多年。这时候,一家靠谱的数据库第三方服务商就显得格外重要,客户需要用最少的成本、在最短的时间内解决问题。

众所周知,做服务需要投入大量的人力成本,这是许多大型数据库厂商都极力避免的一件事,为的是追求更高的利润率。这些厂商更愿意让他们的合作伙伴来完成这一工作,也就为国内的第三方服务商提供了更多的机会。但是如何把机会转化成价值?进一步转化成推动其前进的驱动力?这是困扰国内数据库服务商的一大问题。因此我们看到,有不少干了许多年的服务商开始进入"疲劳"期,不断重复着数据库维护、备份、恢复的工作,而随着人力成本的不断提高,他们的日子也变得越来越不好过,甚至最终选择了离开。

但是幸好还有这样一群人,他们对数据库技术的热情十年如一日,摸爬滚打数载依然奋战在数据库的第一线,他们愿意用自身的激情去感染用户,愿意寻找各种各样的方法帮助用户节约成本,也愿意把好的技术理念传播给更多的用户。按照他们自己的话说,这是伴随互联网成长的一代,他们更有活力,更能理解先进的技术理念。也正是他们,为国内的数据库第三方服务市场注入了新的活力。

在本期的《数据库工程师》电子杂志中,我们就将选择最具代表性的两家数据库第三方服务商进行深入解读,看看他们的背后又有怎样的故事。相信未来还会有更多优秀的服务商涌现出来,而《数据库工程师》也将在第一时间进行跟踪报道,敬请关注!

作为甲骨文全球大会OpenWorld 2012中的重要产品发布,新版Oracle Database 12c汇集了参会者最多的目光,Larry Ellison也在开幕演讲中重点介绍了12c的一些新特性。对于Oracle DBA来说,虽然数据库12c未正式发布,但依旧希望能够提前了解它的一些新功能、新特性。在OpenWorld 2012的技术讲座环节,Oracle技术大师Tom Kyte集中介绍了Oracle Database 12c的十二大新特性,而Oracle ACE总监杨廷琨也对此进行了总结,希望让国内DBA一睹为快。

PL/SQL性能增强

类似在匿名块中定义过程,可以通过WITH语句在SQL中定义一个函数,采用这种方式可以提高SQL调用的性能。

改善Defaults

包括序列作为默认值;自增列;当明确插入NULL时指定默认值;METADATA-ONLY default值指的是增加一个新列时指定的默认值,和11g中的区别在于,11g的default值要求NOT NULL列。

放宽多种数据类型长度限制

增加了VARCHAR2、NVARCHAR2和RAW类型的长度到32K,要求兼容性设置为12.0.0.0以上,且设置了初始化参数MAX_SQL_STRING_SIZE为EXTENDED,这个功能不支持CLUSTER表和索引组织表;最后这个功能并不是真正改变了VARCHAR2的限制,而是通过OUT OF LINE的CLOB实现。

TOP N的语句实现

在SELECT语句中使用"FETCH next N rows"或者"OFFSET",可以指定前N条或前百分之多少的记录。

行模式匹配

类似分析函数的功能,可以在行间进行匹配判断并进行计算。在SQL中新的模式匹配语句是"match_recognize"。

分区改进

Oracle Database 12c中对分区功能做了较多的调整,Oracle ACE总监杨廷琨花了较大的篇幅对分区提升进行了解读,其中共分成6个部分:

INTERVAL-REFERENCE分区:把11g的interval分区和reference分区结合,这样主表自动增加一个分区后,所有的子表、孙子表、重孙子表、重重重...孙子表都可以自动随着外接列新数据增加,自动创建新的分区。

TRUNCATE和EXCHANGE分区及子分区。无论是TRUNCATE还是EXCHANGE分区,在主表上执行,都可以级联的作用在子表、孙子表、重孙子表、重重重...孙子表上同时运行。对于TRUNCATE而言,所有表的TRUNCATE操作在同一个事务中,如果中途失败,会回滚到命令执行之前的状头。这两个功能通过关键字CASCADE实现。

在线移动分区:通过MOVE ONLINE关键字实现在线分区移动。在移动的过程中,对表和被移动的分区可以执行查询、DML语句以及分区的创建和维护操作。整个移动过程对应用透明。这个功能极大的提高了整体可用性,缩短了分区维护窗口。

多个分区同时操作:可以对多个分区同时进行维护操作,比如将一年的12个分区MERGE到1个新的分区中,比如将一个分区SPLIT成多个分区。可以通过FOR语句指定操作的每个分区,对于RANGE分区而言,也可以通过TO来指定处理分区的范围。多个分区同时操作自动并行完成。

异步全局索引维护:对于非常大的分区表而言,UPDATE GLOBAL INDEX不再是痛苦。Oracle可以实现了异步全局索引异步维护的功能,即使是几亿条记录的全局索引,在分区维护操作,比如DROP或TRUNCATE后,仍然是VALID状态,索引不会失效,不过索引的状态是包含OBSOLETE数据,当维护操作完成,索引状态恢复。

部分本地和全局索引:Oracle的索引可以在分区级别定义。无论全局索引还是本地索引都可以在分区表的部分分区上建立,其他分区上则没有索引。当通过索引列访问全表数据时,Oracle通过UNION ALL实现,一部分通过索引扫描,另一部分通过全分区扫描。这可以减少对历史数据的索引量,极大的增加了灵活性。

Adaptive执行计划

拥有学习功能的执行计划,Oracle会把实际运行过程中读取到返回结果作为进一步执行计划判断的输入,因此统计信息不准确或查询真正结果与计算结果不准时,可以得到更好的执行计划。

统计信息增强

动态统计信息收集增加第11层,使得动态统计信息收集的功能更强;增加了混合统计信息用以支持包含大量不同值,且个别值数据倾斜的情况;添加了数据加载过程收集统计信息的能力;对于临时表增加了会话私有统计信息。

临时UNDO

将临时段的UNDO独立出来,放到TEMP表空间中,优点包括:减少UNDO产生的数量;减少REDO产生的数量;在ACTIVE DATA GUARD上允许对临时表进行DML操作。

数据优化

新增了ILM(数据生命周期管理)功能,添加了"数据库热图"(Database heat map),在视图中直接看到数据的利用率,找到哪些数据是最"热"的数据。可以自动实现数据的在线压缩和数据分级,其中数据分级可以在线将定义时间内的数据文件转移到归档存储,也可以将数据表定时转移至归档文件。也可以实现在线的数据压缩。

应用连续性

Oracle Database 12c之前RAC的FAILOVER只做到SESSION和SELECT级别,对于DML操作无能为力,当设置为SESSION,进行到一半的DML自动回滚;而对于SELECT,虽然FAILOVER可以不中断查询,但是对于DML的问题更甚之,必要要手工回滚。而Oracle Database 12c中Oracle终于支持事务的FAILOVER。

Oracle Pluggable Database

Oracle PDB体系结构由一个容器数据库(CDB)和多个可组装式数据库(PDB)构成,PDB包含独立的系统表空间和SYSAUX表空间等,但是所有PDB共享CDB的控制文件、日志文件和UNDO表空间。

相关培训

简介

随着中国信息化建设如火如荼的全面展开, 数据库在越来越多的企业得到广泛的应用,从大型的ERP系统,到小型的进销存管理系统,从财务系统到销售系统,数据库系统的稳定、安全以及性能优化等问题成为企业最为关注的重点。在企业级数据库市场,Oracle公司以及Microsoft公司的数据库产品在全球跨国公司得到广泛应用,诸如中国移动、深圳华为、霍尼韦尔、康明斯中国、美国铝业、DHL和宝信软件等知名公司。因此,企业数据库运维管理方面的技术专家是全球和中国市场上最紧缺的人才之一。市场已经证明,获得国际IT厂商认证的DBA在中国的年薪集中在15-30万人民币区间,而且呈现持续上涨的态势。当下在中国仅Oracle数据库人才的缺口就在10万人左右,人才紧缺状况由此可见一斑。

课程目标

培养符合企业需求,熟悉Windows、Unix/Linux等企业应用服务器,精通数据库管理维护以及性能优化,能够对企业信息系统实施有效维护管理,保证企业信息系统安全的数据库工程师。

适合对象

有一定计算机基础,大专以上学历,有志于成为数据库专业人员的各界人士。

课程内容

一、大型企业数据库日常管理及维护(Oracle 11g OCP)

1、Oracle Database 11g:管理I

· 数据库体系结构 · 安装Oracle数据库软件

· 创建OracleDatabase · 管理Oracle实例

· 管理数据库存储结构 · 管理用户安全

· 管理架构对象 · 管理数据和并发

· 管理撤销段 · 实现Oracle数据库安全

· 配置Oracle网络环境 · 积极维护

· 性能管理 · 备份恢复概念

· 执行数据库备份 · 执行数据库恢复

· 执行闪回 · 移动数据

2、Oracle Database 11g:管理II

· Oracle数据库中的核心概念和工具 · 配置恢复

· 使用RMAN恢复目录 · 配置备份设置

· 使用RMAN创建的备份 · 还原和恢复任务

· 使用RMAN执行恢复 · 监控和调整RMAN

· 诊断数据库 · 使用闪回技术I

· 使用闪回技术II · 内存管理

· 数据库性能管理 · 管理SQL调优的性能

· 管理资源 · 调度自动化任务

· 块管理空间 · 段管理空间

· 数据库管理空间 · 复用数据库

二、SQL Server服务器的日常管理及维护(MCTS)

1、安装和配置SQL Server 2008

1、 SQL Server 2008安装前的准备

2、 安装SQL Server 2008

3、 配置SQL Server 2008

实验:安装和配置SQL Server 2008

2、管理数据库及文件

1、 设计数据库

2、 创建数据库

3、 使用策略管理

实验:管理数据库及文件

3、灾难恢复

1、 计划数据库备份策略

2、 备份用户数据库

实验:灾难恢复--A部分

3、 恢复用户数据库

4、 执行联机恢复操作

5、 从数据库快照恢复数据

6、 系统数据库和灾难恢复

实验:灾难恢复--B部分

4、管理安全性

1、 SQL Server安全性概述

2、 服务器级别保护

3、 数据库级别保护

4、 管理密钥和证书

5、 审核安全性

实验:管理安全性

5、传输数据

1、 数据传输概述

2、 SQL Server集成服务介绍

实验:传输数据

6、自动化管理任务

1、 SQL Server 2008中的自动化管理任务

2、 使用SQL Server代理

3、 创建维护计划

4、 实现警报

5、 管理多个服务器

6、 管理SQL Server代理安全性

实验:自动化管理任务

7、实现复制

1、 复制概述

2、 管理发布服务器和订阅服务器

3、一些常见情景下的复制配置

实验:实现复制

8、管理高可用性

1、 高可用性介绍

2、 实现日志传送

3、 实现数据库镜像

4、 实现服务器集群

5、 使用分布式高可用性解决方案

实验:维护高可用性

9、监视SQL Server

1、 查看当前的活动

2、 使用SQL Server Profiler

3、 使用DDL触发器进行监视

4、 使用事件通知

实验:监视SQL Server

10、故障排除及性能调整

1、 SQL Server故障排除

2、 SQL Server性能调整

3、 使用资源调控器

4、 使用数据收集器

实验:故障排除和性能调整

三、Windows Server服务器的日常管理及维护(MCITP)

· 安装和配置Windows 7 服务器

· 配置与疑难解答Windows Server 2008 中的IIS7.0

· 配置与疑难解答Windows Server 2008终端服务

· 配置与疑难解答Windows Server 2008网络基础结构

· 配置Windows Server 2008 Active Directory 域服务

· 配置与疑难解答Windows Server 2008 Active Directory 身份认证和访问管理

· 设计Windows Server 2008的网络基础结构

· 设计Windows Server 2008 Active Directory 的基础结构与服务

· 设计Windows Server 2008 的应用程序平台基础结构

四、Linux服务器的日常管理及维护(RHCE)

1、红帽系统管理 I (RH124)

· 图形安装 Linux · 管理物理存储

· 介绍命令行 · 了解如何安装和配置本地组件和服务

· 构建网络,保障网络服务 · 管理和保护文件

· 管理用户和团体 · 部署文件共享服务

2、红帽系统管理 II (RH134)

· 网络配置和故障排除 · 管理文件系统和逻辑卷

· 控制用户和文件访问 · 安装和管理服务与流程

· 基本的命令行操作 · 故障排除 文件系统和分区

· LVM、访问控制和软件包管理

3、红帽系统管理 III (RH254)

· 增强用户安全性

· 使用互联网小型计算机系统接口 (iSCSI) 进行的磁盘管理

· 系统和网络活动监控

· 网络管理和包过滤

· 软件管理

· 网络服务管理

· 跨平台的文件共享

· 基础 SMTP 管理

五、中小型企业网络配置与管理(CCNA)

· 描述网络如何工作描述不同网络设备的功能和效用

· 在交换机VLAN和交换机互联的配置、检查及排错

· 在中等规模的公司分支办公室网络中实现满足网络需求的IP地址规划及IP服务

· 基本的路由器操作和思科设备路由的配置,检查和排错

· 解释并选择适当的可管理无限局域网作业

· 确定网络安全威胁并描述减少安全威胁的一般方法

· 在中等规模公司分支办公室中NAT和ACL的实施、检查和排错

· 实施并检查广域网链接

相关词条

相关搜索

其它词条