一、阿里云数据引擎发展
核心产品:maxcompute(ODPS)、AnalyticDB、Hologres
maxcompute:偏离线
AnalyticDB、Hologres:实时
blink、flink:流式
都是列存储
对大型企业通常 maxcompute+Hologres、或者 maxcompute+AnalyticDB,maxcompute处理非结构化数据,结构化后存储到AnalyticDB、Hologres 提供进一步的实时分析
对小型应用,可以把mysql数据直接导入AnalyticDB 或者 Hologres,提供实时分析
二、最佳实践
三、案例
核心引擎
MaxCompute
阿里离线数据计算平台(离线数仓)
原名ODPS,阿里巴巴自主研发的海量数据处理平台
MaxCompute处理存储在Table Store的数据(不负责收集数据到Table Store中),
使用Fluentd服务(类似的服务还有kafka、LogHub、DataX等,都大同小异,这里我用Fluentd作描述只是方便),通过Fluentd我们轻松的创建任务去按时读取各台服务器上的日志文件。简单点说就是你只需要配置服务器上日志的路径,Fluentd就帮你把日志存储到MaxCompute的Table Store中,然后你就能愉快的通过MaxCompute分析数据了。
习惯称MaxCompute 的Table Store的实例为 MaxCompute table(表)
MaxCompute Table只支持添加数据,不支持删除与修改数据。
分区信息可以创建很多个,但是在导入、导出、某些特殊查询时要带上完整的分区名称,不支持前缀等模糊匹配
Java的编程接口M和axCompute客户端命令都可以完成本地文件导入MaxCompute存储:(引用 阿里云大数据分析师ACP认证21--阿里云大数据平台MaxCompute简介_哔哩哔哩_bilibili)
实时增量数据通道(DataHub)支持MaxCompute实时增量数据的导入
MaxCompute支持的计算及分析任务的方式:SQL、UDF、Graph、MapReduce、Spark On MaxCompute(这些方式都是操作表)。
MaxCompute数据的组织方式:Project项目空间、Table表、Partition分区
MaxCompute表分内表和外部,外表不是自身存储的表(比如可以管理的oss数据等,只是存有对应的元数据信息,相当于外部介质存储表的一个link)
MaxCompute可以对哪些外部数据源创建外表呢?(这情况获取可以直接离线使用数据,不需要同步过来了)
MaxCompute单表分区层级最多6级;单表最多分区数上限6万;单次查询使用分区上限1万;分区字段不能是中文;
MaxCompute生命周期:CirleLife,只能表级别设定生命周期,不能设置分区级别的。但是回收是按照分区执行。
E-MapReduce
开源离线大数据计算平台,EMR 存储对应的是Hive
Hologres
Hologres是阿里云计算平台事业部出品
交互式分析,实时数仓,融合了实时服务和分析大数据的场景
隶属于MaxCompute产品,支持MaxCompute加速,实现MaxCompute实时服务和分析大数据
Hologres 可以加速OSS
Hologres自研存储引擎Storage Engine(SE)
Hologres是阿里云自研开发的HSAP(Hybrid Serving/Analytical Processing)服务/分析一体化系统 ,融合了实时服务和分析大数据的场景,全面兼容PostgreSQL协议并与大数据生态无缝打通。
Hologres 又一说法是 MaxCompute BI加速版
支持行存储(关系型)和列存储两种存储模式(即可支持OLTP 和OLAP两种),格式可以通过“orientation"来指定。
数据存储在阿里云分布式文件系统pangu中(类比开源HDFS)
Hologres作为实时数仓存储成本大约是ADB的1/3。资源灵活性高,可以像MaxCompute一样灵活的升降配置
GraphCompute
图形计算
ElasticSearch
搜索引擎+数据分析引擎
AnalyticDB for MySQL(简称ADB)
AnalyticDB是阿里云自主研发的一款实时分析数据库
AnalyticDB是在线的分布式数据库,所以多了弹性计算单元(Elastic compute units简写ECU)、表组和分区的概念。
MySQL的数据库是由表组成的,而AnalyticDB的数据库是由ECU组成。
AnalyticDB的表又分为维度表和普通表,维度表指带有维度概念的表,可以和任何普通表进行关联;普通表指分区表,针对分布式系统查询而设计的表。
聚集列:AnalyticDB中,数据存储支持按一列或多列进行排序(先按第一列排序,第一列相同情况下使用第二列排序),以保证该列中值相同或相近的数据保存在磁盘同一位置,这样的列我们称之为聚集列。
ADB支持:把数据存储在不同层级,并能够自动在层级间迁移数据的分层存储技术。
ADB控制冷热数据的操作方法:在用户建表时指定存储策略(storage_policy)来精确关联业务上的冷热数据和分层存储中的冷热存储
ADB冷数据存放在HDD(OSS),热数据放在SSD;冷数据可以使用 SSD Cache加速
Hologres 和Maxcompute 关系
Maxcompute 适合存放:ODS、DW层数据
Hologress 适合存放 ADS层数据
一套生态体系,冷热数据分层存储(Hologres+MaxCompute)
AnalyticDB和Hologress关系
ADB是阿里云数据库事业部团队提供的云原生数据仓库AnalyticDB MySQL版
Hologres是阿里云计算平台事业部出品
一款是AnalyticDB for MySQL,一款是Hologres。ADB是阿里云数据库事业部团队提供的云原生数据仓库AnalyticDB MySQL版,是阿里巴巴自主研发的海量数据实时高并发在线分析云计算服务。Hologres是阿里云计算平台事业部提供的一款全面兼容PostgreSQL协议并与大数据生态无缝打通的实时交互式分析产品。从实际业务场景出发,两者的主要区别有以下几点:
1)与MaxCompute的打通性
Hologres:与MaxCompute打通,可以直接通过外部表读取MaxCompute数据进行查询分析,无需存储就能查询。
ADB:能加速查询MaxCompute,提供复杂交互式分析、实时混合数据仓库等多种场景。
2)成本方面
从我们每年ADB和Hologres的的单价上对比,Hologres成本相比ADB略微低。
3)灵活度
均能满足OLAP场景,Hologres兼容兼容PostgreSQL生态,ADB坚兼容MySQL协议,均能满足实时和离线批量的数据导入和分析。
4)性能
以下是Hologers的测试性能,数据量和大小均以MaxCompute的存储格式为准,没有进行一些特殊的索引和优化处理。
| 数据量 | 测试项 | 响应时间
| 4600W(20.64GB) | SUM | 2.7s
| 2300W(5.04GB) | SUM | 1.1
| 4600W(20.64GB) | COUNT | 2.5s
| 2300W(5.04GB) | COUNT | 1.0s
| 4600W(5.04GB) | COUNT(distinct) | 2.8s
| 2300W(5.04GB) | COUNT(distinct) | 1.6s
| 4600W(20.64GB) | AVG | 1.7s
| 2300W(5.04GB) | AVG | 0.9s
| 4600W(20.64GB) | ROW_NUMBER | 2.6s
————————————————
https://blog.csdn.net/weixin_43970890/article/details/109384113
背景知识
数据仓库
1 数仓三层架构
(牺牲空间换取计算时间,冗余)
1) ODS(运营数据层、贴源层)
2) 数据仓库层[中间层](DWD、DWS)
3) ADS(数据应用层ES等数据)
2 数仓四层架构
ODS=>DWM(DWD/DWS)=>TDM=>ADM
将数据分为ODS(原始数据)层、中间数据层 (DWD/ DWS)、TDM(标签数据)层、ADM(应用数据集市)层。
ODS(原始数据)层
业务流程数据,与业务系统基本保持一致,仅做简单整合、非结构化数据 结构化处理或者增加标识数据日期描述信息,不建议做深度清洗加工。
DWD(明细数据)层
全历史业务过程数据,按照业务的易理解的视角重新组织,核心是标准、 统一,可以还原历史任何时刻的业务状态,建模的关键层。
TDM(标签数据)层
面向对象,把跨业务板块、跨数据域的特定对象数据进行整合,形成对 象的全域标签体系,方便深度的分析、挖掘、应用,与数据集市建设方 法类似,特点是有大量算法标签。大数据魅力在这一层体现。
个人理解:就是发掘出特征的数据
ADM(应用数据集市)层
数据集市层,面向应用,根据应用的需要组织数据,一般是使用维度建 模方法,有时会因为业务的特殊诉求违反建模规范。
2 数据仓库和数据库的区别
数据库操作: OLTP
数仓的操作:OLAP
比较项 操作型(OLTP) 分析性(OLAP)
关注 细节 综合或提炼
模型 实体 – 关系(E-R) 星型或雪花
操作 可更新 只读,只追加
操作粒度 操作一个单元 操作一个集合
场景 面向事务 面向分析
数据量 小 大
需求 日常操作 决策需求
业务方向 客户信息、订单等查询 客户登录间隔时间,市场细分等
DW模型大类:动态模型、事件模型和时序模型
每种模型都会对应不同的存储。
动态模型:对实时的数据进行汇总统计,适合做实时的统计指标分析,比如实时的业务办理量,一般可存储于Kafka和Hbase。
事件模型:把实时的数据抽象成一系列业务事件,比如从位置日志轨迹中记录用户的位置变更事件,从而可以触发LBS的位置营销,以下是典型的位置事件模型设计,一般可存储于MQ和Redis:
时序模型:主要保存用户的在线的时空位置等信息,可以基于业务场景需要进行各种快速的计算,比如非常方便的计算驻留时长,存储于Hbase或TSDB(时序数据库)
数据模型三个领域:
B域(业务域)=business support system的数据域
O域(运营域)=operation support system的数据域
M域(管理域)=management support system的数据域
对中台概念的理解
数据中台:
1)即不是一个平台,也不是一个系统。
2)可以先把中台看作是一种中间层。是聚合和治理跨域数据,将数据抽象封装成服务,提供给前台以业务价值的逻辑概念
目标:数据中台的出现,就是为了弥补数据开发和应用开发之间,由于开发速度不匹配,出现的响应力跟不上的问题。
主要解决问题
1 效率:支持快速数据应用开发(比如可以快速开发个报表应用),大数据实时分析,数据血缘回溯快捷
2 协作:当业务应用开发的时候,虽然和别的项目需求大致差不多,但因为是别的项目组维护的,所以数据还是要自己再开发一遍。
3 能力:数据的处理和维护是一个相对独立的技术,缺少专业数据处理专家
Data API
1)数据中台的核心,它是连接前台和后台的桥梁,通过 API 的方式提供数据服务,而不是直接把数据库给前台。
2) 至于产生 DataAPI 的过程,怎么样让 DataAPI 产生得更快,怎么样让 DATA API 更加清晰,怎么样让 DATA API 的数据质量更好,这些是要围绕数据中台去构建的能力。
阿里数据中台的三大体系
阿里云上数据中台内核能力框架体系:产品+技术+方法论。
OneService:统一服务 复用而非数据复制
OneData:统一数据化建设 & 统一数据化标准,数据资产化管理能力
OneEntity:统一实体(企业、商品、设备等)连接识别与标签画像提高生产能力
OneData=>OneService
OneEntity=>OneService
OneData=>OneEntity
数据中台技术领域
数据模型领域、存储治理领域、数据质量领域、安全权限领域、平台运维领域、研发工程领域