全部產品
Search
文件中心

OpenSearch:建立多表join

更新時間:Jul 13, 2024

目前提供了 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

主輔表JOIN情境

1:1N:1JOIN不上

注意事項

  • 表欄位結構一致才能映射,如輔表主鍵為INT,那麼只能映射INT類型的主表欄位。

  • 離線表的join邏輯是,在索引構建的過程中將主表和附表left join成一張寬表來產生索引供使用者查詢,因此如果主表記錄和輔表記錄是N:1的關係,且N值比較大時,會在更新輔表時,觸發放大n倍的主表更新流量,導致主輔表更新延遲,因此建議N值<=10。

  • 主輔表left join後的寬表的行數和主表的行數一致,輔表沒有資料的欄位,會自動補充預設值,INT類型的預設值是0,STRING預設是null。

  • 最佳實務:多表join引發的資料同步延遲