第6章 数据操作管理
6.1 简介
数据操作管理是结构化数据的开发、维护和支持的活动,使企业数据资源达到最佳的利用价值。数据操作管理包括两项子职能:数据库支持和数据技术管理。
数据操作管理的目标是:
(1)保护和确保结构化数据资产的完整性。
(2)管理数据在其生命周期内的可用性。
(3)优化数据库事务性能。
6.2 概念与活动
6.2.1 数据库支持
数据库支持由DBA完成,DBA分为开发DBA和产品DBA。开发DBA关注开发活动,产品DBA关注实施数据操作管理活动。因此,数据库支持更准确的说是由产品DBA完成的。
DBA的数据库支持工作主要包括:
- 实施并控制数据库环境
数据库系统的管理包括下列任务:
①更新DBMS软件——DBA负责安装新版本DBMS软件,负责实施各种数据库环境下由厂商提供的各种维护和修复,包括开发环境到产品环境。
②维护多项不同版本的DBMS安装——DBA安装维护若干项不同环境下的DBMS
软件,包括开发环境、测试环境及产品环境,同时还负责管理DBMS版本在各个环境之间的合理迁移。
③安装和管理相关数据技术工具,例如数据整合软件以及第三方数据管理软件等。
④设置和调试DBMS系统参数。
⑤管理数据库的连通性——除数据安全问题(参见第7章)以外,企业范围内访问数据库需要用户具备一定的专业知识。DBA对需要连接数据库的IT用户和业务用户,为之提供技术指导和支持服务。
⑥与系统程序员、网络管理员合作共同调整与DBMS相协作的操作系统、网络和事务处理中间层的性能。
⑦为DBMS划分适当的存储空间,使DBMS能使用外部存储设备和存储管理软件。存储管理优化利用不同存储技术存储不同种类数据。存储管理软件会将不经常被引用的数据转移到廉价的存储器上,这个做法导致的直接后果是重复访问此类数据会耗时较长。有些数据库能与存储管理软件结合,从而将分区表中的过时数据转移到较慢,但便宜的存储器上。DBA和存储管理员合作制定并监护有效的存储管理步骤。
可以准备一份清单,列出上述工作的步骤,建立数据库管理机制和工作流程。这样DBA可以有效的实施管理和控制,将应用程序的数据库修改实施到质控环境和产品环境中,加强环境管理。
DBA是所有数据库修改的监管人,其他人员只能提出修改请求,由DBA定义准确的修改方案,并实施和控制更改。
- 获取来自外部的数据
外部数据可能是许可的,也可能是免费的。它们以不同的格式一次性、或通过订阅服务定期更新。数据采集的管理需要把数据订阅服务职责交给数据分析人士。
数据分析师把外部数据源记录在逻辑数据模型和数据辞典内;
开发人员据此设计并外部数据的读取程序;
DBA负责将数据加载到数据库中,供其他程序使用;
- 规划数据恢复
数据治理委员会与IT数据管理部门建立数据可用性及恢复的服务水平协议。协议设定数据可用性期望,允许进行数据库维护和备份时间,设定不同场景下的数据恢复期望时间,包括潜在的灾难事件等。
DBA保证制定的所有计划(数据库、数据库服务器恢复),要覆盖所有导致数据丢失、损坏的可能场景。
管理层和组织的业务连续性管理部门(如果存在)应该评审并批准数据恢复规划。所有的计划可以被DBA访问。DBA备份所有恢复计划联同所有相关软件,以及有关安装、DBMS配置说明、安全码等应存放于除现场外的安全地方,以备灾难发生时应用。数据库备份亦同样处理。
- 备份和恢复数据
DBA定期备份数据库、OLTP数据库和数据库事务日志。在数据库服务水平协议中定义备份频率。DBA需要对数据的重要性和保护数据所需付出的代价(存储资源空间)之间做出权衡。每个数据库每天至少要进行一次完全备份。
同时,数据库的存储区域需要根据数据的情况进行设置,并根据数据更新频率和数据量来设置数据备份策略、日志数据转储策略等内容。以便可以提供更好的数据保护,并减少备份对服务器资源以及程序带来的影响和冲击。
对于重要数据或者业务应用场景要求高的,还需要考虑数据库发生事故时的切换,以保障应用服务的继续运行。根据需要设置切换的方案,包括其他数据保护选项,比如服务器集群,热备份等。必要时,DBA也需要负责通过重新加载必要的数据库和事务日志备份最大可能的恢复丢失的数据或损坏的数据。
提供恰当的保护机制,可确保数据的持续可用性、完整性、可恢复性,安全性。
- 设定数据库性能服务水平
数据库的性能服务水平有两方面:可用性和性能。性能是以可用性做为前提的。数据服务管理部门与数据所有人之间通过服务水平协议定义数据库的性能期望。一般来说,协议中规定了数据库的可用性时间和有选择的几个应用程序事务(复杂查询和更新的组合),在确定的可用性时间范围内指定最大允许执行时间。
可用性是系统或数据库能提供正常生产工作的时间百分比。
以下4个因素影响数据库的可用性:
可管理性:产生可维护有效环境的能力;
可恢复性:发生中断时重建服务的能力,更正不可预料事件发生所导致错误的能力;
可靠性:在规定时期内提供指定服务水平的能力;
可服务性:确定问题所在、诊断错误原因以及修复和解决问题的能力;
许多方面的因素可以导致丧失数据库可用性,列举如下:
预期和非预期停机。
服务器硬件损失。
磁盘硬件失效。
操作系统失效。
DBMS软件失效。
应用程序问题。
网络失效。
数据中心损失。
安全和授权问题。
数据损坏(由于软件设计不良、用户错误所致的)。
数据库对象丢失。
数据丢失。
数据复制失败。
严重的性能问题。
恢复失败。
人为错误。
DBA有责任采取各种措施保证数据库在线运转正常,其中包括:
运行数据库备份程序。
运行数据库重组程序。
运行各类统计程序。
运行完整性检查程序。
所有程序运行自动化。
利用表空间的聚集和分区。
通过镜像数据库复制数据以确保高可用性。
- 监控并调整数据库性能
通过监控数据库性能和问题,DBA可以主动或被动的优化数据库性能。根据DBMS提供性能监听功能,生成分析报告。DBA应当保存不同时期和版本的报告,以便进行新旧对比分析,通过报告中数据的发展趋势,来分析是否出现了问题,也有助于分析哪些问题是伴随时间推移而产生的。
常见的可能导致数据库性能低下的原因:
①内存分配(数据的缓冲区/高速缓存)。
②锁和阻塞——在某些情况下,数据库内的运行进程可能会锁住数据库资源,例如,表和数据页,这样会导致阻塞需要相同资源的其他进程。如果问题持续太长的时间间隔,DBA可以终止阻塞的进程。在另外一些情况下,两个进程需要彼此之间的资源引起“死锁”。大多数DBMS在发生死锁事件后会自动终止其中一个进程。这种状况通常是数据库或应用程序糟糕的编码所引起的。
③更新数据库统计失败——大多数关系DBMS系统都有内置的查询优化器,它们依靠有关的数据和索引统计数字决定一个查询的最有效执行方式。定期和频繁地更新这些统计结果,特别对那些活跃的数据库是很重要的。不这样做的结果是如果没做好,可能会导致更低效的查询。
④SQL编码不良——SQL编码不良也许是导致低效能数据库的最常见原因。查询编程员要对SQL查询优化器有基本了解,所编写SQL应该充分利用优化器的效能。把复杂的SQL语句封装在存储过程内,这样可以做到预编译和预优化,而不是嵌入在应用程序代码中。利用视图预定义复杂的表链接。另外,避免在数据库函数中用表链接以及复杂SQL,因为这不像存储过程,这样会导致查询优化器对其难以理解。
⑤索引欠缺——编辑复杂的查询,查询涉及大表格时,要利用表内索引。创建必要的索引以支持这些查询。同时注意不要在更新频繁的表格中生成过多的索引,索引过多会引起更新处理减慢。
⑥应用程序活动——理想的状态是不要把应用程序同DBMS安装在同一个服务器
上,否则它们会竞争服务器资源。为最大性能目标去配置和调整数据库服务器。另外,新型DBMS允许应用程序对象,例如Java和.NET类可封装在数据库对象中并在DBMS上执行,但要小心谨慎利用这些功能。在某些情况下,这种特性非常有用,但在数据库服务器上执行应用程序会影响数据库运行效能。
⑦数据库的数量、规模或者使用的上升——如果DBMS支持多个数据库,支持多个应用程序,持续增加数据库可能会出现性能转折点,如果此时再添加数据库,就会使现有的数据库性能下降。在这种情况下,应该创建新的数据库服务器。此外,对增长很大的数据库,或在使用上比以前大大提高的数据库,应该重新安置其到新的服务器上。在某些情形下,解决问题只需通过归档使用频率较少的数据,或删除过期的废弃的数据。
⑧数据库波动——在某些情况下,短时间内进行大量的表插入、删除会导致数据库分布统计信息不准确。这时需要关闭数据库对这些表格的统计更新,因为这些不准确的统计数据能导致对查询优化器的不良影响。
⑨在鉴定出问题原因之后,DBA要采取一切可能的行动解决问题。这其中包括与应用程序开发员一起提高优化数据库代码,归档或删除不再被应用程序所用的数据。
- 规划数据留存方案
不是所有的数据都会永远存留的主存储器上,所以物理数据库设计的一个重要部分是数据的留存规划。不再有效支持应用程序处理的数据应当归档并转移到次存储器上,对于废弃、无用的数据也需要定期进行清理。
数据库设计期间就需要与数据的所有者讨论数据保留问题,并达成数据有效期内如何使用数据的协议。
数据管理的主要原则之一就是维护数据的代价永远不应该超过这些数据带给组织的价值。
- 归档、留存和清除数据
DBA应该同应用开发人员以及其他操作员,包括服务器管理员、存储管理员合作实施已经批准的数据留存规划。这可能需要以下程序:生成副存储区,建立副数据库服务器,复制不用或少用的数据到不同的数据库上,对现有的数据表分区,安排磁带或磁盘备份,生成数据库作业周期性来清理无用数据等。
- 支持专用数据库
特殊情况下可以使用特殊类型的数据库,并进行专用的数据库管理。在支持特殊数据库管理上,DBA负责确保定期备份数据库,执行数据库恢复测试。这个并不存在管理难度,核心是如果要将这个特殊的数据库上的数据融合到其他的一个或多个关系数据库中时,数据整合是极具挑战性的工作。所以组织在购买数据库时应进行充分的考虑和讨论,并给出妥善的解决方案。
6.2.2 数据技术管理
- 理解数据技术需求
DBA不仅要了解数据技术工作原理,还要知道数据技术怎样能在特定业务境况下提供有效的价值。DBA应该与其他数据服务组织成员、业务人员、管理人员紧密合作了解业务对数据和信息的需求。这样使他们能就业务问题的技术应用提供良好的建议并及时挖掘新的商业机会。
数据专业人员在特定情况下决定选择用何种技术方案之前,必须了解数据技术的需求。以下问题是考虑数据技术适用性的出发点,但不限于此:
(1)该数据技术要解决的问题是什么?
(2)该数据技术可以提供其他数据技术没有的功能吗?
(3)该数据技术没有而其他数据技术可提供的功能?
(4)该数据技术是否需要特殊硬件要求?
(5)该数据技术是否有特别的操作系统需求?
(6)该数据技术是否需要特殊的软件或需要附加应用程序才能获得该数据技术所宣称的功能?
(7)该数据技术是否有特殊的存储需求?
(8)该数据技术是否对网络或连接有特殊需求?
(9)该数据技术是否包括数据安全功能?如果没有,其他什么工具能与其协作获得数据安全功能?
(10)该数据技术是否需要特殊技能来支持?我们是否已经拥有此类技术人才?是否需要从外面引进人才?
- 定义数据技术架构
数据技术架构解决以下3个基本问题:
(1)技术标准是什么(什么是必需的?什么是首选的?什么是可接受的?)?
(2)什么技术适用于什么目的和环境?
(3)在分布式环境中,使用了哪些技术?数据怎样从一个节点转移到移到另一个节点?
- 评估数据技术
选择合适的数据技术工作需要涉及到业务数据管理员、DBA、数据架构员、数据分析师、其他数据管理专家和其他IT专业人士。需要调查和评估的数据技术包括:
①数据库管理系统软件。
②数据库辅助工具,比如备份和恢复工具、效率监控软件。
③数据建模和模型管理软件。
④数据库管理工具,比如编辑器、模式生成器和数据库对象生成器。
⑤产生报告和分析用的商务智能软件。
⑥提取-转换-加载(ETL)和其他数据整合工具。
⑦数据质量和数据清理工具。
⑧数据虚拟化工具。
⑨元数据管理软件,包括元数据存储库。
此外,数据专家可能需要一些用于其他领域的特殊工具,包括:
①变更管理(源码库和配置)工具。
②问题和故障管理工具。
③测试管理工具。
④测试数据产生器。
利用标准的技术评估过程,并应用由Kepner和Tregoe在The Rational Manager一书中定义的决策分析概念做决策选择。列出所有可能选项分别针对一系列带权重的决策标准做出比较,包括特征需求和功能目标,基本方法有以下步骤:
①了解用户需求、目标以及其他相关需要。
②对技术有概括性了解。
③确定可选技术方案。
④确定特征需求。
⑤对每一项特点进行权重分析。
⑥对每一个可选技术进行了解
⑦对每个可选技术方案的需求满足能力进行评估和打分。
⑧计算总分并对各个技术的评分排序。
⑨评估结果以及权重标准。
⑩展示选择最高积分的可选方案。
选择战略性DBMS软件尤其重要。DBMS软件主要的影响在于数据整合,应用性能和DBA的生产力。在选择DBMS软件时要考虑以下因素:
①产品架构及复杂性。
②应用资料(Profile),例如事务处理、商务智能以及个人资料。
③企业对技术风险的承担程度。
④硬件平台和操作系统支持。
⑤软件支持工具的可用性。
⑥性能基准。
⑦可扩展性。
⑧软件、内存及存储的需求。
⑨训练有素的技术专业人员的供应量。
⑩拥有成本,例如许可、维护和运算资源。
⑪供应商的声誉。
⑫供应商的支持政策和软件发布时间表。
⑬用户参考。
DBA要负责评估各种可选技术。影响因素如下:
①可选产品的可用性、稳定性、成熟度和当前产品的成本。
②一个产品在满足现有业务需求/问题的适应性。
③该产品满足其他业务需求的可扩展性。
④该产品是否适合本公司的技术构架线路。
⑤该产品是否适合本企业其他产品和技术。
⑥供应商的声誉、稳定性和预期寿命——公司是否有打算并有能力与此供应商在较长时间内合作?
⑦对供应商支持度的期望——是否经常提供最低成本的更新?在需要时是否能得到供应商的帮助?
- 安装和管理数据技术
DBA所面临的工作是部署新技术、产品到开发/测试、QA/验证和生产环境中。他们需要创建并编辑归档有关流程和规程,以最少的努力和开销管理产品。切记产品的开销包括管理、许可证和支持费等绝不能超过该产品对业务带来的价值。还要记住购买新产品,实施新技术不一定需要增加职员,所以新技术应该必须最大可能地实现自我监控和自我管理。
同样还要记住,对实施新技术的代价和复杂性通常估计不足,相反其功效和利益通常被过高估计。在进行大规模的产品项目实施之前,通过一个小规模的试点项目和概念验证(Proof of Concept,PoC)式实施,达到了解其真实花费和利益是一个很好的主意。
- 备案和跟踪数据技术的使用许可
公司必须遵守所有许可协议和法规需求。仔细跟踪并进行年度审计软件许可和年度支持费用,以及服务器租赁协议和其他固定费用等。违背许可协议会给组织带来严重的财务和法律风险。
数据也决定着各种技术和产品的总体拥有成本。定期评估过时的、厂商不再支持的、用处不大的或太昂贵的技术和产品。
- 支持数据技术的使用问题
当业务需要新技术时,DBA将协同业务用户及应用开发人员一起工作,以确保最有效地利用该技术,探索新技术应用,并解决各种应用引起的问题或差错。
DBA和其他数据专业人员形成二级技术支持,协同服务台和技术供应商一起支持了解、分析和解决用户问题。
培训是做到有效地理解和应用各种技术的关键。企业应该针对每个参与实施人员、支持人员、使用数据人员,数据库技术人员制定有效的培训计划和预算。培训计划应该包括适当的交叉培训以保障更好的支持应用开发,特别是敏捷开发。DBA应该借此机会学习应用开发技术,例如类模型、用例分析、应用数据访问。开发人员应该学习某些数据库技巧,特别是SQL编码。