QueryEngine是數據金字塔的黏合劑,它是一個高可用的類SQL查詢服務,旨在為用戶提供一個高級的數據查詢語言,使得用戶可以高效、簡單、靈活地表達自己的數據查詢與處理邏輯。
1.Query Engine淵源,2.Query Engine架構,3.Query Engine優勢,
1.Query Engine淵源
Query Engine最早用於百度內部海量數據的ETL處理和高級查詢,2014年9月3日首次在百度世界大會推出Query Engine的試用版本。QueryEngine提供了兩種使用模式:服務模式和客戶端模式,服務模式為用戶提供高可用、高可靠、可審計的服務;客戶端模式下,用戶可快速開發、跟蹤調試,更方便開發和運維。
2.Query Engine架構
Query Engine引擎層(Wing)分三層:前端、最佳化器和後端。
前端主要為用戶提供各種語言包,目前主要是hql及cquery、Rquery。它把來自用戶的各種輸入語言,統一翻譯成中間表示(IR), 也就是邏輯計畫;
最佳化器接收到前端傳入的IR,對其進行最佳化變換(partition裁剪,列裁剪,謂詞下推等傳統數據常用的查詢最佳化)。最佳化器中的runtime library從運算元層面進行最佳化(向量化/SIMD、代碼生成、部分冗餘消除等運行時的最佳化)。最佳化後的邏輯計畫最終被最佳化器推送到後端;
後端接收到最佳化器傳入的邏輯計畫,根據不同的計算引擎,翻譯成相應的物理計畫,並對其展開相應的物理最佳化(獨立運算元合併,分桶合併,Partial-Processor前置等跟計算引擎密切相關的最佳化),並最終將任務推送到遠端計算引擎上去執行。
Query Engine服務層(Magi)對外提供統一thrift api,承載著Query Egnine的平台化。
3.Query Engine優勢
一、提供SQL-like查詢服務,使用簡單方便,降低了用戶學習曲線。
二、基於百度雲服務,統一簡化了後期運維和支持 。
三、對外禁止查詢細節,為查詢最佳化提供了極大的方便;對內提供良好的分層,可插拔式的設計,為專項最佳化提供了方便。
四、對用戶影響極小,除非客戶端升級,否則服務升級改進對用戶無影響