首頁>技術>

一、MySQL的天然短板“資料分析”

MySQL,作為最為流行的一款開源資料庫,已經得到非常廣泛地使用。從最新的db-engines指數可以看出,其在資料庫領域中佔據了重要的位置。

但作為一款如此流行的資料庫產品,其存在一個明顯的短板就是資料分析。相信MySQL使用者都有這種感覺,在大規模資料情況下MySQL有些力不從心。儘管其核心也在不斷加強這方面的能力(如最新8.0支援hash join、直方圖等),但相較於其他資料庫仍然存在一定劣勢。其核心在於MySQL原生是為OLTP場景設計的,並沒有考慮OLAP場景。

雖然也有一些廠商透過擴充套件其儲存引擎,增強其資料分析能力,但總體來講還是不盡如人意。於是,通常的一種選擇就是在資料分析時,不得不將資料遷移到另一種資料庫/大資料架構中。通過後者,去完成資料分析工作。在這一過程中,需要開發者自己定義ETL邏輯(可能基於日誌解析或邏輯資料抽取),完成資料遷移。同時,在執行中需時刻關注資料同步,保證資料有效性。在使用上,還需編寫單獨的語句(異構資料來源的語句),來完成資料分析動作。

整個這一過程,無疑對使用者來說具有一定的使用門檻,且需要花費額外的精力去解決這一問題。相信Oracle原廠也是看到這一問題,因而推出了MySQL Analytics Engine。

二、MAE到底是個啥?

MySQL Analytics Engine(簡稱MAE),籠統來說是一款內建的分析引擎。透過它與MySQL Database的組合,可以使得資料庫管理員和應用程式開發人員能夠直接將MySQL資料庫作為OLTP和OLAP工作負載的統一服務。其提供的“MySQL Database Service with Analytics Engine”,是由一個MySQL DB例項和多個分析節點組成。當分析功能被啟用時,分析服務將被安裝在DB例項上,其負責叢集管理、資料載入、查詢執行等。從使用者角度來看,可以透過標準的MySQL JDBC/ODBC Connector來連線使用。下面我們詳細展開看看。

首先從整體使用來看,對外提供統一的MySQL Database Service。使用者仍然是透過傳統的方式去使用它,無論是OLTP還是OLAP場景。在這個服務的內部,是包括了傳統的OLTP引擎和新的Analytics引擎。在資料上,也是存在兩份。前者仍然儲存在例如InnoDB這樣的儲存引擎之中,後者則儲存在一組節點構成叢集的記憶體之中。正常事務操作帶來的資料變化,會透明地傳播到後面的分析叢集中,以加速分析處理。這樣就使得客戶可以在單個數據庫平臺上同時執行OLTP和OLAP工作負載。簡言之,就是兩個計算引擎、兩份資料儲存。

MAE的核心工作思想就是“化大為小”,透過分割槽機制,將資料打散後利用獨立的CPU資源進行處理。處理後的結果統一返回。

在MAE內部,由多個分析節點組成。其具體節點數量,可由MySQL分析引擎提供的自動配置顧問自動獲得。在節點中,資料以一種混合列壓縮的格式儲存。這有助於向量化處理,從而獲得非常好的查詢效能。資料在記憶體中執行之前被編碼和壓縮。這種壓縮和最佳化的記憶體使用,對於數值和字串資料尤為顯著,可提高效能並減少記憶體佔用,從而為客戶降低成本。同時在每個節點中使用並行操作技術,這為分析提供了高快取命中率,並提供良好的節點間可伸縮性。叢集內的每個分析節點和節點內的每個核心都可以並行處理分割槽資料,包括並行掃描、連線、分組、聚合和top-k處理。

MySQL分析引擎為分散式記憶體分析處理實現了最新的演算法。透過使用向量化的構建和探測連線核心,可以快速處理分割槽內的連線。透過使用非同步批處理I/O,優化了分析節點之間的網路通訊。演算法的設計是為了使計算時間與跨節點的資料通訊重疊,這有助於實現良好的可伸縮性。

MySQL分析引擎與MySQL資料庫服務的整合為企業的所有OLTP和分析需求提供了一個單一的資料管理平臺。MySQL分析引擎被設計成一個MySQL可插拔儲存引擎,它完全遮蔽了儲存層的所有底層實現細節,不讓終端使用者看到。使用者和應用程式透過叢集中的MySQL資料庫節點與MySQL分析互動。使用者透過標準工具和基於標準的ODBC/JDBC聯結器連線到MySQL分析引擎。

MySQL分析引擎支援與MySQL相同的ANSI SQL標準和ACID屬性,並支援不同的資料型別。這使得現有的應用程式無需對其應用程式進行任何更改就可以利用MySQL分析引擎,從而實現簡單快速的整合。一旦使用者向MySQL資料庫提交查詢,MySQL查詢最佳化器就會透明地決定是否將查詢解除安裝到分析叢集以加速執行。這是基於MySQL分析引擎是否支援查詢中引用的所有運算子和函式並且使用分析引擎處理查詢的估計時間比在MySQL中更少時,查詢將被下推到分析節點進行處理。處理之後,結果被髮送回MySQL資料庫節點並返回給使用者。

