美文网首页
实时数据引擎项目介绍

实时数据引擎项目介绍

作者: OzanShareing | 来源:发表于2019-12-03 13:44 被阅读0次

项目引言


从数仓

ETL (数据仓库技术)


ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取extract)、转换transform)、加载load)至目的端的过程。ETL一词常用在数据仓库,但其对象并不限于数据仓库。

ETL是将业务系统的数据经过抽取清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据, ETLBI(商业智能)项目重要的一个环节。

ETL所描述的过程,一般常见的作法包含ETL或是ELTExtract-Load-Transform),并且混合使用。通常愈大量的数据、复杂的转换逻辑、目的端为较强运算能力的数据库,愈偏向使用ELT,以便运用目的端数据库的平行处理能力。

ETL(or ELT)的流程可以用任何的编程语言去开发完成,由于ETL是极为复杂的过程,而手写程序不易管理,有愈来愈多的企业采用工具协助ETL的开发,并运用其内置的metadata功能来存储来源目的对应mapping)以及转换规则。

工具可以提供较强大的连接功能(connectivity)来连接来源端目的端,开发人员不用去熟悉各种相异的平台及数据的结构,亦能进行开发。

当然,为了这些好处,付出的代价便是金钱。

CDC


Change Data Capture(改变数据捕获)是Oracle在数据库级别的实现

CDC能够帮助你识别从上次提取之后发生变化的数据。

利用CDC,在对源表进行INSERTUPDATEDELETE等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给目标系统。

目前,最为常用的ETL增量数据处理方式有几种:

  1. 时间戳(弱点:要求业务系统的表必须有一个可以标识新旧数据的字段)

  2. 日志对比

  3. 全面数据对比(弱点:高网络负载、性能代价高、无法反映数据的历史状态)

  4. 触发器(优点:抽取性能高。缺点:需要业务表建立触发器,对业务系统有一定的影响。)

CDC几个概念:

  1. 源表(Source Table),业务数据库的需要捕获数据的源表

  2. 变化表(Change Table),保存从源表捕获的变化数据(包括各种DML产生的数据)

  3. 变化集(Change Set),是保证事务一致性的数据集合。一个变化集对应多个变化表

  4. 订阅视图(Subscription View),提供给读取变化表数据的视图

  5. 订阅窗口(Subscription Window) ,定义了查看变化数据的时间范围,就像一个观察变化数据的滑动窗口。变化数据处理完成后,可以清除订阅窗口。

CDC的发布订阅模型:

  1. CDC体系结构基于发布者/订阅者模型。发布者捕捉变化数据并提供给订阅者订阅者使用从发布者那里获得的变化数据。

CDC的两个模式:

  1. 同步:同步CDC主要是采用触发器记录新增数据,基本能够做到实时增量抽取

  2. 异步:异步CDC通过分析已经commit的日志记录来得到增量数据信息,有一定的时间延迟,并且提供了到oracle Streams的接口。

  3. 同步CDC在企业版或者标准版中都可以使用,异步CDC则只包含在企业版中。

PowerExchange实时抽取架构介绍


工作原理

准实时抽取架构图

以上共有核心业务系统数据库服务器ETL服务器BI数据库服务器〔目标数据库服务器〕三台服务器和ETL客户端(PowerCenter客户端)。其中核心业务系统上有核心系统产生的Redo Log(即为归档日志)、安装Oracle Logminer、安装PowerExchangeETL服务器上安装PowerCenterPowerExhchange的客户端、BI数据库服务器为目标数据库、ETL客户端安装(PowerCenter客户端)。

核心业务系统数据库服务器在进行业务过程中,会一直写Redo LogLogminerOracle日志分析工具,能够对Redo LogAchive Log进行解析;PowerExhchangeOracle LogminerETL工具PowerCenter的接口,实现对Logminer的封装,通过它来定义要获取哪些表的增量及增量数据放到哪张对应的增量表中〔增量表结构是自己定义〕。

ETL客户端主要用来定义数据的抽取转换加载规则,比如:定义要抽取哪些表的增量、抽取的频率、要将增量数据插入到哪个数据库〔可以是任何数据库服务器上的表〕。在获取增量后如何处理这些增量(转换)等。

ETL服务器执行客户端定义好的ETL规则。在执行过程中,通过PowerExchange接口实时抽取核心业务系统产生的增量,并根据规则转换处理或不进行转换插入到BI数据库服务器上相应的目标表中。

具体执行流程是,PowerExchangeLogminer以类似服务的形式,在核心业务系统上执行,当ETL服务器启动抽取时,通过PowerExhchange接口调用在核心业务系统上的PowerExchangePowerExhchange再调用LogminerLogminer对核心业务系统产生的Redo Log进行解析。解析完成后将数据返回给PowerExhchangePowerExhchange将数据返回给ETL服务器,ETL服务器根据ETL客户端指定的规则(经过加工处理或不经过加工处理)处理后将增量数据加工到BI数据库服务器相关的表中。

