一个简化、落地的实时数据仓库解决方案

news2024/11/21 1:27:39

从传统的经验来讲,数据仓库有一个很重要的功能是记录数据变化历史。通常,数据仓库都希望从业务上线的第一天开始有数据,然后一直记录到现在。但实时处理技术,又是强调当前处理状态的一门技术,所以当这两个相互对立的方案重叠在一起的时候,注定不是用来解决一个比较广泛问题的方案。于是,我们把实时数据仓库建设的目标定位为解决由于传统数据仓库数据时效性低而解决不了的问题。

实时数据仓库也引入了类似于离线数据仓库的分层理念,主要是为了提高模型的复用率,同时兼顾易用性、一致性以及计算成本。通常离线数据仓库采用空间换取时间的方式,所以层级划分比较多,从而提高数据计算效率。实时数据仓库的分层架构在设计上考虑到时效性问题,分层设计尽量精简,避免数据在流转过程中造成不必要的延迟响应,并降低中间流程出错的可能性。实时数据仓库分层架构如图1-9所示。

 

图1-9  实时数据仓库分层架构

  1. ODS层:以Kafka为支撑,将所有需要实时处理的相关数据放到Kafka队列中来实现贴源数据层。这一层是数据输入层,主要是埋点、流量、日志等消息数据的接入。
  2. DWD(Data Warehouse Detail)层:实时计算订阅业务数据消息队列,然后通过数据清洗、多数据源连接、流式数据与离线维度信息的组合等,将一些相同粒度的业务系统、维表中的维度属性全部关联到一起,增加数据易用性和复用性,得到最终的实时明细数据。
  3. DIM(Dimension)层:存放用于关联查询的维度信息,可以根据数据现状来选择存储介质,例如使用HBase或者MySQL。对于实时ETL、实时统计,或者特征加工时需要进行流数据和静态维表数据关联处理等情况,这一层是必须的。
  4. DWS(Data WareHouse Service)层:轻度汇总层是为了便于面向即席查询或者实时OLAP分析构建的轻度汇总结果集合,适合数据维度、指标信息比较多的情况。为了方便根据自定义条件的快速筛选和指标聚合,推荐使用MPP类型数据库进行存储。此层可视场景情况决定是否构建。
  5. APP层:面向实时数据场景需求构建的高度汇总层,可以根据不同的数据应用场景决定所使用的存储介质或者引擎。APP层已经脱离了数据仓库,这里虽然作为一个独立分层,但实际APP层的数据已经分布存储在各种介质中以供使用。

图1-10显示的是一个简化的、落地的,并基于MySQL、Canal、Kafka、Greenplum构建的实时数据仓库架构。本书后面讨论的实践部分都基于此架构进行设计开发。

 

图1-10  基于MySQL、Canal、Kafka、Greenplum的实时数据仓库架构

在真实的数据仓库项目中会涉及多种数据源,不同数据源产生的数据质量可能差别很大,数据库中的格式化数据可以直接导入大数据存储系统,而日志或爬虫产生的数据就需要进行大量的清洗、转化处理才能有效使用。几乎在所有领域的业务数据源中,关系数据库都占有绝对比重,而其中MySQL毋庸置疑是当今最流行的关系数据库系统。本书将MySQL作为唯一数据源,一是出于简化目的,因为后面的实践均给出代码级别的实操,不可能面面俱到;二是MySQL具有典型性,搞定MySQL的数据采集就可以解决实际应用中的大部分问题。

Canal Server从MySQL从库产生的binlog(开启log_slave_updates)抽取增量数据变更日志,这样做有两个好处。首先,最重要的是它不会影响线上业务,因为Canal Server只是在从库创建一个Binlog Dump线程,对MySQL Server的影响微乎其微。其次,从库可以随时启停复制,这样可以很容易地为下游组件确定一个增量数据同步起点,在进行首次全量数据同步时就可以有效利用这一点来实现。

