【IT168 評論】時至臘月,資料庫界最勁爆的消息當屬阿里雲發布的雲資料庫HybridDB線上產品,HybridDB是基於資料庫Greenplum的開源版本研發。阿里好好地用MySQL和PostgreSQL不就行了?為啥要勞神費力地又基於Greenplum的開源版本研發HybridDB方案?專家認為,大數據時代MySQL和PostgreSQL已經無法支撐海量數據多維度的OLAP分析處理技術,並且,已有的兩個主流開源資料庫MySQL和PostgreSQL主要針對的是OLTP環境,在OLAP在線分析需求下的性能明顯不足。尤其是MySQL在大規模分析操作時多表Join的性能是當前網際網路用戶的一大痛點。
從技術角度而言,OLAP場景不僅涉及的數據量要大而且要求分析的結果也要實時返回,那麼,相應的SQL查詢也就越來越複雜。技術指標上,除了支持複雜的數據類型外,還要能滿足海量數據的實時分析,對於資料庫而言是一個非常重大的考驗。阿里已經在往這方面思考和行動,對於星瑞格軟體的資料庫(Sinoregal DS)來說,已早已支持OLTP+OLAP混和型的數據倉庫。不管是雲上或雲下,都是同一類型資料庫,相較於HybridDB,Sinoregal DS數據的交換就簡單多了,不需要考慮數據型態不同的轉換問題,而在開發與運維方面更是優勢,因為只有一種類型的資料庫。那麼,Sinoregal DS到底是怎麼做到的?
什麼是OLTP及OLAP
在討論Sinoregal DS到底是怎麼做的之前,我們先來談一談OLTP和OLAP是什麼?聯機事務處理(OLTP-On-Line Transaction Processing)是以在線交易的方式處理一般即時性的作業數據,OLTP通常被運用於自動化的數據處理工作,比如:訂單輸入、金融業務等需要反覆性日常性的交易活動。在OLTP的操作場景中,用戶的並發操作量會非常大,系統實時進行數據操作且必須快速響應,查詢作業通常只會檢索少量條數據,以此來實現用戶的業務交互。OLTP在各行各業的應用非常多,如銀行、保險、電信等,這些行業的資料庫在OLTP上的應用技術已經相對成熟。
在線分析處理(OLAP:On-Line Analytical Processing),是一套以多維度的方式來分析數據,能彈性地提供積存(Roll-up)、下鑽(Drill-down)、和樞紐分析(pivot)等操作,多用於決策支持系統、商務智能或數據倉庫。其主要的功能,在於方便大規模數據分析及計算,對決策提供參考。
早期的數據分析,並沒有專門的、獨立的資料庫支撐,一般是直接與OLTP業務放在同一個資料庫中完成。但隨著數據量與業務量的增長,OLAP這類的分析操作在執行時會影響到OLTP業務交易性能下降。因此,業界開始將OLTP、OLAP拆分成兩套不同的資料庫進行處理。並且,這兩類資料庫對數據的處理方式也不同,OLAP資料庫數據來源通常來自OLTP資料庫,通過應用程式或ETL軟體持續或定期抽取資料庫,讓業務交易與報表分析進行分離。隨著網際網路時代的到來,數據量激增,OLAP業務所要分析的數據量也隨著時間積累而增多,單臺伺服器的性能已經無法滿足OLAP分析海量數據時所帶來的壓力,因此也催生出可以支持大規模並行處理(Massive Parallel Processing,MPP)的分布式數據倉庫。
MPP分布式數據倉庫基本上可以看成是一種高性能擴張,每個節點可處理的數據量及計算能力需要支持橫向擴展,而且要保障性能,也就是用戶如果是在數百GB的數據量下,可以在秒級別內查詢出結果,那麼將數據量平衡擴展多個節點到TB甚至PB時,相同對比的查詢依然可以達到秒級別的響應速度,不會因為數據量的增加而影響查詢速度。OLAP通常要求海量數據的查詢在幾分鐘、幾秒,甚至毫秒級返回結果,因此,對於伺服器、網絡及資料庫的架構都提出了很高的要求,而這些Sinoregal DS早就已經支持了。
Sinoregal DS完全滿足OLTP+OLAP應用
Sinoregal DS配上獨有的數據倉庫加速引擎(SWA-Sinoregal Warehouse Accelator),即可處理OLTP應用,更可以打造企業單一類型資料庫與數據倉庫服務平臺;即可作為聯機事物業務的處理,也可以服務海量數據分析型業務。原本用戶在數十億筆數據表上的查詢需要花30多分鐘完成,而使用SWA後只需要幾秒就能完成,在沒有進行任何查詢優化或應用程式的修改下,性能可以提升數百倍甚至千倍。其實,SWA就是設計來處理秒級別的海量數據分析的加速引擎,不需要對應用程式作任何修改,也不需要額外的維護成本,同時,由於是相同的資料庫引擎,也不需要為異構資料庫煩惱。
那麼,SWA創新的關鍵在哪裡?SWA是內存資料庫,內存訪問速度和磁碟訪問速度之間的差距隨著時間的推移越來越大。在過去,內存的價格昂貴,因此傳統資料庫系統使用的內存較少,用戶需要通過減少磁碟I/O 量和緩存技術來對傳統資料庫系統進行優化。隨著內存價格的不斷下降,用戶已經可以承受TB 級內存的價格。現在,商用伺服器現已可支持TB 級的內存,所以SWA 順應這一趨勢,在內存中壓縮、存儲所有數據,消除了磁碟I/O。現今CPU 處理器有更多的核(core)和更大的處理器內置緩存。於是,SWA 加大並行度,減少進程間的同步,使用更好的算法以充分利用處理器內置緩存。這些技術將查詢性能提升到一個新的高度。這些技術使得SWA成為一個簡單且優雅的設計。使用星瑞格數據倉庫加速器有3 個特點:
不需要進行手工調優
支持已有業務工具和應用
與現有的資料庫架構共同工作
數據倉庫加速器工作原理
如下圖所示,採用Sinoregal DS資料庫作為數據倉庫伺服器,用戶詳細的分析數據保存於此,用戶可以基於該數據進行趨勢分析、輔助決策、業務優化等各式各樣分析;並在方案中增加數據倉庫加速器,SWA可以部署在單臺或多臺基於Linux 伺服器上以此形成集群,同時與數據倉庫伺服器進行溝通,通過將定義的數據集市數據壓縮並完全保存在內存中來極速提高數據倉庫查詢效率。
當數據集市部署到SWA後,需要裝載數據到數據集市中。數據從Sinoregal DS資料庫裝載到SWA時,SWA會自動對數據進行壓縮、並按照頻度分區方法對壓縮數據進行分區並存儲在內存中。當用戶向Sinoregal DS資料庫發出查詢請求時,資料庫優化路由器評估用戶查詢請求,並且將其自動匹配,如果滿足條件,該查詢請求將被路由到SWA中來加速數據查詢,並將查詢結果返回給Sinoregal DS資料庫,最終返回給應用程式。
數據倉庫加速器除了內存資料庫外還有哪些關鍵技術特點:
1. 深度數據壓縮
SWA採用哈夫曼編碼對數據進行壓縮,基本可以達到3:1以上的壓縮比,可以保證將數據集市的數據全部保存到內存中。
2. 深度列式存儲技術
深度列式存儲技術比傳統的列式存儲技術更優。有了「深度列式存儲技術」和「處於壓縮態的數據無需解壓縮就可被處理的技術」後,查詢處理時不再需要磁碟I/O,內存數據倉庫成為現實。列式存儲技術將同一數據列的各個值存放在一起。由於同一數據列的各個值存放在一起,我們可以得到更高的壓縮比率。OLAP 類型的查詢只對事實表中的少量數據列感興趣。如果使用的資料庫是列式存儲數據,您可以只讀取關注「數據列」的「數據頁」。對於存取大量數據行和少量數據列的查詢來說,列式存儲可以大大改進效率。
3. 頻度分區技術
SWA對數據集市裡的每個數據表,通過分析一個或多個數據列裡經常出現的值,將緊密相關的一些數據列組成一個數據值組(tuplet)。在上面的圖示中,產品(product)和產地(origin)這兩個數據列緊密相關,所以將這兩個數據列組成一個數據值組。哈夫曼編碼(Huffman encoding)的好處是用「最少的數據位」對「最經常出現的值」進行編碼。也就是說緊密相關的數據會聚攏在一起,這項技術改進了壓縮的效率,並且可被用於判斷數據值組是否滿足查詢語句中的過濾條件,提供分區排除功能。由於對查詢語句的處理是基於壓縮的數據,處理的速度將非常快速。
4. 高度並發與高效掃描
高度並發與高效的掃描為快速的查詢處理建立了堅實的基礎。為了充分的利用CPU資源,SWA可以動態的產生合適數量的高並發線程。而掃描操作是基於被壓縮的數據,主要利用了哈夫曼編碼的優勢。「判斷是否滿足過濾條件」和「group by」是基於被壓縮的數據的,而聚合函數(例如求平均值)是基於解壓縮後的數據的。哈夫曼編碼技術還具有密集哈希函數(dense hash function)的作用,從而使得整個哈希表可以被緩存進CPU的L2 Cache中,因此查找速度非常快。#FormatImgID_4#
星瑞格資料庫混和應用平臺架構
星瑞格資料庫混和應用平臺架構如下圖:
星瑞格資料庫混和應用平臺優勢:
1. 單一類型資料庫
數據倉庫的數據會有許多來源,源數據除了來自聯機事物處理的核心業務資料庫外,在網際網路、物聯網快速發展的時代還會有許多各式各樣類型的數據生成,比如說訪問軌跡或傳感器回傳數據,如果這些數據都採用單一類型資料庫處理,在數據交換上相對簡單的多,可以省去複雜的異構數據轉換。
2. 響應速度快
星瑞格數據倉庫加速器SWA具備分布式架構、內存資料庫、深度壓縮與列式存儲等多項技術優勢,可以加速分析型查詢,在海量數據下仍能保障快速秒級響應速度。
3. 分布式架構
星瑞格數據倉庫加速器SWA可以採用單臺伺服器或多臺伺服器形成集群來部署,集群節點可彈性擴充,足以因應大數據分析應用。
4. 開發與運維成本低
星瑞格資料庫Sinoregal DS與數據倉庫加速器SWA是同屬星瑞格資料庫家族產品,SWA是為星瑞格資料庫加速分析查詢而誕生,兩者緊密結合,架構單存,部署簡易,投入的開發與運維成本相對較低。#FormatImgID_6#
結論
阿里發布了HybridDB方案, 在星瑞格看來,對IT界看到的是資料庫新的選擇方向,星瑞格資料庫早已可以支持OLTP和OLAP的業務,對於海量數據的查詢搭配了數據倉庫加速器(SWA)快速響應技術,我們將星瑞格資料庫與阿里HybridDB的技術做個對比:
1. 數據類型支持
阿里HybridDB支持多種混合數據類型的SQL統一查詢,包括:傳統數據類型如:字符、數字、浮點、日期等與非結構化數據:JSON、XML、GIS地理信息數據等,這些數據類型Sinoregal DS早已支持,另外Sinoregal DS還內置了時間序列處理引擎,響應物聯網生成的與時間相關數據的處理,不但可以節省存儲空間,也可以加快時間序列數據的計算。
2. 存儲支持
阿里HybridDB支持混合的數據存儲,包括:行存、列存、SSD/HDD本地存儲、OSS雲存儲; 相較Sinoregal DS而言,存儲使用技術上早已成熟,存儲空間使用本地或雲端存儲都沒問題,為了省去作業系統對IO的開銷,更支持裸設備,行式、列式也能支持,甚至還可以做深度壓縮,不但空間使用優化了,查詢速度也大大提升。
3. 資料庫類型
阿里HybridDB為了應對海量數據分析,引進了Greenplum支持, 就整體而言是加上MySQL、PostgreSQL三種類型資料庫兜在一起,這樣的運維與開發成本勢必相對提高,技術的養成成本也會提高。相較星瑞格資料庫,單一類型資料庫支持聯機型事物處理,也支持海量數據分析,而且有高擴展性和快速響應機制。
綜觀上述企業,如果想要打造海量數據分析平臺,不論是部署在雲上還是雲下,採用星瑞格資料庫是一個非常好的選擇。