跳至主要内容

SQL Query 執行流程

SQL Query 執行流程

arc sql process

Canner Enterprise 主要分成四個子系統 (模塊),分別是 SQL Engine, Web Service, Object StorageSSO Service

  1. SQL Engine:實際做 SQL 運算的分散式系統,分成 coordinator 及 worker,coordinator 負責解析 SQL 語句,切割成 tasks 後,分派給不同的 worker 處理。
  2. Web Service:負責使用者操作畫面給瀏覽器,提供 Restful API 給用戶端 (Client) 使用。
  3. Object Storage:儲存外部上傳檔案及 Canner Enterprise 中 Query 的結果及 Materialized View 的資料.若使用 Canner Enterprise 雲端版本,此 Storage 將會使用雲端提供之服務,AWS 環境使用 S3,Azure 環境使用 Azure Blob。
  4. SSO Service:負責處理登入/使用者驗證/權限管理 等功能。

實際執行 Query 時,子系統 (模塊) 間是如何溝通/傳遞資料的:

  1. Create Query:從最右側開始,由 Client/BI 發起 SQL Query 的請求,至 Authentication Layer (SSO Service) 做權限檢查,確認此請求的身份及權限允許後,至 Web Service 做 Log / Auditing 等追蹤所需的紀錄,接著到 SQL Engine ,開始執行此 SQL Query。
  2. Execute Query:SQL Engine 中的 Coordinator 把 SQL 語句解析後,分成多個 Tasks,並分派給多個 Worker 處理。
  3. Cache Result:SQL Engine 會透過內部的 Connector 至不同資料來源取得資料,Stream 到內部 Worker 組成的 pipeline 做運算,並把結果 Stream 到 Object Storage 中做 Cache。
  4. Get Result:Client/BI 從 Web Service 取得 Object Storage 中運算結果的位址 (位址接透過 Signed 處理,無法直接訪問,確保存取上的安全),Client/BI 從 Object Storage 的位址取得結果。