作为维表
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在阿里云实时计算Flink版中,维表(Dimension Table)扮演着辅助和丰富源表数据的角色。以下是关于维表的关键特性与配置说明:
维表定义: - 角色:作为辅助表,用于扩展源表信息,提供额外的业务上下文,如用户详情、产品信息等。 - 规模与形式:数据量相对较小,可以是静态数据或低吞吐量的流式数据,通常在GB到TB级别。 - 用途:通过Join操作与源表关联,增加源表记录的维度,生成更全面的数据视图。
使用场景示例: - 订单数据表(源表)与用户信息表(维表)Join,以获取订单相关的用户详细信息。
连接器支持: - MySQL等数据库可作为维表数据源,支持通过SQL DDL定义,配置包括数据库连接信息、表名等。
配置参数亮点: - 缓存策略 (lookup.cache.strategy
): 支持None、LRU、ALL三种策略,优化查询性能。当选择LRU时,需设置lookup.cache.max-rows
来限定缓存大小。 - 缓存超时时间 (lookup.cache.ttl
): 可自定义,根据缓存策略不同有不同的应用方式。 - 最大Join返回行数 (lookup.max-join-rows
): 控制单次查询维表的最大匹配结果数。 - Filter下推 (lookup.filter-push-down.enabled
): 开启后,能在加载维表数据前进行条件过滤,提升效率,但仅适用于Flink计算引擎VVR 8.0.7及以上版本,并且注意不要对同时用作源表的表开启此功能。
注意事项: - 确保为每个MySQL CDC源表分配不同的Server ID,特别是在并行处理或非CTAS同步场景中。 - 维表JOIN时,遵循MySQL最左前缀原则排列JOIN字段以利用索引,但实际是否使用索引还需查看数据库执行计划。 - 结果表DDL无需声明自增主键字段,数据库会自动处理。 - DDL中声明的非主键字段至少存在一个,避免报错。 - NOT ENFORCED
表示Flink不对主键做严格校验,数据完整性需自行保证。
综上所述,维表在实时计算Flink版中的配置灵活且功能强大,能够有效增强数据处理的维度和效率,但配置时需细致考虑缓存策略、Join性能及数据完整性的保障措施。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。