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