动态表(Dynamic Table)
动态表(Dynamic Table)是云器 Lakehouse 解决方案中的一项创新特性,为用户提供了一种灵活且高效的数据处理与存储方法。与传统静态表相比,动态表不直接存储数据,而是通过定义的查询语句动态生成数据。这种方式在处理大规模数据集和实现数据实时更新方面展现出显著的优势。
动态表的核心特性
- 查询结果即表:动态表基于定义的查询语句动态生成数据集,每次查询都可能产生一个全新的数据集,即动态表的内容。
- 增量刷新机制:动态表支持增量刷新,仅在底层数据源发生变化时触发查询语句的执行和内容的更新,大幅提升数据处理效率,尤其适用于处理大规模数据。
- 操作限制:由于数据由查询生成,动态表不支持传统的
UPDATE、DELETE、INSERT等直接数据操作,以确保数据的一致性和准确性。
动态表的应用场景
- 数据仓库:动态表可用于存储经过处理和转换的数据,便于后续的数据分析和报告生成。
- 实时数据应用:对于需要实时数据更新的应用场景,动态表能够提供快速的数据刷新能力,保持数据的时效性。
- 数据ETL过程:在数据提取、转换和加载(ETL)过程中,动态表可作为中间存储,保存转换后的数据集。
Materialized View和Dynamic Table区别
从 Lakehouse 的实现机制上来看,动态表是基于传统的物化视图演进而来。虽然两者有一些共性,但在定位上存在很大区别。
物化视图:性能优化利器 物化视图是一种预计算并存储查询结果的特殊视图,能够显著提升查询效率。与传统视图不同,物化视图将计算结果保存在类似表的结构中,使得后续相似查询能够被优化器自动识别并直接使用预存结果,从而减少重复计算,加快查询速度。
动态表:数据加工的高效工具 动态表专注于数据加工,虽然也能提升查询性能,但并不依赖于查询优化器的自动重写。物化视图只有保持数据是最新的才能进行查询改写,而动态表面向加工场景,其数据可能并不是最新的。
传统物化视图在某些产品中具有以下限制,目前 Lakehouse 没有这些限制:
-
只能基于单个基表。物化视图不能基于复杂查询(即具有联接或嵌套视图的查询)。
-
物化视图不一定是增量刷新,不同系统的实现方式各异。少量系统为了节省计算资源、加快加工速度,在部分算子中实现了增量计算。
动态表的先进特性:
- 增量识别与优化:支持大数据环境下的文件粒度增量识别,实现实时增量读取和计算优化,以及写入优化。
- 智能决策:通过基于成本的优化器(Cost-Based Optimizer)智能选择全量、增量或部分增量计算,以适应不同查询需求。
- 实时任务运维:提供数据版本管理、回退和重跑等机制,为实时任务的运维提供全面支持。
数据时效性考量:
- 物化视图要求数据的即时更新,以确保查询改写的准确性。在基表数据变更时,Lakehouse 采用定时刷新机制,确保物化视图的数据始终保持最新。
- 动态表则更注重数据加工的灵活性,根据业务定义来调整数据的滞后性,而不强制要求数据必须实时更新。
动态表管理操作指南
- 创建动态表:用户可以通过特定的语法定义新的动态表,并指定用于数据转换的 SQL 查询语句。具体语法和操作步骤详见 创建动态表 文档。
- 删除动态表:若动态表不再需要,可使用
DROP TABLE命令将其删除。执行删除操作前,请确保数据已备份或确认不再需要,因为该操作会移除动态表的定义及其数据。具体语法和操作步骤详见 删除Dynamic Table 文档。 - 查看动态表刷新历史:通过
SHOW DYNAMIC TABLE REFRESH HISTORY命令查看指定动态表的刷新历史,可监控刷新作业的执行状态(成功与否)、运行时长、增量/全量刷新模式、处理的记录数量等信息。
数据加工与增量计算
动态表在数据加工中发挥着重要作用。通过定义查询语句,用户能够实现数据的提取、转换和加载(ETL)。同时,动态表支持增量计算,仅在数据源发生变化时触发数据更新,有效减少数据处理的时间和资源消耗。有关动态表的增量计算和数据加工的详细信息,请参阅 数据加工与增量计算 文档。
联系我们
