全量、增量、流水、拉链、快照、代理键、缓慢变化维...

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 全量、增量、流水、拉链、快照、代理键、缓慢变化维...

这是我的第68篇原创

今天是一篇很枯燥的数据仓库名词和使用场景的解释。适合对数仓感兴趣的同学食用。


数仓建设的时候,我们会有非常多的名词,很多数据分析师经常接触数仓,但又不太了解,往往会被数仓工程师的一堆名字给打晕了。别怕,有我在!


今天给你把这些名词都给解释清楚:全量表、增量表、流水表、拉链表、快照表、代理键、业务主键、自增主键、维度、缓慢变化维、分区、分桶、分表、分库、位图、颗粒度。


上面都是常用的一些名词,我们把他们分个类:


表相关名词解释

表的设计模式:分区、分桶、分表、分库。


我们知道一张表中的数据超过一定数量之后,查询的速度会变慢,MySQL大概是2000W左右。但是业务数据不断累积,超过这个限制怎么办?


在结构化数据库中,采用的方法就是表分区。将一个表按照某个规则(比如按年,或者hash散列等),将大量存储在不同的分区中,起到分而治之的效果。对A表进行分区,A表仍然是一张表,但是不同年份的数据会存在不同的物理文件中,查询时我们只需要查找对应的某个分区表即可,速度可以得到保障。但是分区表有一些弊端,比如只能横向分,对主键和索引有要求等。优点是仍然是一张表,对使用非常友好。


所以我们会有其他的方法,比如分表。分表有两种分法:1、把一张大表进行纵向切割,分成若干个小表,适合很多列的表;2、把一张大表进行横向切分,分成若干个小表,适合数据量特别巨大的表。在大型互联网公司,一般横向直接切成1024个小表。分表的扩展性非常好,隔离性也很好。但是一张表会分出N张表,对使用很不友好。


如果一个数据库中的数据表很多,每张表的数据也非常多,那咋弄?除了分表,那就是分库了。我们把关系相近的表归好类,形成若干个表的集合。每个关系比较紧密的表的集合放在一个数据库中,这样就形成了一个一个的子集表的数据库,这就是分库。


在大数据环境中,表的关联代价很大,效率比较低。研究过MapReduce、Spark原理的同学应该知道其原因,核心就是shuffle过程会导致数据的不均匀。这时候我们可以进行分桶操作,即把A、B关联用的ID进行分桶操作,之后关联的时候,MapReduce时,会把两个表相同id的数据分在一个桶中进行join,这样效率就非常高了。


表的更新模式:全量表、增量表、流水表、快照表、拉链表。

其实叫更新模式不完全对,姑且这么叫吧。我们知道数据仓库是面向历史的,里面的数据原则上是不允许变更的数据。但是业务数据是变化的啊,我们用不变的数据仓库数据反应业务的变化呢?

方法1:每天都把所有数据都复制一遍,放在数仓里,就像找个照片一样不就好了吗?对,这就是快照表。

方法2:我们把每条数据的每次变化都记录下来,形成数据变化流水账,放在数仓里,也可以对吗?对,这就是流水表。

方法3:我们不必把所有的变化都记录下来,只需要记录关键信息的变化就可以了,每条数据的关键信息变化了,就记录到数仓里,这就是拉链表。


如果一张表含有该业务从诞生开始到现在的所有数据,那这张表就叫全量表。全量更新也是这个意思,如果更新数据的时候,直接覆盖这张表里的所有数据,就叫全量更新。一般我们都直接truncate,然后insert。优点是出错少,好维护,缺点是数据处理量大。

如果一张表只含有某个更新周期内的数据,那就叫增量表。增量更新也是这个意思,从上次的更新截止点开始,抽取这次新增加的数据,放在目标表里,这就是增量更新。增量更新的时候我们需要注意增量字段,还得小心更新失败、漏更新等,需要进行数据更新的校核,比较费劲。优点是数据处理量小,速度快;缺点是事儿多。


快12点了,来不及写字段和概念了,明天继续哈~~~

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
5月前
|
NoSQL 关系型数据库 Redis
DMS问题之归档后数据量和大小没变化如何解决
DMS(Data Management Service)是阿里云提供的一站式数据管理服务,支持数据开发、维护、治理等多种功能;本合集着重于介绍DMS的功能特点、操作流程和最佳实践,帮助用户高效进行数据管理和维护。
|
算法 Oracle 关系型数据库
【续】全量、增量、流水、拉链、快照、代理键、缓慢变化维
【续】全量、增量、流水、拉链、快照、代理键、缓慢变化维
|
2月前
|
算法 Shell
数据魔术师:如何在ClkLog中恢复丢失数据并实现数据更新
​ 在数字化的世界里,数据就是企业的血液,是推动业务发展的关键动力。想象一下,你正在运行你的业务,依赖ClkLog为你提供的数据,突然,由于网络波动或其他原因,定时脚本未能执行,页面上的数据缺失了。或者你刚刚优化了你的算法,但你需要重新计算以前的数据以便与新的算法保持一致。这种情况下,数据的完整性和稳定性就显得尤为重要,它们不仅影响业务的正常运行,而且直接关系到业务决策的准确性和及时性。
数据魔术师:如何在ClkLog中恢复丢失数据并实现数据更新
|
3月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之全量和增量同步数据的一致性、不丢失和不重复读取可以通过什么方式保证
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用问题之任务在同步过程中新增同步表后选择全量初始化历史数据,是否会阻塞原先其余表的增量同步
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
实时计算 Flink版产品使用问题之任务在同步过程中新增同步表后选择全量初始化历史数据,是否会阻塞原先其余表的增量同步
|
4月前
|
运维 关系型数据库 分布式数据库
PolarDB产品使用问题之表更新频繁,读取频繁,导致有很多慢日志,时间还很高,该怎么办
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
存储 Kubernetes 测试技术
应用存储和持久化数据卷:存储快照与拓扑调查(一)|学习笔记
快速学习应用存储和持久化数据卷:存储快照与拓扑调查(一)
139 0
应用存储和持久化数据卷:存储快照与拓扑调查(一)|学习笔记
|
存储 Kubernetes 调度
应用存储和持久化数据卷:存储快照与拓扑调查(二)|学习笔记
快速学习应用存储和持久化数据卷:存储快照与拓扑调查(二)
应用存储和持久化数据卷:存储快照与拓扑调查(二)|学习笔记
|
SQL 存储 监控
为什么我建议需要定期重建数据量大但是性能关键的表
为什么我建议需要定期重建数据量大但是性能关键的表
为什么我建议需要定期重建数据量大但是性能关键的表
|
存储 算法 索引
如何实现文件增量同步——算法
问题: 如何增量同步文件,例如一个文本文件有10M,分别存放在A,B两个地方,现在两个文件是完全一样的,但是我马上要在A上对这个文件进行修改,B如何实现自动和A上的文件保持一致,并且网络的传输量最少。
1429 0