阿里云实时数仓搭建与组件选型
一、实时数仓分层规范
1.1 分层需求分析
建设实时数仓的目的,主要是增加数据计算的复用性。每次新增加统计需求时,不至于从原始数据进行计算,而是从半成品继续加工而成。
我们这里从 loghub、kafka 的 ods 层读取用户行为日志以及业务数据,并进行简单处理,写回到 kafka、hologres 作为 dwd 层。
1.2每层的职能
分层 |
数据描述 |
生成计算工具 |
存储媒介 |
ODS |
原始数据,日志和业务数据 |
Kafka LogHub |
|
DWD |
根据数据对象为单位进行分流,比如订单、页 面访问等等。 |
FLINK |
Kafka Hologres |
DIM |
维度数据 |
FLINK |
Kafka Hologres |
DWS |
根据某个维度主题将多个事实数据轻度聚合, 形成主题宽表。 |
FLINK |
Kafka Hologres |
DM |
把 Kafka Hologres中的数据根据可视化需要进行筛选聚合。 |
FLINK |
可视化展示 |
v ODS (LogHub、kafka、DataHub)
原始数据,日志和业务数据
v DWD(kafka、Hologres)
根据数据对象为单位进行分流,比如订单、页面访问等等
v DIM(Hologres)
维度数据
v DWS (kafka、Hologres)
根据某个主题将多个事实数据轻度聚合,形成主题宽表。
v ADS (Hologres)
把 Hologres中的数据根据可视化需要进行筛选聚合
1.3分层命名规范
对数据架构各个分层的数据管理,需要建设相应的数据库。阿里云采用一个项目空间管理,分库按照表名前缀进行逻辑划分。
注:[]:可选项,可以省略
- 源数据层(ODS)的命名规范如下:
分层 |
数据模型命名 |
命名规范 |
开发目录 LogHub、Kafka、hologres |
备注 |
---|---|---|---|---|
源数据层(ODS) | ods_kafka/sls/cdc+_+…… |
日志表:soyoung_dw.ods_sls/kafka+_+数据来源名|主题名+_+ 自定义表名+_+(周期后缀) |
LogHub、Kafka | 案例:ods_sls_md_xcx_axm_log_rt |
- 数据仓库层(DW)的命名规范如下:
分层 |
数据模型命名 |
命名规范 |
实时开发目录 |
备注 |
---|---|---|---|---|
明细数据层(DWD) | dwd+_+…… | dwd_数据输出源_{主题域名[_二级主题名]}_{自定义表名}_{周期后缀} | 阿里云实时计算Flink平台 | 案例:dwd_md_xcx_axm_log_rt |
汇总数据层(DWS) | dws+_+…… | dws_数据输出源_{主题域名[_二级主题名]}_{自定义表名}_[summary|topic]_{周期后缀} | 阿里云实时计算Flink平台 |
summary:按照多维度聚合 topic:按照1个维度聚合 案例:dws_md_xcx_axm_log_rt |
维度数据层(DIM) | dim+_+…… | dim_{维度名}_{info}_{周期后缀} | 阿里云实时计算Flink平台 | dim_{维度名}_{info}_{周期后缀} |
- 数据集市层(DM)的命名规范如下:
分层 |
数据模型命名 |
命名规范 |
DataWorks开发目录 |
备注 |
---|---|---|---|---|
集市层(DM) |
dm_+_+……(平台组) dm_saas+_+……(商家组) dm_business+_+……(交易组) dm_content+_+……(内容组) |
阿里云实时计算Flink平台/dm/…… 阿里云实时计算Flink平台/dm/dm_saas/…… 阿里云实时计算Flink平台/dm/dm_business/…… 阿里云实时计算Flink平台/dm/dm_content/…… |
soyoung_dw.dm_{主题域名[_二级主题名]|专题}_{自定义表名}_{周期后缀} |
- 临时表(tmp)与视图命(view)命名规范如下:
分层 |
数据模型命名 |
命名规范 |
DataWorks开发目录 |
备注 |
---|---|---|---|---|
临时表 |
作业中:表名后统一加"_tmp[_01]" 临时需求:tmp_…… |
阿里云实时计算Flink平台 |
临时表不定期清理:drop或删数据 |
|
视图 | 表名后统一加"_view" | 阿里云实时计算Flink平台 | 应用场景kylin数据表等 |
1.4表命名规范
1.4.1整体原则
- 表名字要求采用小写
- 作业名同表名一致
- 周期后缀:标识增全量、调度周期:
周期后缀标识 (增全量、调度周期) |
解释 |
---|---|
_rt | 实时增量 |
"_all_rt" | 实时全量 |
1.5字段规范
1.5.1命名规范:
- 原则:字段名尽量详细,易于理解
- 小写:表的字段名字要求采用小写
- 继续使用原业务系统字段:字段数据、意义没有改变时,原则上,可以使用原业务系统字段名字
- 英文字段名组成:[is]_[修饰词]+字段描述词+[后缀/度量]+[时间周期词],强烈建议保留后缀
- 中文名组成:[时间周期词]+[修饰词]+字段描述词+[度量]
- 必须以字母开头
- 字段名由字母、下划线、数字组成
- 字段英文名长度尽量控制在30个字符以内
- 表示是否的字段,用is_含义, 例如,deal是否可预订,is_apt、is_prepay等。
业务含义是动词时,尽量不用使用其分词命名,如is_paid,应为is_pay
定义:是(1)非(0)或 肯(1)否(0),存0、1 - 基础字段命名:用num, amt, cnt, id, type等简写做后缀,如”order_cnt”表示订单数量,“product_id”标示产品ID
- DW内部:相同含义的字段名称、数据类型在正常情况下须保持一致,减少使用过程中的混淆,避免造成数据流转时不能被抽取或数据截断情况
1.5.2分区字段命名规范
- 时间分区命名:
分区名统一命名为dp,格式统一要求(ods_db前缀的表分区名pt,由于阿里产品原因):
分区类型 |
分区名及格式 |
备注 |
---|---|---|
日分区 | dp=yyyy-mm-dd | |
月分区 | dp=yyyy-mm | |
小时分区 | hh=00..23 | 第一个小时00,最后小时23 |
分钟分区 | hhmm=0000..2350 | 10分钟举例 |
1.5.3字段类型
- 字段类型只使用以下几种:
int 数量、次数、人数等整数字段
bigint 数量、次数、人数等整数字段
double 金额、比率等小数字段
string 订单编号、SKU编号、描述类信息、日期等字符字段
- 不使用比int小的数字类型
- 不使用unsigned
二、实时数仓架构设计
阿里云技术产品及选型
v 数据采集传输:EMSKafka、DataHub、LogHub、DTS
v 数据存储:RDS、AnalyticDB、Hologres
v 数据计算:FlinkSql、JavaFlink
v 数据可视化:DataV
- 普通实时计算与实时数仓比较
普通的实时计算优先考虑时效性,所以从数据源采集经过实时计算直接得到结果。如此做时效性更好,但是弊端是由于计算过程中的中间结果没有沉淀下来,所以当面对大量实时需求的时候,计算的复用性较差,开发成本随着需求增加直线上升。
实时数仓基于一定的数据仓库理念,对数据处理流程进行规划、分层,目的是提高数据的复用性。
3. 系统架构设计
4.业务流
重点思考:
问:FlinkSQL 是如何解决双流 Join 的问题,会不会出现时间错位而未关联的情况?
答:FlintkSQL 是一种有状态的流式计算,流中的数据会被以状态的形式保存起来,所
以即使两个流中的数据有一定的延迟,也可以利用状态关联出来。
问:这个状态保存多久?
答:阿里云中 FlinkSQL 的状态数据默认保存 36 个小时。
阿里云实时数仓搭建与组件选型相关推荐
- 开放下载!《阿里云实时数仓Hologres最佳实践合集》
简介:<阿里云原生实时数仓Hologres最佳实践合集>电子书将会首次拆解HSAP核心原理,并介绍其在阿里巴巴双11核心场景落地的最佳实践. 点击免费下载 <阿里云实时数仓Holog ...
- 阿里云实时数仓Hologres年度发布,解读数仓新趋势
简介:阿里云实时数仓Hologres年度发布,解读数仓新趋势. 1月7日,阿里云实时数仓Hologres发布最新版本,在成本.可用性.在线高可用等多方面进行了能力升级,行存吞吐提升100%,列存吞吐提 ...
- 揭秘!阿里实时数仓分布式事务Scale Out设计
简介: Hybrid Transaction Analytical Processing(HTAP) 是著名信息技术咨询与分析公司Gartner在2014年提出的一个新的数据库系统定义,特指一类兼具O ...
- 从阿里核心场景看实时数仓的发展趋势
简介:随着2021年双11的完美落幕,实时数仓技术在阿里双11场景也经历了多年的实践和发展.从早期的基于不同作业的烟囱式开发,到基于领域分层建模的数仓引入,再到分析服务一体化的新型融合式一站式架构,开 ...
- 阿里云实时大数据解决方案,助力企业实时分析与决策
性能高1倍,价格低3/4!数据库实时同步新选择! 实时分析决策的第一步就需要将数据实时同步到大数据计算引擎,DataWorks数据集成采用自研高性能引擎,在相同的机器规格情况下,RDS实时同步性能最高 ...
- 数据运营时代,如何基于AnalyticDB构建企业实时数仓?
摘要:万事万物每时每刻都在产生大量的数据,数据无处不在,数据化运营在今天的物流.零售.电商.金融等等行业中都有诸多成功的实践,但是如何降低企业大数据的建设门槛,使得大数据分析成为一种人人都可以获得的普 ...
- 我翻遍全网资源,找到了18份阿里内部Java技术教程,我打赌你都没见过(含大数据实时数仓技术)
2017年阿里就面向全球发布了<阿里巴巴Java开发规约>,这一规约集合了众多中国工程师的智慧与经验,帮助全球开发者实现了更为高效.更加容错.更有协作性的Java开发.目前这一规约已经成为 ...
- 看这篇就明白大数据实时数仓、离线数仓、数据湖之间的关系
数仓架构演变 20世纪70年代,MIT(麻省理工)的研究员致力于研究一种优化的技术架构,该架构试图将业务处理系统和分析系统分开,即将业务处理和分析处理分为不同层次,针对各自的特点采取不同的架构设计原则 ...
- 基于亚马逊云科技 Serverless架构的实时数仓架构
近年来,各级政府和企业响应数字化转型的号召,都已开始或者即将开始数字化转型.各类企业通过前期的业务线上化.信息化,积累了大量数据,而数字化转型就是要聚合这些数据,进行深入挖掘分析,用数据来驱动业务,用 ...
最新文章
- 如何用计算机玩我的世界,怎样在电脑上玩《我的世界》
- 【Android RTMP】音频数据采集编码 ( 音频数据采集编码 | AAC 高级音频编码 | FAAC 编码器 | Ubuntu 交叉编译 FAAC 编码器 )
- 特斯拉员工入职3天就“偷”代码,悄悄备份6300多Python脚本
- Java 整数型的进制间的互相转换
- Linux中进行用户UID测试导致系统报错
- angular5 接口跨域请求配置
- MySQL 基础 ———— 分组查询
- Oralce EBS Alert
- 快速掌握 JavaScript 库必备的 5 大技巧!
- Atitit 健康减肥与软件健康减肥的总结 attilax著 1. 几大最佳实践减肥行为	1 1.1. 控制饮食分量用小碗 小盘子 小餐具	1 1.2. 软件如何减肥,控制资源占有率,比如体积 打包
- java图片上写字不见了_用java在图片上写字
- SQL 数据库基础知识
- ir2104s的自举电容_一文看懂ir2110自举电容的选择 - 全文
- logmein攻防世界wp
- ghost服务器系统镜像文件,带RAID服务器能GHOST备份吗?
- 《炬丰科技-半导体工艺》通过蚀刻技术为LED衬底开发低成本、高通量的硅
- Xcode8/iOS10 升级后遇到的问题小结
- 网络系统实现技术--AppleTalk
- 杰伦的《不能说的秘密》の细节 (详解)
- JavaWeb学习-案例练习-图书管理后台-5- 完成图书删除功能
热门文章
- linux磁盘分区、挂盘
- go环境搭建开发工具安装配置
- 论文 | 图理论 | 2021年斯坦福大学Jiaxuan You博士论文《用图赋能深度学习》译读 摘要和感谢
- simulink实现他励直流电动机串电阻调速仿真
- 洛谷P2791 幼儿园篮球题
- 二维码支付码的工作原理那点事
- 全民小视频逆势崛起:短视频的“小趋势”与“信用飞轮”
- 关于windows11的0x800f0950语言包安装失败
- 软件著作权申请流程及注意事项,你知道多少?
- WIN10 注册.dll regsvr32.exe错误 VC6添加插件