Polardb 如何替換MYSQL 之 IMCI 列式攻略

張哥說技術發表於2023-03-01


MYSQL 是ORACLE 後面經常被提到要替換的資料庫,MYSQL 為什麼要被替換,嗯這點是一言難盡,但是可以說明的是,替換MYSQL 的資料庫型別還蠻多的, 今天要說明的就是POALRDB FOR  MYSQL 的一個特性,列式儲存。
我們都知道MYSQL即使目前的MYSQL 8.030 或更高的版本在處理OLAP 輕量級的情況下,還不是一個好的選擇,對比其他的資料庫POSTGRESQL 在OLAP 處理上是無法進行比較的,而MYSQL 的被替換的問題,不光是線上下,線上上也是火熱一片。POLARDB 作為阿里雲的當家花旦,替換MYSQL已經是雲上上了阿里雲的一段佳話。
從成本的角度,從使用的擴充套件性,以及安全性等等等等,MYSQL RDS 都是弟弟。今天要說的是POALRDB for MYSQL的另一個打擊MYSQL RDS 的資料引擎,IMCI, 透過IMCI 可以將POLARDB FOR MYSQL 從OLTP 變為OLTP + OLAP 的 HTAP 系統,簡言之MYSQL 最大的缺點將不在存在。
首先需要了解的,如MYSQL + CLICKHOUSE 雖然是解決線下MYSQL OLTP+OLAP的一套方案,但是缺點也是有的,如這樣的方案是後備式的,不是線上式的。
因為POALRDB 本身就是新一代基於雲廠商硬體基礎上研製的資料庫產品,他整體拋棄了MYSQL 的設計方式,舉例
1  POALRDB 的優點之一就是 POALRDB 的 PROXY ,這套PROXY 可以將你的語句直接分發到 寫節點,或讀節點,或列式節點,根據最佳化器產生的語句的COST 來將你的語句一分為三。同時CBO 最佳化器同時面向行 列存根據COST 選擇語句的具體計算物件。
2  POLARDB 的優點之二,就是 shared storage ,即使加了列式 IMCI 也是一套儲存,那麼一套儲存的優點非常多,資料的同步過程省去了,資料的一致性更能保證,避免了 PAXOS RAFT 協議在一些  shared nothing 方面的弊病(其實就是效能問題),並且在硬體底層進行了分散式寫的設計,從硬體解決了資料的安全性的問題
Polardb   如何替換MYSQL 之 IMCI 列式攻略
3  結果的匯聚,一條語句,多重處理方式,最終你卻在一個位置獲得資料的結果,這是POALRDB 的優點之三。
最終讓你用起來和MYSQL一樣一樣一樣的,但是那些MYSQL的問題又都消失了。(不需要SQL的重寫或人工改變)
Interesting !!!!!!!
Polardb   如何替換MYSQL 之 IMCI 列式攻略
除此以外 POLARDB FOR MYSQL 的IMIC 解決方案還可以成為單獨的OLAP的解決方案。透過節點與代理之間的關係的調整,IMIC 節點很容易成為一個單獨面對OLAP 場景下的資料節點,可狼 可奶。

Polardb   如何替換MYSQL 之 IMCI 列式攻略
說完了好的,的說說一些限制和我們已經知道的問題。
首先說資料庫智慧的那幫子東西,不要輕易信他們,資料庫是一個動態變化的產品,而不是和其他的非資料庫部分是靜態的,靜態的東西好管理,動態的,有業務邏輯契合的東西是不好管理的。你設定的一些固定的東西,不知道在什麼時間就被打破了,打破了,其他的好說,資料庫就可能產生各種各樣的問題。
列式的部分也是這樣,雖然很好也有自己的問題
1  對於語句的一些問題,是無法使用列式的情況,如子查詢中出現 group by , order by 的情況,是無法進行列式引擎的資料處理的。
2  CTE 通用表示式中,進行遞迴查詢的是無法進行列式儲存IMCI的查詢的(這點是可以理解的)
3  子查詢中出現 JOIN 的語法
4   子查詢中出現LIMIT 的字句
5   子查詢中出現了視窗函式
6   子查詢中出現了UNION 的部分

除此以外,一些特殊的表示式等出現在語句中也是無法進行處理的
1  REGEXP 查詢模式是無法進行了, like 部分也是無法進行列式查詢的。
2  一些特殊的函式部分,如聚合函式 JSON 類的是無進行列式處理的
3   加密與壓縮演算法類的函式

當然這個解決方案目前我們預估可能存在的一些問題,也的說明一下,因為這個IMCI 是在去年上線的新功能,所以還需要一些更多的使用者來進行使用並總結經驗。

問題1 :使用者需要更多的資料庫知識,因為在列式節點載入後,是需要人工來進行表和列的確認,並自行進行索引的新增的。這點就需要更有相關業務知識和語句最佳化方面知識的DB 人員來進行專業的操作,而不是建立好列式就可以直接工作了,
建議需要進行壓測,並將目前在系統中執行部良好的,適合列式的語句挑選出來,然後進行新增列存,在壓測後檢視相關的最佳化的結果。

問題2 :列式調優引數多,需要一定時間一定經驗去調整,並且可能是反覆調整。loose_imci_optimizer_switch  ,loose_imci_auto_update_statistic,loose_imci_max_enum_join_pairs 。

目前我們對於列存方面還在測試階段,還在磨合,後面有更多的關於列存在POALRDB 的使用的問題和經驗會繼續分享。 

總結:POALRDB FOR MYSQL 給了使用MYSQL 的開發一個新的資料庫模式,一個可以嘗試將MYSQL 的問題儘量移除,更強大的"MYSQL"

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024923/viewspace-2937603/,如需轉載,請註明出處,否則將追究法律責任。

相關文章