SQL Query 執行流程
SQL Query 執行流程
Canner Enterprise 主要分成四個子系統 (模塊),分別是 SQL Engine
, Web Service
, Object Storage
及 SSO Service
SQL Engine
:實際做 SQL 運算的分散式系統,分成 coordinator 及 worker,coordinator 負責解析 SQL 語句,切割成 tasks 後,分派給不同的 worker 處理。Web Service
:負責使用者操作畫面給瀏覽器,提供 Restful API 給用戶端 (Client) 使用。Object Storage
:儲存外部上傳檔案及 Canner Enterprise 中 Query 的結果及 Materialized View 的資料.若使用 Canner Enterprise 雲端版本,此 Storage 將會使用雲端提供之服務,AWS 環境使用 S3,Azure 環境使用 Azure Blob。SSO Service
:負責處理登入/使用者驗證/權限管理 等功能。
實際執行 Query 時,子系統 (模塊) 間是如何溝通/傳遞資料的:
Create Query
:從最右側開始,由 Client/BI 發起 SQL Query 的請求,至 Authentication Layer (SSO Service) 做權限檢查,確認此請求的身份及權限允許後,至 Web Service 做 Log / Auditing 等追蹤所需的紀錄,接著到 SQL Engine ,開始執行此 SQL Query。Execute Query
:SQL Engine 中的 Coordinator 把 SQL 語句解析後,分成多個 Tasks,並分派給多個 Worker 處理。Cache Result
:SQL Engine 會透過內部的 Connector 至不同資料來源取得資料,Stream 到內部 Worker 組成的 pipeline 做運算,並把結果 Stream 到Object Storage
中做 Cache。Get Result
:Client/BI 從 Web Service 取得Object Storage
中運算結果的位址 (位址接透過 Signed 處理,無法直接訪問,確保存取上的安全),Client/BI 從Object Storage
的位址取得結果。