您好,登錄后才能下訂單哦!
前言
DDM是什么?這是華為云Paas推出的分布式數據庫中間件,DDM(Distributed Database Middleware)是一個實現了Mysql協議棧的服務器,前端用戶可以把它看做一個數據庫代理,用Mysql客戶端工具和命令行訪問,而DDM后端連接一到多個Mysql Server。因此,DDM本身并不存儲數據,數據是在后端連接的Mysql Server上存儲的。簡單來說,DDM就是Mysql的最佳伴侶,一定程度上讓Mysql擁有了跟Oracle PK的能力。這樣聽起來DDM好像是Mysql的輔助大神,這里有必要對八卦下DDM發展背景,了解下DDM的前世歷程。
NoSQL與SQL之爭
目前,互聯網常有海量數據高并發和存儲的場景,對于數據的存儲,目前有基于SQL (Structured Query Language)的關系型數據庫和NoSQL(Not Only SQL)的非關系型數據庫。SQL數據存在特定結構的表中;而NoSQL則更加靈活和可擴展,存儲方式可以是JSON文檔、哈希表或者其他方式,比如鍵值存儲(redis,ROMA,Memcached)數據庫應用在排行更新,會話保存,面向文檔的數據庫(mongoDB、couchDB)應用在日志記錄,面向列的數據庫(Cassandra、HBase)在博客中的應用。而且速度極高。
雖然在云計算時代,傳統數據庫存在著先天性的弊端,但是NoSQL數據庫只能在特定場景下有奇效,只能作為傳統數據的補充而不能將其替代。
關系型數據庫性能瓶頸
目前絕大多數數據庫不具備自動擴展,自動遷移的能力,對于單庫單表性能瓶頸明顯,當單表超過1000W數據量,性能會出現比較明顯的下降。為了解決該難題,常見的做法就是進行分庫分表來規避。
垂直分庫:可按照業務模塊進行劃分,把數據分在不同的庫中。
水平分庫:我們發現某些表的數據量已經超過1000W,QPS顯著下降,這里可以對這種表進行進一步水平拆分,做成多個分片表。大多數電商企業會按照日期分片,但又衍生出來一些問題,在固定時段中對某個分片壓力很大,其他分片此時處于空閑狀態,在電商企業高并發的場景下,會產生大量數據,此時又產生短時間內單庫QPS瓶頸的問題。
拆分規則優化:可以根據拆分字段,進行取模的方式來做到數據大致平均分布到多個分片上。可以保證整體系統的QPS得到提升,但又衍生出來一些問題:分片數量不夠需要擴容的問題,跨分片事務一致性無法保證的問題。
數據庫中間件
為了減少對應用的侵入性,并且要將壓力打在中間件上,該中間件負責和上層應用打交道,對應用可表現為一個獨立的數據庫,而屏蔽底層復雜的系統細節。分布式數據庫中間件除了基本的分表分庫功能,還可以豐富一下,比如講讀寫分離或者水平擴容功能集成在一起,或者比如讀寫分離本身也可以作為一個獨立的中間件。(DDM,Cobar,MyCAT, TDDL等)。
上述提到的分片數量不夠的擴容以及分布式事務一致性的問題,在華為云的DDM已經得到解決,并且中間件的功能在不斷豐富,已經成為高并發應用的絕對利器。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。