一、实时数仓分层规范

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命名规范:

  1. 原则:字段名尽量详细,易于理解
  2. 小写:表的字段名字要求采用小写
  3. 继续使用原业务系统字段:字段数据、意义没有改变时,原则上,可以使用原业务系统字段名字
  4. 英文字段名组成:[is]_[修饰词]+字段描述词+[后缀/度量]+[时间周期词],强烈建议保留后缀
  5. 中文名组成:[时间周期词]+[修饰词]+字段描述词+[度量]
  6. 必须以字母开头
  7. 字段名由字母、下划线、数字组成
  8. 字段英文名长度尽量控制在30个字符以内
  9. 表示是否的字段,用is_含义, 例如,deal是否可预订,is_apt、is_prepay等。
    业务含义是动词时,尽量不用使用其分词命名,如is_paid,应为is_pay
    定义:是(1)非(0)或 肯(1)否(0),存0、1
  10. 基础字段命名:用num, amt, cnt, id, type等简写做后缀,如”order_cnt”表示订单数量,“product_id”标示产品ID
  11. 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

二、实时数仓架构设计

  1. 阿里云技术产品及选型

    v 数据采集传输:EMSKafka、DataHub、LogHub、DTS

    v 数据存储:RDS、AnalyticDB、Hologres

    v 数据计算:FlinkSql、JavaFlink

    v 数据可视化:DataV

  2. 普通实时计算与实时数仓比较

    普通的实时计算优先考虑时效性,所以从数据源采集经过实时计算直接得到结果。如此做时效性更好,但是弊端是由于计算过程中的中间结果没有沉淀下来,所以当面对大量实时需求的时候,计算的复用性较差,开发成本随着需求增加直线上升。

    实时数仓基于一定的数据仓库理念,对数据处理流程进行规划、分层,目的是提高数据的复用性。

3.  系统架构设计

      4.业务流

重点思考:
问:FlinkSQL 是如何解决双流 Join 的问题,会不会出现时间错位而未关联的情况?

答:FlintkSQL 是一种有状态的流式计算,流中的数据会被以状态的形式保存起来,所

以即使两个流中的数据有一定的延迟,也可以利用状态关联出来。

问:这个状态保存多久?
答:阿里云中 FlinkSQL 的状态数据默认保存 36 个小时。

问:flink sql⾥⾯cdc模式读取mysql数据,两个cdc源进⾏join的时候,如果在⼀个窗⼝内等不到另⼀ 个的数据会怎么处理?会去全量读mysql数据吗?
答:如果等不到就为null了吧,不会mysql去读了,回先发null,等能关联上了再回撤null值下发关联上的值,这个和source是啥没关系,双流join的语义就是这样的。

