1.本发明涉及数据查询
技术领域:
:,更具体地,涉及一种支持在线分析统计的实时查询库设计方法。
背景技术:
::2.现今大型企业都有多个部门和多种应用系统,很多数据都分布在不同业务部门不同业务库下的,这些应用系统并不是建立在统一平台之上,数据库系统也是相互独立,甚至是异构系统,每个系统之间的数据不能相互连通,构成了信息孤岛,由于电力营销业务的划分更加细致,随着数据规模的不断扩大,传统的关系数据库管理系统rdbms(relationaldatabasemanagementsystem)难以满足联机分析处理olap(onlineanalyticalprocessing)的需求,要让数据发挥辅助决策的作用,具备实时查询和在线统计分析的需求越来越突出,例如电力销售情况简表的需求,涉及复杂统计和实时响应的要求,传统建立数据仓库的解决方案偏向于离线批处理,虽然满足复杂查询的需求,但实时性很大程度上受制于组件和硬件制约,查询开销大。3.因此,需要提出一种支持在线分析统计的实时查询库设计方法,满足营销业务系统的在线统计分析,同时具有外提供实时查询服务的能力,形成常态化的数据监测和数据分析体系,提升企业经营和数据服务能力。技术实现要素:4.为解决现有技术中存在的不足,本发明的目的在于,提供一种支持在线分析统计的实时查询库设计方法,将oracle的数据实时同步到查询库当中,达到低延时、高性能,满足查询库数据与业务库数据一致性要求。5.本发明采用如下的技术方案。6.一种支持在线分析统计的实时查询库设计方法,包括:步骤1,在源端oracle业务库中部署数据复制软件进行日志收集;步骤2,使用插件对收集到的日志进行解析,得到增量日志数据;步骤3,对增量日志数据进行离线归档;步骤4,增量日志数据实时写入目标端查询库中;步骤5,历史数据从离线数据库中离线同步到目标端查询库中。7.优选地,步骤1包括:步骤1.1,对源端oracle业务库进行参数设置,使得oracle业务库处于归档模式;步骤1.2,在oracle业务库中,部署基于日志的结构化数据复制软件ogg,并建立ogg用户;步骤1.3,将ogg划分为源端和目标端,其中,在源端部署manager进程、extract进程和pump进程,在目标端部署collector进程和replicat进程;步骤1.4,利用ogg将源端oracle业务库的日志同步到目标端,实现日志收集。8.进一步,步骤1.1中,当设置复制使能参数enable_goldengate_replication为true时,oracle业务库开启强制写日志,即oracle业务库开启全列日志;当设置复制使能参数enable_goldengate_replication不为true时,oracle业务库不开启强制写日志,即oracle业务库不开启全列日志,则在发生修改或删除操作时,ogg将只会同步更新字段,其他未变更字段除主键外全部为null。9.进一步,步骤1.2中,建立ogg用户包括:创建ogg用户表空间、授权ogg用户、创建ogg相关的子目录。10.进一步,步骤1.3中,manager进程,负责管理其他进程的启停和监控;extract进程,负责从源端业务库表或者事务日志中抽取数据;其中,extract进程采用增量同步配置模式;pump进程,负责将源端trail文件的数据投递到目标端;collector进程,负责接收来自源端的数据,在目标端生成trail文件。11.进一步,步骤1.4包括:步骤1.4.1,由extract进程分析源端业务库日志,从源端抽取变动的数据;步骤1.4.2,将变动的数据记录在源端trail文件中;步骤1.4.3,pump进程将源端trail文件中的数据投递到目标端;步骤1.4.4,collector进程在目标端接收来自源端trail文件中的数据,生成目标端trail文件用于存储来自源端trail文件中的数据;步骤1.4.5,replicat进程读取目标端trail文件后,转化为数据定义语言和数据操作语言后在目标端数据库中使用,实现数据同步;其中,在目标端数据库中,数据定义语言用在定义或改变表的结构、数据类型、表之间的链接和约束的初始化工作上;数据操作语言用在对数据库中的数据进行操作,包括新增、修改和删除。12.优选地,步骤2中,使用云流数据处理平台datahub对目标端trail文件进行解析,将得到的增量日志数据实时订阅到datahub中;其中,oracle业务库中的每一张表table均对应datahub中一个独立主题topic。13.优选地,步骤3中,通过配置datahub的目标数据归档源,将datahub中的增量日志数据归档到大数据计算服务maxcompute中进行全量存储和批量分析计算。14.进一步,数据从datahub到maxcompute的归档采用非准实时归档,配置为每5分钟,数据从datahub到maxcompute归档一次,同时datahub缓存最近7天的数据。15.优选地,步骤4包括:步骤4.1,使用实时计算平台blink实时订阅datahub中的topic,将datahub中的增量日志数据实时订阅到blink缓存;其中,设置blink任务并发度与topic的碎片数一致;步骤4.2,通过blink将订阅到的增量日志数据转换成目标端查询库的结构化查询语言后,按照设定的顺序写入目标端查询库。16.进一步,步骤4.2中,设定的顺序是根据topic中每条数据的业务主键id进行分组排序获得的,排序的依据是数据产生的先后顺序,先产生的数据先消费,后产生的数据后消费。17.优选地,步骤5中,离线同步的方式包括:对于基于云原生数据库adb的目标端查询库,使用数据工场dataworks的数据集成di工具进行离线同步;对于基于交互式分析hologres的目标端查询库,使用外表的方式直接访问离线数据库中的数据表,使用sql语句将历史数据复制到目标端查询库的内部表中。18.优选地,步骤1还包括在所述云外数据中心部署oracle业务库;oracle业务库,用于提供事务处理,事务处理包括增删改查、流程处理、缴费记账。19.优选地,步骤4还包括,查询库部署在云平台;采用云原生数据库和交互式分析分别作为在线服务分析层的查询库;查询库,用于提供实时查询、在线分析统计。20.优选地,步骤5还包括,离线数据库均署在云平台;离线数据库,是全部数据的历史存储中心,用于离线的数据批处理、统计分析,数据分析计算,t+1的报表统计。21.本发明的有益效果在于,与现有技术相比,本发明使用的数据传输链路是oracle通过ogg+datahub+blink的方式同步至查询库,正常通讯延迟在30s到1分钟左右,查询库数据与业务库既能保证实时同步,也具有数据一致性,实现了查询库具有在线分析的能力,解决了查询库只能是同构数据库的限制,为系统后续提供在线数据服务奠定了基础。22.根据业务需求,查询库数据与业务库进行实时同步,查询库中提供指标统计分析能力和实时查询能力,业务库会实时同步到查询库中,并满足查询库数据与业务库数据一致性要求。附图说明23.图1是本发明一种支持在线分析统计的实时查询库设计方法的步骤框图;图2为本发明一实施例中,支持在线分析统计的实时查询库的传输链路示意图;其中,附图标记说明如下:1-oracle业务库;2-ogg;3-datahub;4-blink;5-maxcompute;6-adb/hologres。具体实施方式24.下面结合附图对本技术作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本技术的保护范围。25.如图1,一种支持在线分析统计的实时查询库设计方法,包括:步骤1,在源端oracle业务库中部署数据复制软件进行日志收集。26.具体地,步骤1包括:步骤1.1,对源端oracle业务库进行参数设置,使得oracle业务库处于归档模式。27.进一步,步骤1.1中,当设置复制使能参数enable_goldengate_replication为true时,oracle业务库开启强制写日志,即oracle业务库开启全列日志;其中,enable_goldengate_replication为面向ogg的复制使能参数;当设置复制使能参数enable_goldengate_replication不为true时,oracle业务库不开启强制写日志,即oracle业务库不开启全列日志,则在发生修改或删除操作时,ogg将只会同步更新字段,其他未变更字段除主键外全部为null。28.步骤1.2,在oracle业务库中,部署基于日志的结构化数据复制软件ogg(oraclegoldengate),并建立ogg用户;进一步,步骤1.2中,建立ogg用户包括:创建ogg用户表空间、授权ogg用户、创建ogg相关的子目录。29.步骤1.3,将ogg划分为源端和目标端,其中,在源端部署manager进程、extract进程和pump进程,在目标端部署collector进程和replicat进程;进一步,步骤1.3中,manager进程,负责管理其他进程的启停和监控;extract进程,负责从源端业务库表或者事务日志中抽取数据;extract进程的配置有两种:初始加载和增量同步两种模式,初始加载模式是直接将源表数据同步到目标端,如需要同步全量数据时,可采取此模式;增量同步是分析源端数据库日志,将变动记录传到目标端,本发明优选实施例中,extract进程采用增量同步配置模式;pump进程,负责将源端trail文件的数据投递到目标端;collector进程,负责接收来自源端的数据,在目标端生成trail文件。30.步骤1.4,利用ogg将源端oracle业务库的日志同步到目标端,实现日志收集。31.进一步,步骤1.4包括:步骤1.4.1,由extract进程分析源端业务库日志,从源端抽取变动的数据;步骤1.4.2,将变动的数据记录在源端trail文件中;步骤1.4.3,pump进程将源端trail文件中的数据投递到目标端;步骤1.4.4,collector进程在目标端接收来自源端trail文件中的数据,生成目标端trail文件用于存储来自源端trail文件中的数据;步骤1.4.5,replicat进程读取目标端trail文件后,转化为数据定义语言ddl(datadefinitionlanguage)和数据操作语言dml(datamanipulationlanguage)后在目标端数据库中使用,实现数据同步;其中,在目标端数据库中,数据定义语言用在定义或改变表的结构、数据类型、表之间的链接和约束的初始化工作上;数据操作语言用在对数据库中的数据进行操作,包括新增、修改和删除。32.优选地,如图2,步骤1还包括,在云外数据中心部署oracle业务库,以oraclerac(realapplicationclusters)集群作为业务事务处理中心,用于提供事务处理,事务处理包括增删改查、流程处理、缴费记账。33.步骤2,使用插件对收集到的日志进行解析,得到增量日志数据。34.具体地,步骤2中,使用云流数据处理平台datahub对目标端trail文件进行解析,将得到的增量日志数据实时订阅到datahub中;其中,oracle业务库中的每一张表table均对应datahub中一个独立主题topic。表table是oracle数据库中最基本的逻辑结构,一切数据都存放在表中,主题topic,是datahub订阅和发布的最小单元。35.步骤3,对增量日志数据进行离线归档。36.具体地,步骤3中,通过配置datahub的目标数据归档源,将datahub中的增量日志数据归档到大数据计算服务maxcompute中进行全量存储和批量分析计算。37.进一步,数据从datahub到maxcompute的归档采用非准实时归档,配置为每5分钟,数据从datahub到maxcompute归档一次,同时datahub缓存最近7天的数据。38.步骤4,增量日志数据实时写入目标端查询库中;具体地,步骤4包括:步骤4.1,使用实时计算平台blink实时订阅datahub中的topic,将datahub中的增量日志数据实时订阅到blink缓存;其中,设置blink任务并发度与topic的碎片数一致;步骤4.2,通过blink将订阅到的增量日志数据转换成目标端查询库的结构化查询语言后,按照设定的顺序写入目标端查询库。39.进一步,步骤4.2中,设定的顺序是根据topic中每条数据的业务主键id进行分组排序获得的,排序的依据是数据产生的先后顺序,先产生的数据先消费,后产生的数据后消费。40.优选地,如图2,步骤4还包括,查询库部署在云平台;采用云原生数据库和交互式分析分别作为在线服务分析层的查询库;查询库,用于提供实时查询、在线分析统计。41.步骤5,历史数据从离线数据库中离线同步到目标端查询库中。42.具体地,步骤5中,离线同步的方式包括:对于基于云原生数据库adb(analyticdb)的目标端查询库,使用数据工场dataworks的数据集成di(dataintegration)工具进行离线同步;对于基于交互式分析hologres的目标端查询库,使用外表的方式直接访问离线数据库中的数据表,使用sql语句将历史数据复制到目标端查询库的内部表中。43.优选地,如图2,步骤5还包括,离线数据库均署在云平台;离线数据库,是全部数据的历史存储中心,用于离线的数据批处理、统计分析,数据分析计算,t+1的报表统计。44.本发明的有益效果在于,与现有技术相比,本发明使用的数据传输链路是oracle通过ogg+datahub+blink的方式同步至查询库,正常通讯延迟在30s到1分钟左右,查询库数据与业务库既能保证实时同步,也具有数据一致性,实现了查询库具有在线分析的能力,解决了查询库只能是同构数据库的限制,为系统后续提供在线数据服务奠定了基础。45.根据业务需求,查询库数据与业务库进行实时同步,查询库中提供指标统计分析能力和实时查询能力,业务库会实时同步到查询库中,并满足查询库数据与业务库数据一致性要求。46.本发明申请人结合说明书附图对本发明的实施示例做了详细的说明与描述,但是本领域技术人员应该理解,以上实施示例仅为本发明的优选实施方案,详尽的说明只是为了帮助读者更好地理解本发明精神,而并非对本发明保护范围的限制,相反,任何基于本发明的发明精神所作的任何改进或修饰都应当落在本发明的保护范围之内。当前第1页12当前第1页12