当前位置: 首页 > 专利查询>河海大学专利>正文

一种基于动态镜像的实时数据仓库数据预存取方法技术

技术编号:10877862 阅读:125 留言:0更新日期:2015-01-08 00:12
本发明专利技术公开了一种基于动态镜像的实时数据仓库预存取方法。所述方法包括以下步骤,首先,建立基于实时数据仓库的分类ETL结构;然后,在数据仓库外部构建动态存储区域,动态存储区域由多个数据镜像与基于双重链接的镜像索引组成;最后,通过动态镜像创建、回收算法,对镜像进行管理,主要是动态镜像创建、动态镜像分配和基于双重链接的镜像索引维护。通过在实时数据仓库外部创建一个由多个镜像组成的实时数据存储区域,并建立基于双重链接的镜像索引,方便快速查找最新加载的数据,有效解决实时数据仓库的查询竞争问题,提升实时数据查询结果的精度。

【技术实现步骤摘要】
一种基于动态镜像的实时数据仓库数据预存取方法
本专利技术涉及一种实时数据仓库中实时数据访问预存取方法,具体涉及一种基于动态镜像技术的实时数据仓库中数据查询竞争处理方法。
技术介绍
近年来,电子信息数据在企业的运营中越来越重要,企业需要对电子信息数据进行高效、及时、精确地分析。传统的数据仓库采用ETL工具周期性地从数据源中抽取数据,经过处理后加载到数据仓库,而数据抽取的周期通常为一个月一次、一周一次、或者一天一次,通常只支持历史数据的查询与分析,不能实时捕获数据源中的变化。然而,在实时数据仓库中,实时数据导入与实时数据查询会引发查询竞争问题,其产生的冲突将严重影响联机在线分析(On-LineAnalysisProcessing,OLAP)的精度和效率,降低了数据仓库的性能。面对实时数据仓库中的数据查询与导入引发的竞争问题,近年来,开展了许多研究工作,包括提高数据库的性能、增加外部实时数据缓存、即时(JustInTime)合并外部数据缓存信息、反向即时数据合并、实时分区、主动分区等。(1)单独实时数据缓存方法是使用一种与数据仓库分离的外部缓存。外部数据缓存持续更新,数据仓库使用数据抽取与转换工具(ETL工具)以批处理模式进行数据更新,所有实时数据或准实时数据的查询直接定位到外部的数据缓存,从而避免了在数据仓库中的查询竞争问题。但是,如果数量巨大的复杂查询与分析运行在外部实时数据缓存,则同样会出现数据仓库的查询竞争问题。(2)简化和限制实时报表方法,需要实时数据的用户只能发出简单的查询要求,限制复杂查询语句。这种方法可以消除查询竞争,但是无法满足用户对复杂查询的要求。(3)升级硬件,可以为高端的SMP数据库系统增加更多的节点或者为数据仓库配备更快的处理器和更大的内存。这种方法只能短期内解决问题,但是增加了成本并且可扩展性低。(4)反向即时数据合并,将所需要的历史数据临时反向加载到实时数据缓存中,查询在缓存中进行。这种方法可以有效的解决查询竞争,但是,查询结果的精度却不尽理想。(5)实时分区是将实时数据进行数据量均衡的分区,然后分别各分区数据进行查询导入操作。这种方法有效的缓解了查询竞争,但是关于分区的个数和数据量的均衡算法的研究一直未成熟,分区算法随着分区个数增加时间复杂度也线性增加,海量数据环境下给系统带来沉重的负担,难以满足实时性的要求。因此,如何解决实时数据仓库中实时数据查询与数据导入引发的查询竞争问题,在保证数据查询精度的前提下,提供实时数据查询的效率,是实时数据仓库数据存取预处理必须解决的问题,也是本专利技术所要解决的问题。
技术实现思路
本专利技术的目的是为了解决在实时数据仓库中实时数据导入和实时数据查询相冲突的问题。当ETL工具连续向实时数据存储区加载数据时,此时,用户也会对实时数据存储区进行发送多次数据查询,而多次数据查询结果纳入同一个统计结果。由于数据被实时加载到实时数据存储区,若不考虑新加载的数据,OLAP查询结果的精度会受到影响;若考虑新加载的数据,查询的效率会降低。如何解决查询效率与查询结果精度的矛盾,本专利技术披露一种基于动态镜像结构的实时数据仓库预存取方法,解决此问题。技术方案:一种基于动态镜像的实时数据仓库数据预存取方法,包括以下三个方面:(1)实时数据仓库的分类ETL结构。(2)在数据仓库外部构建动态存储区域,动态存储区域由多个数据镜像与基于双重链接的镜像索引组成;(3)动态镜像管理,包括镜像创建与回收、基于双重链接的镜像索引维护。本专利技术披露的基于动态镜像的实时数据仓库数据预存取方法,所述内容(1)实时数据仓库的分类ETL结构的具体包括如下:(1.1)实时数据仓库的分类ETL结构包括实时ETL和历史ETL。ETL(ExtractTransformLoad)过程可以实现对数据的清洗、转化和加载。OLTP系统中的数据,根据其数据生成时间戳,将查询任务提交之前与之后存入OLTP的数据分别由历史ETL和实时ETL对数据进行清洗、转化和加载。(1.2)数据仓库存储区域分成实时数据存储区和静态数据存储区。历史ETL将OLTP系统中的历史数据清洗、转化和加载后,直接存入数据仓库的静态数据存储区。实时ETL将OLTP系统中的实时数据清洗、转化和加载后,存入动态存储区域,然后根据系统触发条件,由动态存储区域存入数据仓库的实时数据存储区。(1.3)历史ETL将OLTP系统中查询任务提交时间之前存储的数据,以批处理方式直接导入数据仓库的静态数据存储区。(1.4)实时ETL通过CDC技术捕获OLTP系统中查询任务提交时间之后更新的数据,并加载到动态存储区域。在动态存储区域实现对加载的实时数据进行分配存储空间、管理,当满足系统触发条件后,再以批处理方式导入到数据仓库中的实时数据存储区。本专利技术披露的基于动态镜像的实时数据仓库数据预存取方法,所述内容(2)动态存储区域,包括动态镜像与基于双重链接的镜像索引。动态镜像的具体内容包括如下:(2.1)镜像是具有相同的逻辑结构和物理结构的数据存储区域,并根据数据查询任务的需求,在动态存储区中动态创建。系统可以将OLTP中实时数据加载至镜像中。(2.2)当创建一个镜像时,系统在动态存储区中保存一个相应的镜像文件,用四元组表示:τ<image_address,image_size,data_id,timestape>。其中,image_address表示镜像在动态存储区中的首地址;image_size表示镜像分配的存储空间大小,默认为4MB;data_id表示镜像存储的数据源;timestamp表示数据的时间戳。根据用户数据查询与更新的需求,系统可以对动态存储区域中镜像动态地分配与回收。为了提高镜像管理的效率,方便、快速地将镜像的数据批量导入到数据仓库的实时数据存储区,本专利技术披露了基于双重链接的镜像索引结构,具体内容包括如下:(2.3)根据每个镜像文件中data_id,将所有data_id相同的镜像构建成一个镜像链表Link_img。镜像链表Link_img由链表头节点img_head和链表节点img_node组成。(2.4)链表头节点img_head由镜像数据源data_id与指向链表第一个节点的地址head_next组成。由于在一个镜像链表中,所有镜像的数据源是来自同一的数据源,数据源data_id相同。指向链表第一个节点的地址head_next存放第一个镜像首地址image_address。(2.5)根据镜像文件内容,链表节点img_node由镜像大小image_size,镜像数据时间戳timestamp,操作标识符tag,及指向下一个链表节点的地址img_next组成。操作标识符tag用于记录当前镜像数据的操作类型,其初始值为0。若当前镜像内容节点的数据是从源数据库系统OLTP导入至动态存储区,则此镜像内容节点的操作标识符置为0;若当前镜像内容节点的数据需要从动态存储区批量加载至数据仓库的实时数据存储区,则操作标识符置为1。对于当前镜像而言,若在动态存储区中,不存在来自同一数据源的镜像,则img_next设为空。否则,img_next存放下一个来自同一数据源的镜像的首地址image_address。(2.6)在同一个镜像链表中,存储了来自同一数据源,但是更新时间不同本文档来自技高网
...
一种基于动态镜像的实时数据仓库数据预存取方法