Canal Server作为数据生产者将记录数据变化的binlog以消息形式传递给Kafka。Kafka一方面可以将消息持久化存储,避免数据丢失,另一方面可以充当数据入仓前的缓冲区。Canal Adapter作为数据消费者从Kafka接收消息,然后将数据写入Greenplum数据库。

数据进入Greenplum后,就可以利用它提供的规则(rule)、用户自定义函数(UDF)、物化视图(MV)等功能,自动、实时、对用户透明地执行一些复杂的ETL过程,以及对维度表和事实表的数据维护。Greenplum是一种成熟的MPP架构的分布式数据库,提供了丰富全面的功能,并且性能优良,比较适合当作实时数据仓库的数据存储、数据处理和数据查询引擎。作为数据库管理系统,还可以利用Greenplum统一管理元数据。

图1-10所示架构具有门槛低、上手易、实施快的特点,整个构建过程只需要适当安装配置相关的软件,再利用SQL即可完成,不需要其他任何编程工作。当然,从来没有完美的架构,只有适合的解决方案。本架构明显的一个局限是只能处理MySQL一个数据源,而且始终以数据库提供的功能为核心。如果涉及非常复杂的处理逻辑,可以引入类似Flink的实时计算引擎,并在其上开发自己的应用程序是更好的选择。

本文节选自《Greenplum构建实时数据仓库实践》,内容发布获得作者和出版社授权。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/540909.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聚合数据证件识别接口-基于PHP示例代码

1、开通接口 以下代码示例基于聚合数据提供的证件识别接口,使用前需要先注册申请本接口,获得请求密钥key。 接口文档地址:https://www.juhe.cn/docs/api/id/153 2、功能介绍 通过自动识别的方式获取常规证件文字内容,免去用户…

react函数式组件转化为string---renderToString

需求 使用aggrid的过程中,某个自定义的图标需要传dom的字符串。 但在react的开发中,一般都是组件的概念(ReactNode,JSX.Element) 因此需要一个方法将dom组件转化为字符串 收获 找到了官网的API——renderToString 作…

虚拟主机部署ssl证书(https)流程

注意事项: 1、域名要做别名解析指向二级域名 2、证书已经申请完成,其他公司的证书要下载导入到西部数码。 虚拟主机部署教程如下: 部署证书 首先要将域名绑定到主机上,在主机控制面板找到【SSL部署】按钮。 在西部数码申请过证…

FFmpeg 媒体文件播放 格式变化流程简述

例如,要播放一个 MP4 文件,这个文件要经过啥呢? 一个 MP4 文件中包含了:视频压缩数据流(如H.264、H.265)和音频压缩数据(如aac、MP3) 首先需要经过解码成为原始数据,视频…

数据库原理及应用上机实验一

✨作者:命运之光 ✨专栏:数据库原理及应用上机实验报告整理 目录 ✨一、实验目的和要求 ✨二、实验内容与步骤 🍓🍓前言: 数据库原理及应用上机实验报告的一个简单整理后期还会不断完善🍓🍓…

HarmonyOS低代码开发-创建新工程方式

使用低代码开发应用或服务有以下两种开发方式: 创建一个支持低代码开发的新工程,开发应用或服务的UI界面。在已有工程中,创建Visual文件来开发应用或服务的UI界面。ArkTS工程和JS工程使用低代码的步骤相同,接下来以JS工程为例讲解…

Web自动化框架中验证码识别处理全攻略,自动化测试神器,让测试更得心应手。

目录 前言: 一. Web自动化测试框架搭建 1. 选择一个自动化测试工具 2. 安装环境 3. 初始化一个Selenium驱动 二. 添加自动化测试用例 1. 编写测试脚本 2. 运行测试脚本 三. 验证码识别与处理 1. 验证码种类 2. 验证码处理方式 四. 结语 Web自动化测试&#…

指针不可怕,请爱它呵护它(狗头)

🤩本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 🥰内容专栏:这里是《C知识系统分享》专栏,笔者用重金(时间和精力)打造,基础知识一网打尽&#xff0c…

opencv_c++学习(十一)