详细介绍

Oracle服务器端的详细操作如下:

1、 执行以下脚本

说明:如果数据库已经是归档模式则不需要创建和指定归档日志存放路径。

必须创建针对PowerExchange使用的Oracle用户赋予指定权限,主要是为了对Logminer解析出数据后,存放数据的视图进行操作。

设置Oracle Supplemental Logging。默认情况下,Oracle记录日志是没有数据表中的字段数据内容,设置Supplemental Logging完成后,Redo log会记录发生变化的每条记录的前像内容和后像内容。只有这样,才能获取到变化记录内容。

创建Logminer表空间。Logminer在进行数据解析后,会将解析的结果数据保存到几个视图中。也就是说需要将数据暂存到数据表空间中。

编译Logminer系统包。

Oracle Catalog复制到redo logs

Logminer根据对数据字典的使用分为三种模式〔数据字典是将redo log中的对象代码转换成具体表名等对象名的映射文件〕,user online CatalogExtracting a LogMiner Dictionary to the Redo Log FilesExtracting the LogMiner Dictionary to a Flat File

PowerExchange在调用Logminer时,使用Extracting the LogMiner Dictionary to a Flat File这种模式。这种模式不需生成数据字典文件,即将数据字典内容写入到redo log中,因此没有额外的对数据库的操作。

2、 在Oracle服务器端安装PowerExchange

PowerExchange主要是实现对Oracle Logminer进行封装的工具,Logminer实现了对数据库日志的解析,但是要达到实时获取增量数据的目的需要涉及以下方面的问题:

(1) 如何实时进行解析

Oracle Logminer进行日志解析,需要调用Logminer的命令。每次命令可以解析整个redo log内容,也可以按照时间进行解析。但是,需要手工执行命令。PowerExchange利用自身的触发机制,对logminer进行自动的调用,实现准实时增量数据的获取。

(2) 解析出的内容的处理

Logminer在解析出变化数据后,会存放到相关视图中。视图存放所有变化数据表的数据,在应用时,必须对视图进行查询,然后将数据转移到相关的数据表中。Logminer提供图形化操作页面,通过Navigator进行对解析数据的定义及处理。

(3) 稳定性及效率问题及和ETL工具的结合

直接调用Logminer会涉及到频率、稳定、效率等诸多考虑因素,PowerExchange作为产品这些问题都有具体的处理。同时PowerExchange作为Informatica的一个组件,非常方便的整合到ETL调度体系中。

PowerExchangeoracle服务器端,做为一个服务贮存,监控数据的产生。通过ETL工具将实时抽取配置成一个Informatica PowercenterWorkFlowPowerExchange获取到数据后,自动运行此WorkFlow将获取到的数据抽取到定义好的目标表中。

参考文档:PowerExchange实时抽取架构介绍

相关文章

  • 实时数据引擎项目介绍

    项目引言 从数仓 ETL (数据仓库技术) ETL,是英文Extract-Transform-Load的缩写,用来...

  • ElasticSearch

    一.介绍 ElasticSearch是一个分布式搜索引擎和数据分析引擎,能够实现对海量的数据进行近实时的处理。支持...

  • [转载]Logstash介绍

    Logstash介绍 [转载] 好文分享, 感谢作者! 原文链接 Logstash是一个开源数据收集引擎,具有实时...

  • 日均处理万亿数据!Flink在快手的应用实践与技术演进之路

    作者:董亭亭整理:蒋晓峰 作者介绍:董亭亭,快手大数据架构实时计算引擎团队负责人。目前负责 Flink 引擎在快手...

  • Logstash快速安装部署

    介绍 Logstash是一个具有实时管道功能的开源数据收集引擎,Logstash可以动态地将来自不同数据源的数据统...

  • Mysql数据准实时同步到Elasticsearch

    一. 摘要 Elasticsearch作为大数据场景下的搜索和分析的引擎,广泛的应用于实时数据的分析场景。本文介绍...

  • 蘑菇街二面(9.12)

    自我介绍。 熟悉什么课程。 数据库由哪些东西组成。 三范式。 数据库存储引擎。 介绍项目。 手写快排。 介绍数据结...

  • Logstash入门

    个人专题目录 Logstash介绍 Logstash是一个开源的数据收集引擎,具有实时管道传输功能。Logstas...

  • 了解Logstash

    Logstash介绍 Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不...

  • Logstash

    1. Logstash介绍 Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将...

网友评论

      本文标题:实时数据引擎项目介绍

      本文链接:https://www.haomeiwen.com/subject/oxycgctx.html