云盘算之大数据(下)

[复制链接]
发表于 2026-1-26 05:31:40 | 显示全部楼层 |阅读模式
目次

一、Hologres
1.1 产物界说
1.2 产物架构
1.3 Hologres根本概念
1.4 最佳实践 - Hologres分区表
1.5 最佳实践 - 分区字段设置
1.6 最佳实践 - 设置字段范例
1.7 最佳实践 - 存储属性设置
1.8 最佳实践 - 分布键设置
1.9 最佳实践 - 聚簇键设置
1.10 最佳实践 - 分段键设置
1.11 最佳实践 - 数据生命周期管理
1.12 最佳实践总结
二、Flink
2.1 产物界说
2.2 Flink架构
2.3 技能架构
2.4 功能架构
2.5 Flink任务主动调优
2.6 最佳实践 - Flink+Hologress及时数仓
2.7 最佳实践 - Flink任务反压
2.8 最佳实践 - Flink任务数据正确性标题处置惩罚
2.8.1 场景一:去重
2.8.2 场景二:filter
2.8.3 场景三:结果表主键Update结果不符合预期
2.8.4 场景四:维表JOIN
总结


一、Hologres

1.1 产物界说

         阿里云Hologres是一款及时数仓产物,它融合了OLAP和OLTP的本领,可以大概支持用户举行及时的分析处置惩罚。
1.2 产物架构



      
  • Frontend:认证、分析、优化  
  • Worker Node:盘算资源  
  • HOS:轻量级调理框架  
  • Shard:数据分片  
  • Cache:分层风雅化缓存  
  • Resource:容器资源管理  
  • Store:元数据管理  
1.3 Hologres根本概念

名词
界说
实例
在Hologres中,实例(Instance)是您使用和管理数据库存储服务的实体,一个实例可以看作是多个数据库的合集,您对数据库的利用都是在该实例下完成。
数据库
一个模式的合集,用户全部的利用,包罗表、函数等都是在数据库里完成。体系会在用户完成实例申请后默认创建一个“postgres”的数据库,该DB仅用于运维管理,实际业务必要新建DB
SCHEMA
schema为数据库对象的聚集,类似一个文件体系中的目次,实例内的对象如表、函数等都存放于各个schema下,创建数据库乐成后,会默认创建一个名叫public的schema

表是数据存储单元,分为内部表和外部表
内部表
指数据存储在Hologres中的表,表中的数据范例可以是Hologres支持的恣意一种范例。
外部表
指在Hologres不存储数据只做字段映射的表,外部数据表都是只读的,因此在外部表不可以大概实验DML利用,也不能创建索引
分区表
被分割的表称为分区表,表通过明白列出每个分区中出现的键值举行分区,可以明白为分类,通太过类把差别范例的数据放在差别目次。
1.4 最佳实践 - Hologres分区表


      
  • 父表按分区键(Partition Key)的值分别为差别的子表,子表对外可见。  
  • 分区表在使用时,必要提前创建子表。  
  • 分区表的差别分区子表接纳差别的文件存储,查询时带上分区条件,指定所需查询的分区,制止全表扫描,快速定位存储文件,进步处置惩罚服从。通常将毕竟表按照日期分别为差别的分区表。

1.5 最佳实践 - 分区字段设置

使用发起:

      
  • 单表的数据总量较⼤(高出1亿条)时,就必要思量使用分区表  
  • 子表下的数据量要适中,通常在3亿~ 10亿条纪录之间  
  • 整个集群的子表总数控制在10万个以内  
  • 如果您必要常常对某日数据举行团体更换,实验truncate利用,发起使用分区表
使用分析:

      
  • 分区表的创建依然兼容Postgres语法,分区表方便用户管理数据,并能通太过区裁剪加快数据的查找。  
  • 不能向父表插入任何数据。  
  • 只有 TEXT/VARCHAR/INT 范例才气作为分区键。如果按天/小时分区要把日期存为TEXT格式。  
  • partition by 范例仅支持 list,切分 partition list 只能有一个值。  
  • 分区父表和子表必须要在同一个Schema。  
  • 如果表有主键,分区键必须是主键的一个子集。  
  • 分区表的数据不会主动删除,必要用户本身管理生命周期。  
  • 分区表太小,查询加快结果不显着,可以选择较大粒度的分区。
1.6 最佳实践 - 设置字段范例


      
  • 只管选用存储空间小的范例。  
  • 优先使用INT范例,而不是BIGINT范例。  
  • DECIMAL的精度只管小。  
  • Group By的列不发起使用Float范例。  
  • 优先使用TEXT,而不是VARCHAR(n)和CHAR(n),n的取值只管小。  
  • 日期范例使用TIMESTAMPTZ、DATE,制止使用TEXT。  
  • 使用同等的数据范例。  
  • 举行多表关联时,差别列只管使用类似的数据范例。制止Hologres将差别范例的枚举行隐示范例转换,造成额外的开销。  
  • UNION或Group By等利用使用DECIMAL范例。  
  • UNION或Group By等利用暂不支持DOUBLE PRECISION和FLOAT数据范例,必要使用DECIMAL范例。
1.7 最佳实践 - 存储属性设置


      
  • 在Hologres中表默以为列存(column store)情势。列存对于OLAP场景较为友好,得当各种复杂查询、数据关联、扫描、过滤、统计。  
  • 行存对于key-value场景比力友好,得当基于primary key的点查和扫描scan。  
  • 列存会默认创建更多的索引,包罗对字符串范例创建bitmap索引,这些索引可以显着加快查询过滤和统计,因此列比力多的表,会占用更多的存储空间,您可以通过关闭这些默认创建的索引,开释空间。  
  • 行存默认仅对主键创建索引,仅支持主键的快速查询,因此使用的存储空间更少,但使用场景也受到限定。  
  • 从HologresV1.1版本开始支持行列共存的格式。行列共存是同时具备了上述的本领,即支持高

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表