目前OpenSearch支持创建多表join:
如果多表配置了RDS、polarDB数据源并且通过DTS数据订阅的方式同步增量数据,主、辅表都可以同步到OpenSearch中,但为保障用户数据同步的时效性,会做出如下限制:
说明
主表+辅表更新量不能超过1500tps,否则主、辅表的时效性不承诺实时
辅表更新触发主表更新量不能超过1000tps,否则可能造成主辅表均有延迟
当主辅表的join关系是N:1时,建议N值不超过10
主辅表join逻辑
这里以两张表为例:
辅表更新逻辑
这里以两张表,并且主辅表对应关系为N:1为例:
由上图可知:
在主辅表join之后,合并成为一张宽表,所有更新操作均在宽表里进行
当更新主键记录时,由于主表的主键是唯一的,主表更新一条记录,对应宽表更新一条记录
当更新辅表记录时,由于辅表对应的主键,在主表中可以join上多条记录(即N:1,N的值),则辅表
更新一条记录,可能造成
宽表更新多条记录
得出结论:
由于大量更新辅表,可能会造成主表的延迟,为保证主表的时效性,限制辅表更新触发主表更新的最大量为1500tps
辅表更新触发主表更新超过1500tps时,辅表更新会被限速,所以不保证辅表更新时效性,如果继续大量更新辅表可能造成更多延迟
建议当主辅表的join关系是N:1时,建议N值不超过10
相关建议
如果对主表的延迟可以容忍,可以提工单,开放辅表tps限速的限制
如果对辅表的时效性可以容忍,且主表由于辅表的大量更新导致有较大延迟,可以提工单,限制辅表的更新量