基于日志分析的SQL Server数据库变更数据捕获方法的研究与实现.doc
《基于日志分析的SQL Server数据库变更数据捕获方法的研究与实现.doc》由会员分享,可在线阅读,更多相关《基于日志分析的SQL Server数据库变更数据捕获方法的研究与实现.doc(35页珍藏版)》请在三一文库上搜索。
1、基于日志分析的SQL Server数据库变更数据捕获方法的研究与实现 摘 摘 要 要摘 摘 要 要传统的数据集成、数据传播和 ETL工具都是周期性把源端大量的数据转移到目标端,已无法满足新的商业需求,如数据仓库的持续更新、接近实时的商业智能以及业务数据存储。基于事务日志的变更数据捕获技术就为这些新 IT业务需求提供了一种新的解决方案。 本文在介绍事务日志原理和数据库恢复技术的基础上,提出了基于日志分析 SQL Server数据库变更数据捕获方法。该方法通过异步读取事务日志,捕获变更数据。主要解决了以下几个问题: 1 防止未捕获变更数据的事务日志被截断; 2 事务部分回滚中补偿日志的问题; 3
2、制定捕获进程重启处理的正确方案,以及如何减少重启的时间; 4 提高捕获进程的效率。关键字:事务日志,SQL Server数据库,变更数据捕获,部分回滚 I Abstract Traditionally, Data Integration, Data Propagation, and ETL extract, transform and load processes run on a periodic basis weekly, daily and use a bulk data movement approach that moves and integrates the entire sou
3、rce data to a target data source. This approach is limited in its ability to deal with new trends and business requirements, some of which include continuous refreshing of a DW, near real-time business intelligence and operational data stores. Based on transaction log Change-Data-Capture CDC technol
4、ogy provides a solution to IT operational challenges and the new business modelsThis paper introduces the principle of transaction logs and database recovery techniques,proposes a change-data-capture method based on SQL Server database log analysisBy means of the asynchronous read transaction log, t
5、his method captures data changes.This thesis addresses the following issues: Firstly, avoid that the transaction logs not captured change data are truncated; Secondly, how to process compensation logs for partial transaction rollbacks; Thirdly, develop the right algorithm for the restart of capture
6、process, and how to reduce restart time; Finally, to improve the efficiency of capture process Keywords: transaction log, SQL Server database, change data capture, partial rollbackIII目 目 录 录目 目 录 录摘 摘 摘 摘要 要 要 要.I ABSTRACTIII 目 目 录 录V 目 目 录 录第 第 第 第一 一 一 一章 章 章 章 绪 绪 绪 绪论 论 论 论1 1.1 课题背景与来源1 1.2 相关研
7、究工作 2 1.3 本文研究意义和主要工作. 2 1.4 论文安排3 第 第 第 第二 二 二 二章 章 章 章 变 变 变 变更 更 更 更数 数 数 数据 据 据 据的 的 的 的捕 捕 捕 捕获 获 获 获方 方 方 方法 法 法 法. 5 2.1 捕获方法 5 第 第 第 第三 三 三 三章 章 章 章 SQL SERVER 事 事 事 事务 务 务 务日 日 日 日志 志 志 志原 原 原 原理 理 理 理11 3.1 日志文件 11 3.2 日志11 3.3 检查点. 14 3.4 事务日志 15 3.5 ARIES 算法. 20 第 第 第 第四 四 四 四章 章 章 章 事 事
8、 事 事务 务 务 务日 日 日 日志 志 志 志读 读 读 读取 取 取 取方 方 方 方法 法 法 法与 与 与 与解 解 解 解析 析 析 析的 的 的 的研 研 研 研究 究 究 究 23 4.1 读取日志增量的可靠性 23 4.2 原始日志记录解析30 4.3 提高日志的解析效率. 32 第 第 第 第五 五 五 五章 章 章 章 变 变 变 变更 更 更 更数 数 数 数据 据 据 据捕 捕 捕 捕获 获 获 获器 器 器 器的 的 的 的实 实 实 实现 现 现 现与 与 与 与应 应 应 应用 用 用 用. 37 5.1 系统实现平台和开发工具37 5.2 系统的功能描述 37
9、 5.3 系统功能模块划分38 5.4 系统模块实现. 39 第 第 第 第六 六 六 六章 章 章 章 总 总 总 总结 结 结 结与 与 与 与展 展 展 展望 望 望 望 49 参 参 参 参考 考 考 考文 文 文 文献 献 献 献 51 攻 攻读 读硕 硕士 士学 学位 位期 期间 间发 发表 表的 的学 学术 术论 论文 文. 53 攻 攻读 读硕 硕士 士学 学位 位期 期间 间发 发表 表的 的学 学术 术论 论文 文致 致 致 致谢 谢 谢 谢55V第 第 第 第一 一 一 一章 章 章 章 绪 绪 绪 绪论 论 论 论 1.1 课 课 课 课题 题 题 题背 背 背 背景
10、景 景 景与 与 与 与来 来 来 来源 源 源 源在当前的信息化网络时代,随着科学技术的迅猛发展,信息量正呈爆炸方式迅速增长。现在我们能获得大量的信息,但是却不能有效地管理和利用这些信息。特别是大型的全球性企业,信息是它们的 IT基础设施的核心。企业实现信息共享,可以更充分地使用信息,减少资料收集和信息采集等的重复劳动和相应费用。但是,在企业实施信息共享的过程中,由于数据可能来自不同的途径,其数据内容、数据格式和数据质量相差很大,使得数据在各部门不易共享。因此,需要信息集成技术来解决信息共享的问题。信息集成技术是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的
11、数据共享。 1数据仓库是信息集成最常见的应用,其构造方法至少有三种 : 1 数据仓库根据数据源中的当前数据进行周期性地重建。这个方法最常用,数据重建每夜或间隔更长时间进行一次。它的主要缺点是重建过程中需要关闭数据仓库,而且重建数据仓库的时间很长,甚至长于间隔的时间。另一个缺点是数据仓库中的数据可能会非常过时。 2 根据自上次数据仓库被更新以后对数据源所做的更新,对数据仓库中的数据进行周期性地更新。这种方法可能只与少量数据有关。当数据仓库需要在很短的时间内进行更新,而数据仓库很大时,这种方法的优势就很明显。它的缺点是计算数据仓库中的变化,与简单重新构造数据仓库的算法相比,前者较复杂。 3 一个或
12、多个数据源中的每一次变化或一组变化立即反映在数据仓库中。这种方法延时最小,缺点是需要太多的通信和处理。 在处理某些新的商业需求时,例如持续更新数据仓库、及时更新数据仓库,第一种方法就行不通了,第二种方法不能及时更新数据仓库。基于日志分析变更数据捕获技术就是第三种方法中所用的关键技术,它能提供及时更新数据仓库的变更数据。 本课题组研究信息集成的方法,并对其进行改进,使之适应跨组织的大规模数据集成环境,以提高信息收集的效率和实时性。 本文是潘久辉教授主持的“电信企业经营信息集成支撑平台研究与开发”(编号:2007B090400095)课题的一部分,此课题是由暨南大学计算机系高性能数据库课题组共1
13、第一章 绪论 同承担。 1.2 相 相 相 相关 关 关 关研 研 研 研究 究 究 究工 工 工 工作 作 作 作 通常,数据集成系统是从不同的商业数据库中抽取数据进行分析。变更数据捕获方法是一种重要的抽取数据的方法。变更数据捕获方法因为其实现方式不同,其适用情况和效率也大不相同。 变更数据捕获方法的常用实现方式有:触发器、快照差分和事务日志。IBM InfoSphere、 SQL Server 2008 和 Oracle数据库都有变更数据捕获器(Change Data Caputure,CDC)。IBM InfoSphere CDC 使用基于事务日志的技术,IBM InfoSphere D
14、ataStage就使用2 3了快照差分的技术 。Oracle CDC 分两种:同步 CDC 和异步 CDC。Oracle同步 CDC使用基于触发器的技术,异步 CDC 使用基于事务日志技术。SQL Server 2008 CDC 是通过4异步读取事务日志的途径,捕获变更数据 。 由于基于事务日志的捕获方法比其他方法更具优势,基于事务日志的捕获方法成为捕获变更数据的主要趋势。但是,数据库的事务日志极其复杂,实现基于事务日志的捕获方法的难度比较高。 1.3 本 本文 文研 研究 究意 意义 义和 和主 主要 要工 工作 作 本 本文 文研 研究 究意 意义 义和 和主 主要 要工 工作 作目前,在
15、许多行业进行信息集成平台建设中,需要从不同的数据源抽取数据,增量抽取是高效实现机制,捕获变更数据是其关键技术。在数据源应用系统中通常采用 DB2,Oracle,Informix,Sybase和 SQL Server数据库或者它们之间的组合。信息集成系统从数据源中抽取增量数据,即捕获数据库中的变更数据,并传送到集成端。虽然捕获数据库中数据变化有多种方式,但是考虑到很高的运行效率和尽量减少对数据库的正常事务处理的干扰等原因,选择了分析日志内容从而捕获数据变化的方式。并且分析日志还能获取额外的信息,而这些信息是不能采用其他方式得到的。 由于商业数据库之间的事务日志格式差异很大,所以要针对不同数据库开
16、发相应的变更数据捕获工具。本课题相关工作已对 Oracle、IBM DB2 数据库事务日志进行了研究;但对 SQL Server数据库事务日志的研究还不够完善。本文要做的工作就是分析 SQL Server 2000 事务日志来捕获数据库的变更数据。这对丰富数据集成技术和提高数据集成效率从而实现提高信息反应的主动性和及时性,实现跨组织的信息集成具有重要意义。 2 暨南大学硕士学位论文 5,6,7本文是在有关工作 的基础上进行的更深入的研究和更广泛的探讨,主要的进展有:1研究数据库的复制的功能,防止在捕获变更数据之前事务日志被截断;2研究数据库的 ARIES 恢复算法,制定正确的捕获变更数据的算法
17、;3 制定捕获进程重启处理的正确方案,以及如何减少重启的时间;4研究如何提高捕获变更数据的效率。 1.4 论 论 论 论文 文 文 文安 安 安 安排 排 排 排 论文分六章进行论述,其中第三章、第四章和第五章是本文的重点。 第一章简要介绍了本文的课题背景和来源、相关的研究现状以及本文的目的、意义和结构安排。 第二章描述并详细比较了四种变更数据的捕获方法。 第三章详细介绍 SQL Server数据库的事务日志原理。 第四章描述了基于 SQL Server 2000 事务日志的变更数据捕获方法的研究。 第五章主要介绍了变更数据捕获器的部分实现。 第六章是对本文的总结和展望。3 第 第二 二章 章
18、 变 变更 更数 数据 据的 的捕 捕获 获方 方法 法第 第二 二章 章 变 变更 更数 数据 据的 的捕 捕获 获方 方法 法2.1 捕 捕 捕 捕获 获 获 获方 方 方 方法 法 法 法 变更数据捕获的常用方法有: 1.基于快照差分的捕获方法; 2. 基于触发器的捕获方法;3. 基于事务日志的捕获方法;4.数据库管理系统提供的变更数据捕获方法。基于快照差分4的捕获算法是先生成两个数据源的快照,然后比较它们并计算出变更数据 ;基于触发器4的捕获方法是使用信息源数据库的触发器机制捕获变量数据 ;基于事务日志的捕获方法4是利用数据库的日志机制,分析数据库的事务日志,计算出变更数据 ;有的数据
19、库管理系统自身提供变更数据捕获功能,如 Oracle Change Data Capture和 MS SQL Server 2008 Change Data Capture。 基于快照差分的捕获方法对信息源依赖弱或没有依赖,但是捕获变更数据的效率较低,延迟时间较长;基于触发器的捕获方法依赖于信息源数据库的触发器机制,它捕获变更数据实时性较高,但对信息源数据库的事务处理影响较大;基于事务日志的捕获方法依赖信息源数据库的事务日志机制和事务日志的读取接口,捕获变更数据的效率相对较高,并且对信息源数据库的事务处理影响较小。 2222.1111.1111 基 基 基 基于 于 于 于快 快 快 快照 照
20、 照 照差 差 差 差分 分 分 分的 的 的 的捕 捕 捕 捕获 获 获 获方 方 方 方法 法 法 法 1,8基于快照差分的捕获方法 虽然磁盘、内存和计算的开销较大,导致检测效率相对较低,但是它对数据库依赖弱或没有依赖,能适用于任意类型的数据源,从而能实现真正意义上的对异构数据源的集成。它适用于数据量不大的信息源,特别是更新操作频繁的信息源。图 2-1 基于快照差分的捕获方法的说明 5 第二章 变更数据的捕获方法 基于快照差分的捕获方法可以分解为由快照生成与快照差分计算两步工作,如图 2-1所示。 步骤 1:查询数据源生成最新的快照。这步工作生成的新快照在快照差分计算完成后,就变为旧快照。
21、 步骤 2:应用快照差分算法将新快照与旧快照作比较,其比较的结果就是变更数据。它在计算快照差分的过程中调用快照差分算法库中的某种算法来完成这一过程,其输入为快照,输出为变更数据。 2222.1111.2222 基 基 基 基于 于 于 于触 触 触 触发 发 发 发器 器 器 器的 的 的 的捕 捕 捕 捕获 获 获 获方 方 方 方法 法 法 法 9触发器 提供的功能,是信息源实施业务规则和数据完整性的内置机制的辅助方法。它可以通过企业管理器或者查询分析器来创建。触发器是一种特殊类型的存储过程,当使用下面的一种或多种数据修改操作在指定表中对数据进行修改时,触发器会生效:UPDATE、INSE
22、RT 或 DELETE。首先要为插入、删除和修改操作创建相应的触发器,当触发 INSERT 触发器时,新的数据行就会被插入到触发器表和 inserted 表中。inserted表是一个逻辑表,它包含了已经插入的数据行的一个副本。当触发 DELETE 触发器后,从受影响的表中删除的行将被放置到一个特殊的 deleted 表中。deleted 表是一个逻辑表,它保留已被删除数据行的一个副本。UPDATE 操作可看成两步操作:即捕获数据前像before image的 DELETE语句,和捕获数据后像after image的 INSERT语句。当在定义有触发器的表上执行 UPDATE语句时,原始行(前
23、映像)被移入到 deleted 表,更新行(后映像)被移入到 inserted 表。通过访问 inserted、deleted 逻辑表即可得到变化数据。 基于触发器的捕获方法依赖于信息源是否提供该功能。但并不是现实中的所有信息源都提供触发器的功能。同时,使用触发器会影响信息源的事务处理的速度。 22.11.33 基 基于 于事 事务 务日 日志 志的 的捕 捕获 获方 方法 法22.11.33 基 基于 于事 事务 务日 日志 志的 的捕 捕获 获方 方法 法10,11相对基于快照差分的捕获方法,基于事务日志的捕获方法 在理论上可以期望有更高的效率。因为在实际的数据存储环境中,基表的数据量通常
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于日志分析的SQL Server数据库变更数据捕获方法的研究与实现 基于 日志 分析 SQL Server 数据库 变更 数据 捕获 方法 研究 实现
链接地址:https://www.31doc.com/p-11689858.html