由於MySQL分析引擎是一個記憶體處理引擎,資料被持久化到MySQL InnoDB儲存引擎中。對錶的任何更新都會自動實時地傳播到分析節點的記憶體中。這使得後續查詢始終能夠訪問最新的資料。這是透過一個輕量級的更改傳播演算法在後臺完成的,該演算法可以跟上MySQL的資料更新率。同步原理未說明?

三、MAE能為我們帶來什麼?

從產品角度來看,MySQL Analytics Engine是一種雲原生服務,專門在Oracle雲基礎設施中提供,為分析工作負載提供了令人信服的效能和成本。使用MySQL資料庫管理企業資料的組織現在可以使用MySQL分析引擎執行分析查詢,效能顯著提高,成本更低,不需要ETL,並且支援實時分析。該服務可以只部署在雲中,也可以部署在混合環境中,它簡化了事務和分析應用程式的管理。從其推出產品上,可歸納為以下幾個理念:

ONE DB

這一產品最核心價值點就是統一處理場景。之前MySQL的在處理混合業務場景是不得不使用下面方式(如下圖):

透過引入MAE,增強MySQL能力,達到統一效果。

ONE SQL

第二個價值點在於,不僅僅是統一平臺,而且使用同樣的互動方式。原有的邏輯,不需要做任何的改變。無論是前端的事務交易場景,還是後端的資料視覺化分析,均不需要做改變。這無疑對使用者的吸引力很大,可以有效保護使用者的已有軟體資產。

NO ETL

對使用者來說,不在需要關心資料同步的細節,不需要編寫額外的ETL作業。這將大大減少使用者的負擔。

NO TUNING

在MAE之前,使用者如果想解決資料分析問題,無外乎兩種。要麼在庫內解決,要麼在庫外解決。在庫內解決的話,需要對MySQL做大量的最佳化工作或者採取針對分析場景的儲存引擎,這些都帶來了最佳化的工作量。對於庫外方案同樣如此,使用者需要自己完成最佳化工作。

而使用MAE則不需要顧慮這點。其利用了Oracle實驗室開發的自動機器學習(AutoML)功能來自動化服務的各個方面。由於這種自動化是基於機器學習的,系統可以智慧地預測各種場景並採取行動,包括自動估算工作負載所需的分析節點數量。

當服務啟動時,需要將執行分析查詢的資料庫表載入到MySQL分析叢集記憶體中。所需叢集的大小取決於載入所需的表和列,以及此資料在記憶體中實現的壓縮。在傳統的配置中,使用者需要猜測叢集的大小。由於空間限制,低估會導致資料載入或查詢執行失敗。高估會導致不必要資源的額外成本。因此,使用者會不斷迭代,直到確定正確的叢集大小,當更新表時,這種大小估計就會變得不準確。而MAE則可自動完成上述過程。

HIGH PERFORMANCE

MAE作為一種分散式、可伸縮、記憶體型、混合列式查詢引擎,其透過記憶體中的向量化處理及大規模節點間和節點內並行處理來極速效能。同時查詢處理已針對Oracle雲基礎設施做了最佳化,包括節點間網路頻寬最佳化等。透過上述能力,MAE提供了強大的分析能力。下面是針對其主要競品的效能對比。

MySQL Analytics vs MySQLMySQL Analytics vs Amazon AuroraMySQL Analytics vs Amazon Redshift

LOW COST

使用帶有分析引擎的MySQL資料庫服務的成本取決於配置的分析節點的數量。分析叢集的大小取決於資料集的大小和工作負載的特性。一個分析節點可以容納大約400GB的資料。當客戶使用Analytics Engine遷移到MySQL資料庫服務時,他們的成本有望大幅降低。與Amazon Aurora和Redshift相比,MySQL分析引擎的成本是其成本的1/3。

EASY SCALE

MAE目前在一個叢集中支援最多24個分析節點(上千個Core),處理能力約為10 TB的分析資料。10TB是在給定時刻可以填充到分析節點記憶體中的大約資料量。MySQL資料庫中儲存的資料量沒有限制,客戶可以選擇從MySQL資料庫模式中載入哪些表或列到分析節點的記憶體中。如果查詢不再需要這些表,使用者可以從記憶體中刪除這些表,為其他資料騰出空間。

EASY USE

MAE將大量細節隱藏在後面,對於前端客戶來講使用非常簡單。只需要根據推薦大小配置分析叢集、配置預加速查詢的物件、手工完成第一次載入。後面即可享受到分析叢集帶來的加速能力。

透過檢視執行計劃,可以直觀看出是否使用了分析叢集(下圖中的Using secondary engine RAPID)

此外,針對混合雲場景(即無法將資料部署到雲端的客戶),可以利用MySQL複製將本地MySQL資料複製到MySQL分析引擎,同樣不需要ETL。目前MAE僅在Oracle Cloud Infrastructure (OCI) Gen 2 hardware 平臺提供。

寫在最後

MAE的出現,很好地彌補了MySQL原生在資料分析場景的短板。相信,這一特性將更加擴大MySQL的使用範圍,為其在更大規模、更為重要的企業化應用鋪平道路。比較遺憾的是,MAE目前僅能在OCI中使用,目前國內的廣大線下使用者還無法使用。

9
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 編譯busybox錯誤彙總