在 Hologres 里面我们会有不同的表,放到不同的 TableGroup 里面,对于 Shard 数相同的表,都会放到一个 TG 下面。
假设两个表做关联,如果都按照关联的 Key 去设计 Distribution Key,那么这两个表的关联就可以做一个 Local Join,如上图左边所示。所有的数据不需要做额外的 Shuffle,每个表在每个 Shard上面,做完关联之后直接产生结果。
假如数据量增大,之后可能需要扩容,我们希望在这个 TG 下面所有表都会进行扩容,这样能保证数据分布的一致性,维持住整个 Local Join,而不会因为扩容导致做不了Local Join。Local Join 相比于非 Local Join,性能差别非常大,通常会有一个数量级左右的差异。跟 Local Join 最相关的就是 Distribution Key 的设计,如果 Distribution key 设计不合理时,在 Join 时,可能引起大量的 Data Shuffle,影响效率。
资料来源:《实时数仓“王炸组合”-实时计算》,下载链接:https://developer.aliyun.com/topic/download?id=7944
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。