目前提供了 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引發的資料同步延遲