【技术保护点】
一种基于动态镜像的实时数据仓库预存取方法,其特征在于,包括以下步骤: (1)建立实时数据仓库的分类ETL结构; (2)在数据仓库外部构建动态存储区域,动态存储区域由多个数据镜像与基于双重链接的镜像索引组成; (3)动态镜像管理,包括镜像创建与回收、基于双重链接的镜像索引维护。

【技术特征摘要】
1.一种基于动态镜像的实时数据仓库预存取方法,其特征在于,包括以下步骤:(1)建立实时数据仓库的分类ETL结构;(2)在数据仓库外部构建动态存储区域,动态存储区域由多个数据镜像与基于双重链接的镜像索引组成;(3)动态镜像管理,包括镜像创建与回收、基于双重链接的镜像索引维护;所述步骤(1)的具体步骤为:(1.1)将实时数据仓库的ETL分为实时ETL和历史ETL;(1.2)数据仓库存储区域分为实时数据存储区和静态数据存储区;静态数据是指由历史ETL将OLTP系统中的数据处理并存入数据仓库的静态数据存储区的数据,实时数据是指先由实时ETL将OLTP系统中的数据处理并存入动态存储区域、然后根据触发条件由动态存储区域存入数据仓库的实时数据存储区的数据;(1.3)历史ETL将OLTP系统中查询任务提交时间之前存在的数据以批处理方式存入数据仓库的静态数据存储区域;(1.4)实时ETL通过CDC技术捕获OLTP系统中查询任务提交时间之后更新的数据并加载到动态存储区域,在动态存储区域对数据进行查询、更新、删除,当满足系统触发条件后再以批处理方式存入到数据仓库中的实时数据存储区;所述步骤(2)动态存储区域,包括动态镜像与基于双重链接的镜像索引;(2.1)镜像是具有相同的逻辑结构和物理结构的数据存储区域,并根据数据查询任务的需求,在动态存储区中动态创建;系统将OLTP中实时数据加载至镜像中;(2.2)当创建一个镜像时,系统在动态存储区中保存一个相应的镜像文件,用四元组表示:τ<image_address,image_size,data_id,timestamp>;其中,image_address表示镜像在动态存储区中的首地址;image_size表示镜像分配的存储空间大小;data_id表示镜像存储的数据源;timestamp表示数据的时间戳;(2.3)根据每个镜像文件中data_id,将所有data_id相同的镜像构建成一个镜像链表Link_img;镜像链表Link_img由链表头节点img_head和链表节点img_node组成;(2.4)链表头节点img_head由镜像数据源data_id与指向链表第一个节点的地址head_next组成;由于在一个镜像链表中,所有镜像的数据源是来自同一的数据源,数据源data_id相同;指向链表第一个节点的地址head_next存放第一个镜像首地址image_address;(2.5)根据镜像文件内容,链表节点img_node由镜像大小image_size,镜像数据时间戳timestamp,操作标识符tag,及指向下一个链表节点的地址img_next组成;操作标识符tag用于记录当前镜像数据的操作类型,其初始值为0;若当前镜像内容节点的数据是从源数据库系统OLTP导入至动态存储区,则此镜像内容节点的操作标识符置为0;若当前镜像内容节点的数据需要从动态存储区批量加载至数据仓库的实时数据存储区,则操作标识符置为1;对于当前镜像而言,若在动态存储区中,不存在来自同一数据源的镜像,则img_next设为空;否则,img_next存放下一个来自同一数据源的镜像的首地址image_address;(2.6)在同一个镜像链表中,存储了来自同一数据源,但是更新时间不同的数据镜像信息;随着系统运行,最近更新数据的时间戳一定大于较早更新数据的时间戳,所以,镜像链表中的节点按其数据时间戳倒序排序;(2.7)所有来自同一数据源的镜像构成一个镜像链表,称之为一个镜像桶bucket,其中镜像桶的首地址bucket_address为链表头节点地址;(2.8)在动态存储区中,若存储了n个数据源的数据,就有n个镜像桶;为了加快镜像数据的查找与定位,将对多个镜像桶采用链表结构,构成一个镜像桶链表Link_bucket;镜像桶链表Link_bucket是一个无链表头节点的链表,仅仅由镜像桶链表节点bucket_node构成;(2.9)每个镜像桶链表节点bucket_node由数据源data_id,镜像桶的首地址bucket_address,与指向下一个镜像桶链表节点的地址bucket_next组成;其中,数据源data_id存放对应的镜像链表的数据源data_id;镜像通的首地址bucket_address存放对应镜像链表头节点地址;向下一个镜像桶链表节点的地址bucket_next存放下一个镜像桶的地址bucket_address;若动态存储区中不存在任何数据,即不存在任何数据源的镜像桶,则不存在镜像桶链表;若在动态存储区中,若只有一个镜像桶,则其bucket_next为空;否则,bucket_next存放下一个bucket_address。2.根据权利要求1所述的基于动态镜像的实时数据仓库预存取方法,其特征在于,所述步骤(3)动态镜像管理,包括镜像创建与回收,及基于双重链接的镜像索引维护;动态镜像创建的具体过程如下:(3.1...

【专利技术属性】
技术研发人员:毛莺池王久龙闵伟平萍贾必聪
申请(专利权)人:河海大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1