在實際業務生產環境中,業務應用系統在使用 OLTP 數據庫將數據進行存儲後,均會存在如後臺運營類系統進行統計報表分析等場景的複雜 SQL 查詢訴求。html
爲知足此類複雜 SQL 查詢快速響應的需求,DRDS 團隊基於第三代分佈式SQL引擎,進一步引入自研 MPP 多機並行計算引擎(Fireworks)及對應的優化策略,極大地補強了 DRDS 的複雜查詢處理能力。數據庫
千萬級數據下的分佈式多表Join、聚合、排序、子查詢操做秒級返回結果,可極大的提高響應速度。自身利用同一份數據(RDS只讀)進行處理,無需數據同步至其餘數據源,下降業務架構總體鏈路複雜度,節省業務運維及預算成本。網絡
主要特性
自研 MPP 多機並行計算引擎 Fireworks架構
DRDS 只讀實例搭載了一個具有完整多機並行處理能力的 SQL 執行引擎(Fireworks)。它與 DRDS 主實例上搭載的 SQL 執行引擎有顯著差別。併發
DRDS 主實例的執行引擎採用單機架構,採起儘量將計算下推至底層各物理分庫執行的策略,依靠物理分庫的計算能力實現了邏輯SQL的分佈式計算。運維
而 DRDS 只讀實例上搭載的 Fireworks 引擎是一個由多個計算節點組成的集羣,將一個 SQL 查詢轉換爲一個分佈式計算任務,突破下掛分佈式
物理庫計算能力的限制,大幅提高針對複雜邏輯SQL的計算速度,對 Join、Aggregate 和 Sort 計算有顯著加速效果。性能
Fireworks 會將 Join、Aggregate 和 Sort 這類計算任務經過 Shuffle 的方式打散並分發到計算集羣的多個計算節點上,經過多計算節點並行計算達到計算加速的目的。大數據
針對多機並行執行模式定製打造的優化器優化
原 DRDS 主實例優化器主要側重 OLTP 場景,核心理念是儘可能將一切計算下推至下掛的物理庫執行。其目的是充分利用物理庫的計算資源,同時能夠避免產生大量的數據流動,從而獲得較快的響應速度。
而當面對涉及較大數據量級下的複查查詢場景時,總體性能會受到下掛物理庫的限制,同時也會對物理庫產生較大的壓力從而影響穩定性,整體來看其 OLAP 能力有不少侷限性。
在引入了 MPP 多機並行計算引擎 Fireworks 以後,DRDS 自己在計算能力上獲得了極大地提高,優化器的總體優化策略也有所調整:
DRDS 分佈式 SQL 優化器經過對執行計劃最細粒度的優化能夠產生出對多機並行執行引擎友好的執行計劃,得到更好執行效率。
同時提供精細化算子下推策略,將對 RDS 較小壓力的算子下推至物理庫取得更高的計算性價比,同時保護 RDS 免受代價較大算子的影響,從而保證在線流量的穩定性。
基於在線數據直接分析
以新零售業務爲表明的新興互聯網業務不斷涌現,這類業務除了有實時的 OLTP 需求,還伴隨着一些有必定複雜度的準實時 OLAP 的需求用以支持實時決策等需求。
而目前大多數的數據分析場景的解決方案均須要將 OLTP 數據庫的生產數據導出至其餘數據源進行再次離線分析,這種傳統方案很難知足準實時的需求,同時在數據導出至離線系統時也存在數據丟失的風險。
DRDS 只讀實例無需進行冗長繁瑣的數據同步任務,基於 RDS 只讀實例或 RDS 主實例直接進行復雜數據處理,下降業務架構總體鏈路複雜度,節省業務運維及預算成本。
DRDS 只讀實例在避免數據同步的同時,可保證數據處理時效性,最高可作到 READ COMMITED 的實時性 (基於 RDS 主實例)。
邊界清晰的 SQL 兼容性
DRDS 只讀實例全面兼容 DRDS 主實例的 SQL 查詢語法,與 DRDS 5.3 版本的 SQL 兼容性和 SQL 支持邊界高度保持一致。
與同類產品相比具有兼容性高以及支持邊界清晰的特色。能夠提供與 DRDS 主實例幾乎一致的體驗。
DRDS 主實例上沒法執行或執行較慢的複雜 SQL 能夠直接遷移到只讀實例來執行,免去SQL改寫的額外開銷。
產品體驗靈活自主
DRDS 只讀實例自動同步 DRDS 主實例的帳號權限信息,原生VPC支持,內外網可同時開啓,根據業務狀況靈活變配,數據處理能力線性提高。
技術架構總覽
DRDS 只讀實例總體架構與 DRDS 主實例基本保持一致,僅在查詢層有所變化,增長了 MPP 執行引擎和對應優化器,以下如所示:
DRDS協議層負責處理網絡交互與 MySQL 協議的解析,收到查詢請求後會將 SQL 轉交至查詢層處理。查詢層負責解析 SQL 並由執行器產生通過優化的執行計劃,而後交由執行引擎到存儲層進行查詢以及計算。
若是須要使用 Fireworks 引擎計算,在獲得執行計劃以後查詢層還會將該執行計劃進一步轉換爲分佈式執行計劃並將其做爲分佈式任務提交給 Fireworks Cluster。由遠端的 Fireworks 集羣完成到存儲層進行數據查詢以及後續計算的工做。
簡單來講,DRDS 只讀實例能夠認爲是在原 DRDS 基礎上增長了一條具有多機並行處理能力的執行鏈路。
適用場景
整體來講 DRDS 只讀實例適用於處理低併發高延遲的大數據量級下的複雜查詢。如數據分析及報表類場景,該類場景的典型特徵爲含有大
量的關聯、聚合及排序操做且參與計算的數據規模較大。
目前 DRDS 只讀實例在阿里集團內部已經落地了多個業務,其中最具表明性的當屬盒馬、商業大腦等新零售場景。圍繞人、貨、場、倉多個維度進行關聯分析,對分散在不一樣邏輯庫的幾張甚至十幾張邏輯表進行關聯而後再聚合、排序以知足庫存對帳、決策支持等業務上的需求。
DRDS 只讀實例的出現使業務開發同窗再也不須要配置、維護數量繁多的數據同步鏈路,不用擔憂因數據不一樣步而形成的結果時效性差或不許確等問題,必定程度上減輕了開發同窗的工做負擔。
對於已經在使用 DRDS 的用戶來講,DRDS 只讀實例能夠解決以下兩類已知問題:
在使用 DRDS 過程當中可能會發現某一些涉及Join、聚合、排序的複雜 SQL由於不能徹底下推而須要在DRDS執行引擎中進行二次計算,而這種計算由於受到單機執行引擎在內存方面的限制而沒法執行。
SQL 的複雜計算部分能夠下推可是涉及到的數據規模較大形成物理庫壓力增高影響 OLTP 業務或者響應時間過慢達不到要求。
長期以來 DRDS 受到單機架構執行引擎的限制一直沒法對基於大數據規模的複雜查詢提供很好的支持,也沒法經過擴展物理資源來實現對自身本地計算能力的線性擴展。
DRDS只讀實例的推出完全地彌補了 DRDS 在 OLAP 場景下的短板,使得 DRDS 在提供強大 OLTP 能力的同時提供可擴展的 OLAP 能力,爲同時具備 OLTP 需求與中等規模數據分析需求的用戶提供了一站式總體解決方案,爲用戶帶來便利。
後續半年時間內 DRDS 只讀實例將發佈跨邏輯庫的關聯查詢功能,並經過更多的技術手段,不斷加強只讀實例核心能力,在併發度、響應時間、數據量、交互式查詢等方面將擁有更好的表現,知足企業級應用對數據庫的嚴苛要求。
目前 DRDS 只讀實例與 DRDS 主實例同享8折限時優惠,活動詳情https://promotion.aliyun.com/...
歡迎你們持續關注 DRDS(阿里雲分佈式關係型數據庫服務),產品詳情
https://www.aliyun.com/produc...
本文做者:雲攻略小攻
本文爲雲棲社區原創內容,未經容許不得轉載。