




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
东南大学硕士学位论文 摘要 数据仓库包含了从各种独立自治的数据源中抽取的信息,当源数据发生变化时,为反映这种变 化,通常利用e t l 过程更新数据仓库中的数据。当采用完全重载的方法时,由于源数据集较大,大 大增加了业务系统的负荷,刷新数据处理时间也较长,因此无法保证刷新速度,降低了数据仓库对 数据变化的反应灵敏度。 本文从减少e t l 过程处理数据集规模和提高单位时间内e t l 过程数据处理能力两个角度入手对 e t lt 具进行改进。文中解决了触发器属性抽取和级联死锁判断问题,结合触发器和变更数据存储 表( d e l t a 表) 概念引入了增量数据源,并将增量数据源纳入到统一数据模型中进行管理。同时分析 了完全e t l 刷新变为增量刷新时遇到的异常,使用预处理、补偿等手段保证增量刷新过程的逻辑正 确性。并行化包含了s p m d 并行( s i n g l ep r o g r a mm u l t i p l yd a t a ) 和流水线并行,将数据平衡分布到 各个e t l 处理实例,并在各处理实例内施行流水线并行。论文讨论了并行化涉及的逻辑等价性,负 载均衡分片策略、并行优化等内容,使得e t l 过程可以充分利用计算机系统资源,提高了执行效 率。 关键词:e t l 过程,增量数据源,增量e t l 过程,s p m d ,流水线并行 东南大学硕士学位论文 a b s t r a c t c o n t a i n i n gi n f o r m a t i o nd r i v e nf r o md i v e r s es e p a r a t ed a t as o u “麓d a t aw a r e h o u s eu s e se t l r e f r e s h i n gp r o c e s st om a i n t a i nc o n s i s t e n ts t a t u sw i t ht h e s ed a t as o u r c e s d u et ot h es c a l eo f d a t as e tu s e di n c o m p l e t er e f r e s h i n g , w h i c hb r i n g sh e a v yb u r d e nt ot h ea p p l i c a t i o na n dg r e a t l yi n c r e a s e se t lr e f r e s h i n g t i m e , d a t aw a r e h o u s ec a nn o tg u a r a n t e er e f r e s he f f i c i e n c ya n dr e d u c es e n s i t i v i t yt o w a r d sc h a n g e s i nt h i sp a p e r , w ef o c u so nt w od i f f e r e n tp e r s p e c t i v e st oi m p r o v ee t lt o o l ,a ) r e d u c et h ed a t as e tw h i c h e t lp 1 d 璐d e a l sw i t h , b ) i m p r o v ep e r f o r m a n c eo fe t lp r o c e s sp e rt i m eu n i t w ei m p l e m e n tt r i g g e r p r o p e r t ye x l r a c t i o na n dc a s c a d et r i g g e r i n g r h l gd i s c o v e r i n ga l g o r i t h m , 慨f o r w a r dt h ec o n c e p to f i n c r e m e n t a ld a t as o u r c a w i 晡e hc o m p o s e st r i g g e r sa n dd e i 缸t a b l e st os t o r eu p d a t ei n f o r m a t i o n , a n da d di tt o t h eu n i f o r md a t am o d e l i nt h em e a n t i m e , a n a l y s i si sp a i df o ri n c r e m e n t a le t lp i o g * s st om a i n t a i nl o g i c c o n 咖e s s p a r a l l e l i z a t i o nc o n t a i n ss p m i ) ( s i n g l ep r o g r a mm u l t i p l yd a m ) a n dp i p e l i n e p a r a l l e l i z a t i o n f i r s td i s t r i b u t e sd a t ab e t w e e ne t lt r a n s f o r m a t i o ni n s t a n c e s ,t h a ni m p l e m e n t sp i p e l i n ei no n eh l s t a n c e o u r p a p e rd i s c u s s e ss e v e r a lf i e l d sc o n c e r n i n gp a r a i l e l i z a t i o n , s u c h d a t ap a r t i t i o n , l o a db a i a n c e , p a r a l l e l o p t i m i z a t i o ne t c t h e s ei m p r o v e m e n t se n a b l ee t lp r o c e s st om a k ef u l l 嚼o fc o m p u t e rr e s o u r c e 3a n d i m p r o v ee t lp r o c e s se x e c u t i o ne f f i c i e n c y k e y w o r d :e t lp r o c e s s , i n c r e m e n t a ld a t as o u r c e ,i n c r e m e n t a le t lp r o c e s s , s p m d ,p i p e l i n e 东南大学学位论文 独创性声明及使用授权的说明 一、学位论文独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所 知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果, 也不包含为获得东南大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本 研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 二、关于学位论文使用授权的说明 签名:一缒日期:幼g ; 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位论文的复印件和电 子文档,可以采用影印、缩印或其他复制手段保存论文本人电子文档的内容和纸质论文的内容相 一致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布( 包括刊登) 论文的全部或部分 内容。论文的公布( 包括刊登) 授权东南大学研究生院办理。 签名;缝导师签名;日期:州; 东南大学硕士学位论文 1 1 研究背景 第一章引言 信息是现代企业的重要资源,是进行科学管理和决策分析的基础。随着信息化程度的逐渐加深, 许多企业花费大量的资金和时间来构建基于联机事务处理o l t p 的业务系统和办公自动化系统,进 行信息集成。据统计,数据量每2 - 3 年时间就会成倍增长,这些数据蕴含着巨大的商业价值。为帮助 企业把累计数据转换为信息知识,提高其核心竞争力,基于数据仓库和数据挖掘等相关技术的企业 决策支持系统( d s s l 应运而生。 数据仓库是面向主题的、集成的、与时间相关的、不可修改的数据集合,属于企业决策支持系 统的一部分,图1 1 描述了e t l 过程的作用。数据仓库中的数据来自于各种不同的实时业务系统, 需要从各个业务系统数据源中抽取原始数据,然后经过清洗、转换、集成、聚集等一系列的处理, 最后将产生的数据加载到数据仓库中整个过程被称为e t l ( e x t r a c t ,t r a n s f o r ma n dl o a d ) 过程。 e t l 过程属于d s s 系统的一部份。 图1 1 数据仓库的盯l 刷新 由于业务系统在建立时往往缺乏科学的设计和协调,通常会存在下列问题: 1 业务系统间数据库模式设计不统一 2 约束不完整或定义存在差异 3 不一致的数据字典 4 多系统间数据冲突 5 使用数据库版本差异 即使是设计良好的业务系统,由于数据粒度,集成度,使用方式等方面的差异,而与以o l a p 、 数据挖掘等分析类应用为服务对象的数据仓库模式设计不同。所以用户通常需要定义复杂的e t l 逻 辑从各业务系统中抽取出数据。将其转化为模式统一、质量符合要求的数据,并最终载入到目标数 据库中。根据一些实际资料显示,e t l 规则设计和实施工作量较大,约占整个数据仓库项目的6 0 8 0 。 定义e t l 过程一般借助通用e t l 工具,使用过程通常分设计阶段和运行阶段。设计阶段中,用 户使用提供的工具和编程接1 :3 描述目的、源数据集的属性,定义数据模式之间的映射转换和清理规 东南大学硕士学位论文 则等,并将其转化为一个逻辑完整可执行的e t l 过程。执行阶段中,e t l 工具调度器根据生成的 e t l 过程逻辑,使用各种操作和流程对数据进行转换和清洗,并在出现转换异常时进行相关处理。 此外e t l 工具为方便管理和追踪还提供e t l 过程对象谱系管理和查询,运行时详尽的l o g 日志功能。 o r a c l e 的e t l 工具o r a c l ew a r e h o u s eb u i l d e r ( o w b ) j 丕提供了单步调试工具帮助用户对定义e t l 过程进行追踪调试。 e t l 设计目标包括:管理简单;采用元数据方法,集中进行管理;接口、数据格式、传输有严 格的规范;无需在外部数据源安装软件;数据抽取系统流程自动化,并有自动调度功能;抽取的数 据及时、准确、完整:可以提供同各种数据系统的接口,系统适应性强;提供软件框架系统,系统 功能改变时,应用程序很少改变便可适应变化;可扩展性强。目前的主流e t l 开发厂商,如i b m 、 a s c e n t i a l 、l n f o n n a t i c a 和o r a c l e 等,都存在各具特色的e t l 产品。 1 2 研究现状 根据与数据库系统的耦合程度,e t l 过程分为以下两类: 1 以d b 2 的d a t aw m o h o u s ec e n t e r 和o r a c l e 的w a r e h o u s eb u i l d e r 为代表,他们与数据 库系统紧耦合在一起,没有独立的e t l 处理引擎,最大限度地利用数据库提供的功能。 2 以d a t a s t a g e 和i n f o r m a t i c 为典型代表,它们游离于数据库系统之外,由专业的软件开发 商提供,有自己独立的e t l 处理引擎和脚本语言,支持多种数据目标和源,并支持大规 模并行处理。 这些e t l 工具提供的数据刷新方式主要有两种:完全重载和完全追加,并没有实现真正意义上 的增量式刷新。完全追加方式一般只适用于日志等特殊数据的处理:完全重载是指在每次进行刷新 时,将仓库中的数据全部清除,然后重新载入数据。它的缺点主要包括以下三个方面: 1 ) 对大型应用的数据仓库来说,数据量常常会达到几百g ( 甚至数t ) ,而现在对能够得到最新 数据的需求也在增加,这就需要经常更新数据仓库中的数据,在这种情况下对仓库中的数 据进行完全重载是一个非常消耗时间的过程。 2 )数据仓库中存储了很多聚集数据和生成数据( 由其它属性计算得来的数据) ,对数据仓库进 行完全重载时,每次都要重新进行计算,消耗很多时间。 3 )数据仓库中要求保存历史数据,如果每次进行覆盖重载,这些保存的历史数据将可能丢失。 随着用户对数据仓库反映的灵敏性要求不断提高,数据仓库需要的刷新效率要求越来越高;刷 新效率的提高主要倚赖于e t l 过程执行速度的改善。提高e t l 执行效率主要有: 减少e t l 过程处理数据集大小,采用增量数据刷新技术; 降低e t l 过程对数据的单位处理时间,通过对e t l 流程的改进,将处理过程并行化处理, 使e t l 工具能够更好的利用高性能计算机系统的资源,加快刷新速度。 目前基于数据仓库的增量式刷新。主要是面向实视图、聚集函数的刷新算法和实现框架。 i t 提出了无关更新的方法( i r r e l e v a n tu p d a t e s ) ,当数据源被更新时,有些更新操作可能不会影响到 数据仓库中的表或视图,因而把这些无关更新过滤掉,会有助于提高维护的效率。另外该文献还提 出了实视图维护的差分算法( d i f f e r e n t i a la l g o r i t i l l n ) ,该方法是通过构建真值表来实现的。这篇 文献的讨论主要是针对s e l e c t p r o j e c t - j o i n ( s p j ) 视图。 2 3 对聚集函数的增茸维护问题进行了 详细讨论。当多个独立,自治的数据源被同时更新时,如何确保所获得数据的正确性,这个问题在 4 5 6 7 中进行了讨论。对刷新性能提高的研究忽视了e t l 工具在数据仓库刷新中起到的主要 作用。由于实视图的多查询优化主要着眼于将各个不同的查询语句局部最优化,而在e t l 过程中各 个活动是相互关联的,因此必须考虑基于分解过程的全局优化。【8 9 3 介绍了e t l 过程的建模和基 本对象 1 0 】利用排队论的方法分析了e t l 过程 1 l 】分析了e t l 过程的流水并行化及相关问题。 1 3 本文的组织结构 本文首先分析了s e ue t l 系统具备的基本功能和框架;为提高e t l 过程的执行效率,分别从 增量数据刷新和e t l 过程的并行化两个方面进行论述,主要完成以下工作: 对d b m s 中触发器级联死锁问题进行分析并提出了检测方法 2 东南大学硕士学位论文 将触发器和增量数据存储表统一为增晕数据源,并将其纳入统一数据模型管理 对获得的变化数据实施处理。简化数据变化状态 引入增量式e t l 转换过程,通过预处理、补偿等操作保证增量e t l 过程的逻辑等价性 分析了域分解在e t l 过程并行中的使用 分析了e t l 过程的流水化性能、分片策略、优化原则 设计了s e ue t l 工具的并行框架 分析比较了并行化后的性能 论文按以下方式组织:第一章介绍论文研究背景及研究现状;第二章分析已有s e ue t l 工具 的基本功能和框架;第三、四章分别从增量数据源和增量e t l 过程两个角度分析增量刷新在e t l 过程中的应用,第五章分析了e t l 过程基于划分的并行和流水并行化。第六章总结了已取得的成果 和e t l 过程的未来研究方向。 3 东南大学硕士学位论文 第二章s e u _ e t l 的功能和框架 s e ue t l 工具是东南大学计算机系数据库实验室自行设计和实现的通用e t l 工具,为兼容和 简化异构源数据模型,工具定义了统一数据模型;为提高转换规则过程描述能力,方便用户定义复 杂转换过程和e t l 过程的调度,工具提供了e t l 过程的过程逻辑描述规范;为统一管理和追踪基于 各种模型的对象,工具建立了基于c w m 标准的元数据管理。 系统主要包含e t l 过程逻辑描述定义工具、统一数据模型定义工具、e t l 过程执行工具,使用 元数据库保存各种工具产生的对象;e t l 执行过程中利用中间数据库存储产生的临时数据。图2 1 展示了 图z is e u _ e t l 体系构架 s e u _ e t l 具备了较完善的逻辑定义功能和用户接口,用户可以定义较为复杂的e r l 流程且 整个定义过程比较清晰。 2 1 统一数据模型 由于设计管理的不完善,业务系统往往存在多种数据模型,因此一个成熟的e t l 工具必须能够 兼容异构数据模型。s e l le t l 工具引入了统一数据模型,以扩展后的关系对象模型为基础,通过对 象间映射将常见数据模型转换到统一数据模型。统一数据模型可以描述数据模型上的各种完整性约 束,描述数据模式的语义。s e ue t l 工具采用扩展的关系对象模型作为统一数据模型,既符合目前 数据仓库主要采用大型关系数据库作为载体的现状,同时针对关系模型中完整性约束条件描述太少, 模式的语义描述单一,无法描述事务规则约束、关联限制约束的缺陷,增加了完整性约束描述和语 义描述。 以下是x m l 数据模型通过对象数据模型作为过渡,最终映射到统一数据模型的一个实例。 4 东南大学硕士学位论文 图2 2 基于x m l 描述的数据模型转换 如图2 2 所示,x m l 和统一数据模型的详细转换如下,转换分成双向映射和单向映射两种( 这 里的映射都是一对映射关系) : 包含属性或者子元素的元素与记录集双向映射 属性和简单子元素( 不包含属性,也不包含子元素) 单向映射成字段 属性的数据类型单向映射成字段的数据类型 非简单元素之间的嵌套关系转换成关联通过如下方法:父元素和子元素分别描述为父,子 记录集,子记录集中增加指向父记录集i d 的关联字段,使用子记录集的关联字段和父记录 集的i d 字段来描述父、子元素关系 目前统一数据模型兼容的物理模型包括关系模型、面向对象模型等。图2 3 说明了s e l le t l 工 具可以提供多种数据访问接口,以获取基于以上模型,以各种形式存储的数据。 图2 3 转换执行模块结构图 通过定义统一数据模型实现了对异构数据模型的抽象,用户在制定e t l 过程时仅须考虑统一数 据模型。统一数据模型对简化e t l 过程设计逻辑,提高部署效率有很大帮助。用户在针对不同数据 模型的数据源进行相同转换策略的e ,r l 过程时,只需改变统一数据模型和物理数据模型的对应关系, 便可以将e t l 过程部署到多种异构数据源中,做到一次定义多次部署。 2 2e t l 过程的逻辑描述与执行 e t l 过程中不管是抽取、转换、集成都可以认为是一种数据转换。用户通过e t l 过程逻辑描述, 定义数据模式之间的转换映射。s e ue t l 还提供一组基本转换供用户调用。 e t l 过程的一般数据转换流程为:从数据源中获取输入记录集记录;使用数据转换处理输 入记录集并输出;将生成的输出结果集载入到目标数据库。数据转换分成三类:模式层转换、实 例层转换和数据清洗。模式转换是将输入记录集模式转换成输出记录集模式:实例层转换主要针对 单条记录的转换;数据清洗是发现记录中的逻辑错误并实施清洗转换。从数据源到目标数据的基本 转换如下表2 1 ( 1 l i n 为输入数据模式。o l o n 为转换数据输出模式) 。 表2 1e t l 过程转换操作分类 i转换分类 转换类型转换方式 模式层转换 一无损连接分解p o ix 0 2 ( 利用无损连接特性分解) 1 生成连接字段分解 单到多映射 2 不生成连接字段分解 东南大学硕士学位论文 3 候选码分插分解 二裂片分解l = 0 1 u 0 2 多到单的映 射 记录合并 砣r i 。( 。a 。t , ,, 啪a n - 2 , 2 1 , b 盼1 ) 叫x ,山如,i 记录分解 x l ( 札胁h 助h 豫:崧矧 记录之间的转换 ( 实例层转换) 条件转换表达式 字段之间的合并转换表达式 映射转换分解转换表达式 标量函数转换 记录投影选 投影( ) 选择( 6 ) 择,聚集 聚集映射( y ) 字段值缺失 字段拆分 非空 单记录清洗 主键冲突 外键冲突 数据清洗 数据唯一性 值域检查 主键代替 记录集中记录冗余不一致 记录集 记录集之间小符合外键关联约束 此外数据清洗中还包括多数据源中的数据质量问题如模式结构不一致、命名不一致,编码格式 不一致等。 用户通过执行脚本和s e ue t l 提供的扩展s q l 语言s e e s q l 来定义调度、转换规则。转换任 务是由一系列有执行顺序依赖或者数据依赖关系的转换活动构成,它们的执行顺序关系由转换任务 执行模块按照一定的调度算法来控制。在s e ue t l 的转换活动调度采用了串行转换调度,也就是 如果一个转换调度的动作组成首先是一个转换的所有动作,然后是另一个转换的所有动作。 s e ue t l 工具利用拓扑排序来线性化摧个e t l 过程。 2 3 元数据管理 s e ue t l 工具按c w m 标准( c o m m o nw a r e h o u s em e t a m o d e l 公共仓库元模型) 构建和实现了 适用于e t l 场景的元模型:统一数据模型,转换元模型和运行调度元模型,s e ue t l 工具中的元 数据管理对异构系统的集成和用户定义对象管理起着不可或缺的作用。异构系统之间要想进行有效 的互操作,必须对彼此间的信息结构具有共同的理解。c w m 包含了2 1 个单独的包,每个包都含有 与在数据仓库和业务智能领域中的特定部分相关的类、关联和约束。 s e ue 1 l 所使用的c w m 包:数据仓库处理包,决定e t l 的运行的调度策略;转换包,描述 e t l 的映射规则;表达式包;软件部署包;行为包;核心包。 s e ue t l 元数据管理使用c w m 标准后,具有以下优势: 按c w m 构建的元模型完善了模型描述能力,适用于现有各种复杂数据源、数据转换和e t l 调度; 元模型构建标准化,具有了与其它符合c w m 标准的数据仓库数据集成工具交互元数据的 能力,使得s e ue t l 的通用性大大增强: 增加了元数据版本控制功能,有效跟踪数据转换开发流程: 简化了软件部署和元数据发布工作,使e t l 工具更易于使用; 元数据存储管理的规范化方便了e t l 工具的设计、开发。 6 东南大学硕士学位论文 第三章e t l 过程中的增量数据源 数据仓库的增量式维护方法改变了原有批量数据刷新的形式,它依赖于数据源中变化数据的捕 获。由于增量数据集一般较小,不但降低了网络数据的传输量,同时大大提高了抽取过程的效率。 完全刷新e t l 过程一般在当业务系统访问量最低的时候如夜间、休息日执行,以降低峰值负荷。这 意味着e t l 过程的执行时间粒度至少是以天为单位。在采用合理的增阜数据捕获方式时。每次更新 负荷相对较小,可以增大e t l 执行频率,提高了数据仓库对变化数据的响应能力。增强了信息的时 效性。此外数据仓库中要求保存历史数据,如果每次进行重载,这些保存的历史数据将会丢失,这 也要求e t l 工具具备增量数据捕获能力。 3 1 增量数据的捕获 增量数据的捕获目前存在以下几种方法。需要提出的是,这里只是对各种方法进行原理性的总 结,并不是具体的算法实现。因为每种方法针对不同的系统在实现上都会有很大的差异,因而在具 体的实现上肯定会不同。如基于日志的抽取方法,各个数据库管理系统会采用不同的日志格式,提 供不同的管理访问接口。 1 ) 基于日志的抽取方法 如果数据源是一个能够维护并提供日志信息的数据库管理系统,那么对于在最后一个检查点 ( 1 a s tc h e c k p o i n t ) 前所提交的所有事务,它们对数据源所作的任何更改都将被记录在日志中,这些 日志信息中可被用来支持增量数据捕获。首先,数据库管理系统负责保存和管理所有的在线日志并 将其归档,如o r a c l e 的日志归档模式:其次数据库厂商必须提供基于日志文件的挖掘工具,从日志 中提取变更数据信息。如o r a c l e 提供了日志挖掘工具。但日志格式通常保密,各d b m s 厂商只 能兼容自己的产品。对于试图兼容多种数据源类型的开放式e t l 工具来说,基于日志的挖掘难以实 现。 2 ) 基于增量快照的抽取方法 在o r a c l e 中,提供了在源表上建立增量快照日志的方法,通过建立与增量日志对应的增鼍快 照可以获得增量数据,在文献 1 2 1 中有关于数据仓库的高效快照差分算法的详细讨论。但增量快照只 能建立在实表上,同时每次快照刷新将清空快照日志,因此不能实现多个增量快照对应一个快照日 志。增量快照的方法只能局限于特定的数据库系统。 3 ) 基于数据复制的抽取方法 利用商业数据库提供的复制服务是探测和捕获数据源变化的另一个选择。如i b m 的d a t a p r o p a g a t o r 和s y b a s e 的r e p l i c a t i o ns e r v e r 等都提供了某些机制,将数据源中被修改的信息传播到操 作数据源的环境之外。“数据复制”是一种在多个地方维护一个给定数据集的机制,它将一个地点( 源) 的改变信息复制到另外一些地点( 目标) ,并负责同步源和目标中的数据。数据源和数据目标可以在 同一台机器的数据库服务器上,也可以分布在网络中的不同服务器上。 4 ) 基于应用程序的抽取方法 对于非自主维护的数据( 如t e x t 文件,x l v l l 文件等) ,由于不存在日志记录,如需要获取变更 信息,必须要求应蹦程序在更新数据的同时保存变更记录,而由于原有设计的应用系统上往往不提 供增量数据保存的功能。增量数据获取将严重依赖应用系统所提供的功能,这违背了一个良好e t l 工具的基本要求。 5 ) 基于时间戳的抽取方法 如果源数据中保存了数据变更类型( 插入更改,删除) 和修改时间戳。且业务系统能够正确维护 这些信息,e t l 过程便可以使用类似s e l e c t f r o ms a l e s w h e r ed a t e 2 0 0 6 - 2 - 9 语句获取增 量数据。基于时间戳的方法也必须依赖业务系统的支持。 6 ) 基于触发器的抽取方法 7 东南大学硕士学位论文 触发器是事件驱动的,过程化的,存储在数据库一级的程序逻辑。由于可以通过编码实现多种 类型的操作功能。它可以定义比约束更精细和更复杂的控制逻辑,触发器可以提供以下功能: 验证输入数据 为新插入的行生成值 为交叉引用而从其它表中进行读取 为审计跟踪而向其它表写入 触发器是支持主动数据库( a c t i v ed a t a b a s e ) ,实现业务逻辑不可缺少的工具。对数据变更而言, 它的触发事件会将相关的信息( 如被更改的属性以及它们的新值和旧值,更改操作的类型,更改的 时间等) 记录到一张辅助表中。当数据仓库的刷新操作完成之后,辅助表中的信息就可以被删除了。 例如,设s t o r e ( s t o r e l d ,c n y ,r e g i o n ) 是s t o r e i n f o r m a t i o n 数据源中的一张表,其相应的辅助表可以为 d e l t a _ s t o r e ( s t o r e l d ,c i t y , r e g i o n , c a r d i n a l i t y , t i m e ) ,其中c a r d i n a l 姆为数据源发生变化的类型( + l 一 插入,1 删除) 。则对于插入、删除和修改动作的触发器可以分别按如下建立: i n s e r t i o nt r i g g e r c r e a t et r i g g e ri n s _ s t o r e a f t e ri n s e r t0 ns t o r e r e f e r e n c i n gn e wa sn e w l i n ef o re a c hr o w b e g i na t o m i c i n s e r ti n t od e l t as t o r e sv a l u e s ( n e w l i n e s t o r e i d ,n e w l i n e c i t y , n e w l i n e r e g i o n ,+ 1 ,d e f a u l t ) ; e n d : d e l e t i o nt r i g g e r c r e a t et r i g g e rd e l s t o r e a f t e rd e l e t eo ns t o r e r e f e r e n c i n go l da so l d l i n ef o re a c hr o w b e g i na t o m i c i n s e r ti n t od e l t as t o r ev a l u e s ( o l d l i n e ,s t o r e i d , o l d l i n e c i t y , o l d l i n e r e g i o n , 一1 ,d e f a u l t ) : e n d : t r i g g e ro fu p d a t e c r e a t et r i g g e ru d ps t o r e a f t e ru p d a t eo ns t o r e r e f e r e n c i n go l da so l d l i n en e wa sn e w l i n ef o re a c hr o w b e g i na t o m i c i n s e r ti n t od e l t a _ s t o r e sv a l u e s ( o l d l i n e s t o r e l d , o l d l i n e c i t y , o l d l i n e r e g i o n , 一1 ,d e f a i l l t ) : i n s e r ti n t od e l t a _ s t o r e sv a l u e s ( n e w l i n e s t o r e i d ,n e w l i n e c i t y , n e w l i n e r e g i o i l + l ,d e f a u l t ) ; e n d : 现阶段可行的增量数据捕获方式主要存在以下问题:1 ) 依赖于特定的数据库管理系统,无法兼 容异构数据源;2 ) 依赖于业务系统中应用逻辑的改变。以上问题阻碍了增量刷新在e t l 工具和数 据仓库中的应用。 s q l 9 9 标准中完备定义了触发器对象的语法和功能。虽然各大d b m s 厂商对触发器语法进行了相 关拓展,但触发器的基本结构和特性相同,因而存在一定程度的可移植性;可以通过属性抽象模块, 将不同数据库管理系统的触发器抽象成包含基本特征的触发器单元,并在e t l 工具中实现管理。触 发器是封装在d b m s 内部的程序逻辑,在逻辑正确的前提下不会影响应用系统的业务逻辑。此外以捕 获增量数据为目的触发器定义逻辑比较简单,对应用系统性能影响较小。 综合以上分析表明,利用触发器实现增量数据捕获可以解决过于依赖d b m s 和业务系统的问 题。但d b m s 中缺乏对触发器的管理。随着业务逻辑中触发器的增多。触发器追踪、调试、管理困 8 东南大学硕士学位论文 难的缺点暴露无疑;尤其是级联触发死锁现象,它的形成源于触发器问如同链式反应般的相互触发, 级联触发死锁会导致触发器调用的溢出。对于检铡错误而言,d b m s 中已经存在的各类型触发器和 系统提供的十分含糊的报错信息都成为解决问题的巨大障碍。因此要将触发器应用到e t l 过程中, 必须在e t l 工具中实现对触发器的管理。 3 2 级联触发的判断 3 2 1 触发器结构分析 本文将以s q l9 9 标准中的触发器定义为基础。s q l9 9 中触发器定义分为三个部分:触发事 件( e v e n t ) ,触发条件( c o n d i t i o n ) 和触发动作( a c t i o n ) 。以下是d b 2 中触发器的形式化定义。 ,e v e n t, ,- c r e a t et r i g g e r - t r i g g e r - n a m e - - + - n oc a s c a d eb e f o r e - + - - - - - - 一a f t e r - - - - - - - - - - - - - p - - + - i n s e r 下_ _ - - - _ _ _ - _ c n t a b i e n a m e 一_ - - , + d e l e r e - - + - - u p d a t e - - - - - - - - - - - - 。 - o f - - c o l u m n n a m e - - - - - - _ - - - - - - - - - - - _ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _ - - - - - - - - - - - - - - - - - - - _ - - - - - - - - + - , i - a s 、 i 。- r e f e r e n c i n g - - + - o l d - - + - - - + - - c o r r e l a t i o n - n a m e - - - - - - - + - - - - - + i - a s - j + - n e w - 斗- 计c o r r e i a 啦o r 卜n a m e - _ - - + i 舶、 i + - o l dt a b l e + + b b l e - i d e n t i f i e r - 4 i - a s - i - n e w t a 8 l e 斗- + - t a b l e - i d e n l f 晰e r - + f o re a c hr o m f 一m o d ed b 2 s q l f o re a c hs t a t e m e n t j , c o n d i t i o n , 。- w h e n - - ( - - s e a r c h - c o n d m o n _ l j l i a c l i o nl - b e g i na t o m i c - - t r i g g e r e d s q l - s t a t e m e n t - ;- + - e n d - e v e n t 部分主要描述了触发器的触发事件、触发粒度、触发时间和中间变量名等。c o n d i t l o n 部分用来描述触发器执行的条件,主要涉及动态数据值的判断。a c t i o n 部分则描述了触发器的执 行操作,也可能包含部分条件判断语句,如l f 语句以及m o d i f y 语句中的w h e r e 条件等。 3 2 2 触发器级联触发的检测 触发器问构成了级联触发环路是导致触发死锁现象的根本原因。由于触发器的c o n d i t l o n 部 分和a c t i o n 中的条件判断部分往往涉及动态执行时的数据,因此只有在触发器执行时才能确定触 9 东南大学硕士学位论文 发器间是否一定会产生级联触发环;而且触发器是在d b m s 的进程空间中触发执行的,应用程序实 际上不可能在触发器执行过程中判定级联调用环。 本文主要解决识别静态、潜在触发器级联触发环的问题。静态的含义是仅通过分析触发器d d l 而不是执行触发器来获取触发器触发信息;潜在的含义是分析触发器d d l 时忽略与动态执行相关部 分的分析,如例子中的w h e n 、i f 语句和m o d i f y 语句中的w h e r e 子句,所以静态、潜在级联 触发环包含了所有动态执行时引发的级联触发环。潜在、级联触发环解决了难以在运行过程中判定 触发器级联触发环路的问题,将触发器和触发器间的潜在触发关系构成一张有向图。通过这个转化 不但使判定级联触发环成为可能,也使得展示和管理数据库中的触发器变得十分方便。静态、潜在 触发环的判断可以成为检测级联触发死锁的辅助工具,大大提高了在日。l 工具中部署和管理触发器 的效率。以下文中的级联触发环不作说明时默认为静态、潜在的级联触发环。 3 2 3 触发器筛选规则 触发器的e v e n t 部分触发事件包含i n s e r t , d e l e t e 。u p d a t e 三种情况,而a c t i o n 部分 可以包括i n s e r t 、搜索式u p d a t e 、搜索式d e l e t e 、f u l ls e l e c t 、串行式s q l 、s i g n a l s q l s t a t e 等语句。 触发器只有在其a c t i o n 部分中包含有更改数据库状态的m o d i f y 语句时,才有可能级联触发 下一个触发器。m o d i f y 语句包括i n s e r t 、搜索式u p d a t e 、搜索式d e l e t e 。以下涉及的触 发器都应满足该筛选规则。 实际应用中o r a c l e 和d b 2 对于设定触发时间为b e f o r e 类型的触发器动作规定不同。d b 2 中规定a c t i o n 部分只允许存在全查询和赋值语句,因此这些触发器也不可能产生级联触发;而 o r a c l e 中则没有该限制。这些区别都将反映在基于各个d b m s 的不同属性抽取模块中。 3 2 4 自动搜索级联触发环 图3 ,1 描述了s e u e t l 对触发爨进行管理的功能模块,在自动识别系统中将首先形成触发器 间关系图和触发器集合间关系图,每个符合要求的触发器对应触发器问关系图中一个节点。这两张图 图3 1s e ue t l 触发器管理功能图 触发器属性抽取 d b m s 为管理触发器在系统表中记录了触发器的部分属性,如触发器所属表,触发器名称,被 触发基本条件( i n s e r t ,u p d a t e ,d e l e t e ) 等。因此只需从d d l 中解析出其他触发器属性。抽取步骤分 为e v e n t 部分抽取和a c t i o n 部分抽取两个阶段。 e v e n t 部分d d l 的抽取属性 大部分的e v e n t 属性都已分解存储于系统表中:该部分d d l 只需抽取出当触发事件为u p d a t e 1 0 东南大学硕士学位论文 情况下,e 、,e n t 部分所指定引起触发的字段名称。 a c t i o n 部分d d l 的抽取属性 触发器a c t l 0 n 部分d d l 支持s q l 归s m ( p e r s i s t e n ts t o r e dm o d u l e s ) 语言,它是一个过程 化的语言,包含了变量定义、流程控制等语句,但改变数据库状态仍然依赖于m o d i f y 语句。因此 a c t i o n 部分的d d l 抽取内容为m o d i f y 语句涉及的模式名、表名,当语句为u p d a t e 语句还应 包含语句涉及的修改字段名。 主流d b m s 厂商均以产生式集合形式对s q l 的语法进行表述。为了从d d l 中抽取相关属性, 自动分析系统包含了一个解析器:它根据输入的产生式系统和动作抽取所需属性项。解析器的实现 采用了l e x & y a c c 。 由于只要获得d d l 中的某些属性,且在触发器部署时d b m s 已经对d d l 进行了完整的正确性 分析;因此没有必要实现d d l 的完全解析。实现中改写了s q l 9 9 中给出的词法、语法规则,词法 分析中采用将语句中的无用部分直接忽略的方法( 如图5 中的w h e r e 子句) 以加快分析速度,同 时改写产生式系统以配合词法分析器的修改。这样解析器就可以跳过对非m o d i f y 语句和m o d l f y 语句中部分操作单元的分析。 词法分析 词法分析器在对a c t i o n 部分的处理中只需提取m o d i f y 语句单元,而忽略其他如s e l e c t 和s q u p s m 语句。本系统中词法分析器包含了图3 2 所示的两种状态: 1 1 6 e r t u p d a t e d e l e t b 语句分隔符: 图3 2 词法分析器状态图 状态l 首先从d d l 中提取m o d i f y 语句关键字( i n s e r t ,u p d a t e ,d e l e t e ) ,当匹配到这三个关 键字时,词法分析器进入状态2 按规则对该语句进行词法分析。当状态2 中匹配到s q l 语句分隔符: 时,词法分析器状态重置为状态1 并开始下一条m o d f f y 语句的分析。这样配合相应的语法分析程 序就可以保证解析器只处理m o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西省“三新”协同教研共同体2024-2025学年高一上学期12月月考历史试卷(含答案)
- 联合体投标协议书
- 河北石家庄市正中实验中学2024-2025学年高一上学期第一次月考思想政治试卷(含答案)
- 学校运动会部署会上校长讲话-:抓实筹备每一环保障安全每一步成就健康每一人
- 2025秋第二次教学工作推进会上,校长讲话:提质增效,要真抓实做-教学推进会上校长六项发言要点
- 应城交警安全培训中心课件
- 巡察谈话课件
- 岩石变化课件
- 尾矿库安全检查培训课件
- 输液港与PICC的区别
- NB-T32042-2018光伏发电工程建设监理规范
- 博士高校面试答辩模板
- 在线网课知道知慧《战舰与海战》单元测试答案
- 2017一级建造师考试港口与航道工程实务真题及答案
- 部编小学语文单元作业设计四年级上册第八单元
- 透析器分类和选择课件
- 中医护理技术在急危重病人中的应用
- 机器人动力学培训课件
- 自动化腹膜透析的临床应用课件
- 食堂投诉处理、消防、治安及意外事故处理方案
- 《荷塘月色》 省赛获奖
评论
0/150
提交评论