阿里云实时数仓搭建与组件选型相关推荐

  1. 开放下载!《阿里云实时数仓Hologres最佳实践合集》

    简介:<阿里云原生实时数仓Hologres最佳实践合集>电子书将会首次拆解HSAP核心原理,并介绍其在阿里巴巴双11核心场景落地的最佳实践. 点击免费下载 <阿里云实时数仓Holog ...

  2. 阿里云实时数仓Hologres年度发布,解读数仓新趋势

    简介:阿里云实时数仓Hologres年度发布,解读数仓新趋势. 1月7日,阿里云实时数仓Hologres发布最新版本,在成本.可用性.在线高可用等多方面进行了能力升级,行存吞吐提升100%,列存吞吐提 ...

  3. 揭秘!阿里实时数仓分布式事务Scale Out设计

    简介: Hybrid Transaction Analytical Processing(HTAP) 是著名信息技术咨询与分析公司Gartner在2014年提出的一个新的数据库系统定义,特指一类兼具O ...

  4. 从阿里核心场景看实时数仓的发展趋势

    简介:随着2021年双11的完美落幕,实时数仓技术在阿里双11场景也经历了多年的实践和发展.从早期的基于不同作业的烟囱式开发,到基于领域分层建模的数仓引入,再到分析服务一体化的新型融合式一站式架构,开 ...

  5. 阿里云实时大数据解决方案,助力企业实时分析与决策

    性能高1倍,价格低3/4!数据库实时同步新选择! 实时分析决策的第一步就需要将数据实时同步到大数据计算引擎,DataWorks数据集成采用自研高性能引擎,在相同的机器规格情况下,RDS实时同步性能最高 ...

  6. 数据运营时代,如何基于AnalyticDB构建企业实时数仓?

    摘要:万事万物每时每刻都在产生大量的数据,数据无处不在,数据化运营在今天的物流.零售.电商.金融等等行业中都有诸多成功的实践,但是如何降低企业大数据的建设门槛,使得大数据分析成为一种人人都可以获得的普 ...

  7. 我翻遍全网资源,找到了18份阿里内部Java技术教程,我打赌你都没见过(含大数据实时数仓技术)

    2017年阿里就面向全球发布了<阿里巴巴Java开发规约>,这一规约集合了众多中国工程师的智慧与经验,帮助全球开发者实现了更为高效.更加容错.更有协作性的Java开发.目前这一规约已经成为 ...

  8. 看这篇就明白大数据实时数仓、离线数仓、数据湖之间的关系

    数仓架构演变 20世纪70年代,MIT(麻省理工)的研究员致力于研究一种优化的技术架构,该架构试图将业务处理系统和分析系统分开,即将业务处理和分析处理分为不同层次,针对各自的特点采取不同的架构设计原则 ...

  9. 基于亚马逊云科技 Serverless架构的实时数仓架构

    近年来,各级政府和企业响应数字化转型的号召,都已开始或者即将开始数字化转型.各类企业通过前期的业务线上化.信息化,积累了大量数据,而数字化转型就是要聚合这些数据,进行深入挖掘分析,用数据来驱动业务,用 ...

最新文章

  1. 如何用计算机玩我的世界,怎样在电脑上玩《我的世界》
  2. 【Android RTMP】音频数据采集编码 ( 音频数据采集编码 | AAC 高级音频编码 | FAAC 编码器 | Ubuntu 交叉编译 FAAC 编码器 )
  3. 特斯拉员工入职3天就“偷”代码,悄悄备份6300多Python脚本
  4. Java 整数型的进制间的互相转换
  5. Linux中进行用户UID测试导致系统报错
  6. angular5 接口跨域请求配置
  7. MySQL 基础 ———— 分组查询
  8. Oralce EBS Alert
  9. 快速掌握 JavaScript 库必备的 5 大技巧!
  10. Atitit 健康减肥与软件健康减肥的总结 attilax著 1. 几大最佳实践减肥行为 1 1.1. 控制饮食分量用小碗 小盘子 小餐具 1 1.2. 软件如何减肥,控制资源占有率,比如体积 打包
  11. java图片上写字不见了_用java在图片上写字
  12. SQL 数据库基础知识
  13. ir2104s的自举电容_一文看懂ir2110自举电容的选择 - 全文
  14. logmein攻防世界wp
  15. ghost服务器系统镜像文件,带RAID服务器能GHOST备份吗?
  16. 《炬丰科技-半导体工艺》通过蚀刻技术为LED衬底开发低成本、高通量的硅
  17. Xcode8/iOS10 升级后遇到的问题小结
  18. 网络系统实现技术--AppleTalk
  19. 杰伦的《不能说的秘密》の细节 (详解)
  20. JavaWeb学习-案例练习-图书管理后台-5- 完成图书删除功能

热门文章

  1. linux磁盘分区、挂盘
  2. go环境搭建开发工具安装配置
  3. 论文 | 图理论 | 2021年斯坦福大学Jiaxuan You博士论文《用图赋能深度学习》译读 摘要和感谢
  4. simulink实现他励直流电动机串电阻调速仿真
  5. 洛谷P2791 幼儿园篮球题
  6. 二维码支付码的工作原理那点事
  7. 全民小视频逆势崛起:短视频的“小趋势”与“信用飞轮”
  8. 关于windows11的0x800f0950语言包安装失败
  9. 软件著作权申请流程及注意事项,你知道多少?
  10. WIN10 注册.dll regsvr32.exe错误 VC6添加插件