目前提供了 4 種方式的應用結構創建方式,同時OpenSearch-行業算法版提供了多表支持功能,以方便業務復雜場景下調用。
主輔表數據關聯關系
通過手動創建應用結構方式,為應用創建多個表時,多表之間數據關聯關系描述如下:
目前主輔表,數據關聯僅支持 N:1 或 1:1 的關系,不支持 1:N(即多表數據關聯關系中,多的一方只能是主表)。
主輔表需通過應用表外鍵與輔表主鍵進行數據關聯,且表外鍵只能關聯輔表主鍵。
最多只支持3層關聯。輔表最多添加10張。
只能配置一張主表
主輔表關系 | 關聯邏輯 | 是否支持 |
表A(主表)、表B | 表A(主表)-> 表B | 支持 |
表A(主表)、表B、表C | 表A(主表)-> 表B -> 表C | 支持 |
表A(主表)、表B、表C、表D | 表A(主表)-> 表B 表A(主表)-> 表C 表A(主表)-> 表Djoin層級不超過2層,輔表個數不超過10個 | 支持 |
表A(主表)、表B、表C、表D | 表A(主表)-> 表B -> 表C -> 表D超過2層多表數據關聯 | 不支持(獨享型可支持3層) |
表A(主表)、表B | 表A->表B,表B->表A環狀多表數據關聯 | 不支持 |
表A(主表)、表B、表C … 表K | 表A(主表)-> 表B 表A(主表)-> 表C .. 表A(主表)-> 表Kjoin層級不超過2層,但輔表個數超過10個 | 不支持(獨享型可擴展輔表個數) |
數據模型
主輔表JOIN場景
注意事項
表字段結構一致才能映射,如輔表主鍵為INT,那么只能映射INT類型的主表字段。
離線表的join邏輯是,在索引構建的過程中將主表和附表left join成一張寬表來生成索引供用戶查詢,因此如果主表記錄和輔表記錄是N:1的關系,且N值比較大時,會在更新輔表時,觸發放大n倍的主表更新流量,導致主輔表更新延遲,因此建議N值<=10。
主輔表left join后的寬表的行數和主表的行數一致,輔表沒有數據的字段,會自動補充默認值,INT類型的默認值是0,STRING默認是null。
最佳實踐:多表join引發的數據同步延遲