一、绘制基础图形 绘制直线: line(InputOutputArray img. Point pt1, Point pt2, const Scalar & color, int thickness 1,llineType int LINE_8, int shift 0pt1:直线起始点在图像中的坐标。 pt2:直线终点在图像中的坐标。 color:直线的颜色,…

《2023新一代数字办公白皮书》正式发布!| 爱分析报告

2023年5月12日,受北京市数字办公安全创新联合体委托,由自主可控新鲜事和爱分析联合撰写的《2023新一代数字办公白皮书》(以下简称《白皮书》)在“2023通明湖论坛 信创基础底座创新发展分论坛”上正式发布。 《白皮书》详细阐述了新…

box的符号距离函数

序 能用解析的方法算的,叫符号距离函数。只能数值解的,叫符号距离场。 它就是横平竖直的几个平面,点到平面的距离是很好算的。 初步认识 有个网页,可以玩一玩: About | Physics Simulation in Visual Computing (…

抖音seo源码开发,开源技术保姆式搭建

抖音seo源码优化逻辑 抖音SEO是通过一系列的技术手段和优化策略来提升视频内容在抖音平台内的曝光率和排名。其中主要包括以下几个方面: 1.关键词优化。通过对视频的标题、描述等元素的关键词进行优化,提高相关性和匹配度,让用户更容易搜索到…

文件权限属性八进制表示法,chmod(文件权限属性更改),chown,chgrp指令,默认/实际起始权限与umask权限掩码关系,文件删除与粘滞位问题等

文件权限属性的八进制表示法 这个其实非常简单,因为文件权限属性也就三种,也就是可读,可写或者可执行。然后对于这三种文件权限属性都是2元式的,要么行,要么不行,因此可以用0和1来表示,0表示没…

SAML协议— 理解SAML2 协议和联合身份验证流程

1、SAML协议概念 安全断言标记语言,简称SAML,是一个基于 XML 的开源标准数据格式,它在当事方之间交换身份验证和授权数据,尤其是在身份提供者和服务提供者之间交换。SAML解决的最主要的需求是基于Web的单点登录(SSO&a…

100 个 Go 错误以及如何避免:1~4

协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【OpenDocCN 饱和式翻译计划】,采用译后编辑(MTPE)流程来尽可能提升效率。 真相一旦入眼,你就再也无法视而不见。——《黑客帝国》 一、GO:学起来简单&…

再次比较以1为参照的6-3分布

( A, B )---1*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有1个节点,AB各由9张二值化的图片组成,让A中有3个0,6个1.B中全是1,排列组合A的所有可能,统计迭代次数的顺序。 得到数据 迭代次数平均值 A-B 迭代次数 F 9 …

5年经验还只会点点点,别等了,跳槽吧.....

随着工作年限的不断增长,感觉自己的技术水平与自己的工作年限严重不符。想跳槽出去换个新环境吧,又感觉自己的能力达不到心仪公司的标准,即使投了简历自己也没什么面试通知。就这样在原来的公司一天天的混日子,时间久了&#xff0…

「免费版Axure」原型设计工具!

Axure 是一款经典的原型设计工具,但需要下载电脑端软件使用,对新手要求较高,且在线协作效率低,使用成本较高。即时设计是一款免费在线原型设计工具,支持导入 Axure 文件进行二次布局、评审、演示和分享,让用…

GitLAB CI-CD入门

GitLab CI-CD入门 目录 1、GitLabCI/CD简介 GitLabCI/CD简介 GitLabCI/CD是GitLab内置的持续集成与持续部署系统 开源: CI/CD是开源GitLab社区版和专有GitLab企业版的一部分。(极狐)易于学习: 官方具有详细的学习操作文档。无缝集成: CI/CD…

操作系统原理大题

一、地址变换和求FAT表大小 某一页表内容自0~7依次为03; 07; 0B;11;1A;1D;20;22. 请计算页面大小为1K和4K时的逻辑地址134D对应的物理地址。 首先,将134D转换为二进制数为 0001001101001101 1k为2的10次方 从后往前占十位为 000100|1101001101 竖线前面的二进制转…