供應鏈業務的實體角色非常多(倉、配、分撥、站點、小件員、貨主、行業、地區等),實體繁多,這意味著我們在建設實時明細中間層的時候,會使用大量的維表關聯,這對 Blink 在維表關聯的性能上提出了更高的要求——如何提升大量的大小維表的關聯性能?Blink 從來沒讓用戶失望,Blink SQL 模式在維表關聯的性能上,也做了大量的優化:
用戶可以通過配置 Cache=LRU 參數,開啟 LRU 緩存優化。開啟後,Blink 會為每個 JoinTable 節點創建一個 LRU 本地緩存。當每個查詢進來的時候,先去緩存中查詢,如果存在則直接關聯輸出,減少了一次 IO 請求。如果不存在,再發起資料庫查詢請求,請求返回的結果會先存入緩存中以備下次查詢。
如果維表數據不大,用戶可以通過配置 Cache=ALL 參數,對維表進行全量緩存。這樣,所有對該維表的查詢操作,都會直接走本地緩存模式,幾乎沒有 IO,關聯的性能非常好。
除了上述幾點優化,Blink SQL 模式還在嘗試引入 SideInput、Partitioned ALL Cache 等優化方案,相信在隨後開源的 Blink 版本中,維表關聯的性能會越來越好。