当前位置: 首页 > news >正文

云计算之大数据(下)

目录

一、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 最佳实践总结

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版本开始支持行列共存的格式。行列共存是同时具备了上述的能力,即支持高效点查也支持OLAP分析,
http://www.lryc.cn/news/432539.html

相关文章:

  • 硬件工程师笔试面试知识器件篇——二极管
  • 操作系统安全保护
  • STM32硬件篇:W25Q64
  • uni-app 获取当前位置的经纬度以及地址信息
  • 【CSS】尺寸单位
  • Agent(智能体)和 MetaGPT,一句话实现整个需求应用代码
  • [数据结构] 哈希结构的哈希冲突解决哈希冲突
  • Wimdows使用Appium IOS自动化
  • C语言深度剖析--不定期更新的第四弹
  • 【手撕数据结构】八大排序神功(上)
  • 【2024高教社杯全国大学生数学建模竞赛】B题模型建立求解
  • OpenHarmony鸿蒙开发( Beta5.0)智能手表应用开发实践
  • 共享单车轨迹数据分析:以厦门市共享单车数据为例(一)
  • SprinBoot+Vue在线商城微信小程序的设计与实现
  • 4--SpringBootWeb-请求响应
  • 电脑点击关机之后,又自动重启开机了。根本就关不了?
  • 强化网络安全:通过802.1X协议保障远程接入设备安全认证
  • 链动2+1模式AI智能名片S2B2C商城小程序源码在社群商业价值构建中的应用探索
  • 基于SpringBoot+Vue+MySQL的校园周边美食探索及分享平台
  • “设计模式双剑合璧:工厂模式与策略模式在支付系统中的完美结合”
  • 第二百一十九节 JPA 教程 - JPA 字段映射示例
  • 目标检测-YOLOv6
  • Java面向对象与多态
  • redis分布式锁和lua脚本
  • 项目实战 ---- 商用落地视频搜索系统(5)---service层核心
  • Win32远线程注入
  • CTF 竞赛密码学方向学习路径规划
  • 2024数学建模国赛B题代码
  • PyTorch 卷积层详解
  • 【Kubernetes知识点问答题】kubernetes 控制器