一、维表join基础操作
在实际工作场景中,数据流处理往往需要与相关的维度数据进行关联操作。根据不同的业务场景和需求,合理选择相应的缓存策略至关重要,以确保数据处理的效率和准确性。
通用缓存策略详解
在使用维表 Join 时,大部分连接器都支持缓存策略,但不同连接器对缓存策略的支持情况可能略有不同。因此,在使用缓存策略之前,请务必查阅对应连接器的官方文档,以确定具体的支持情况。以下是通用的缓存策略及其详细说明:
1. None(默认值):无缓存
描述:不使用任何缓存机制,每次查询都直接从物理维表中获取数据。
使用场景:
对数据准确性要求极高,无法容忍任何数据延迟或不准确的情况。
维表数据更新频繁,实时性要求高。
优点:
数据实时性强,能够保证查询结果的准确性。
缺点:
当数据量较大时,Join 操作的性能压力会显著增加,容易导致反压。
对维表数据库的查询压力较大,可能影响数据库性能。
2. LRU(Least Recently Used):缓存部分数据
描述:缓存维表中的部分数据。系统会根据最近使用情况维护一个缓存,源表的每条数据都会先在缓存中查找,如果未找到,则从物理维表中查询。
使用场景:
维表数据更新频率较低,可以容忍少量数据不准确的情况。
对查询性能有一定要求,但对数据实时性要求不高。
优点:
提高 Join 操作的性能,减少对物理维表的查询次数。
缓存机制可以有效缓解数据库的压力。
缺点:
当维表数据发生变化时,缓存中的部分数据可能会变得不准确。
缓存大小有限,可能导致部分数据无法被缓存。
3. ALL:缓存全部数据
描述:缓存维表中的所有数据。在作业运行前,系统会将维表中的所有数据加载到缓存中,之后所有的维表查找操作都会通过缓存进行。如果在缓存中未找到数据,则认为该键不存在。全量缓存有一个过期时间,过期后会重新加载全量缓存。
使用场景:
适用于远程表数据量较小,且源表数据与维表 JOIN 时,ON 条件无法关联(MISS KEY)的情况较多。
对查询性能要求极高,且可以接受全量数据加载的延迟。
优点:
提供最高的查询性能,因为所有数据都在缓存中。
减少了对物理维表的查询,降低了数据库的压力。
缺点:
缓存占用内存较大,可能需要较多的资源。
数据更新后,需要等待缓存过期或手动刷新缓存,可能存在短暂的数据不一致。
目前维表关联伪代码如下:<