1. 程式人生 > >Mysql 數據庫中間件

Mysql 數據庫中間件

就是 數據表 分庫分表 一個數 部分 智能路由 單表 對數 通過

  讀寫分離:簡單的說是把對數據庫讀和寫的操作分開對應不同的數據庫服務器,這樣能有效地減輕數據庫壓力,也能減輕io壓力。主數據庫提供寫操作,從數據庫提供讀操作,其實在很多系統中,主要是讀的操作。當主數據庫進行寫操作時,數據要同步到從的數據庫,這樣才能有效保證數據庫完整性。

技術分享圖片

分庫分表:

水平分區:分表

垂直分區:分庫

  水平分表也稱為橫向分表,比較容易理解,就是將表中不同的數據行按照一定規律分布到不同的數據庫表中(這些表保存在同一個數據庫中),這樣來降低單表數據量,優化查詢性能。最常見的方式就是通過主鍵或者時間等字段進行Hash和取模後拆分。如下圖所示:

技術分享圖片

技術分享圖片

垂直分庫在“微服務”盛行的今天已經非常普及了。基本的思路就是按照業務模塊來劃分出不同的數據庫,而不是像早期一樣將所有的數據表都放到同一個數據庫中。如下圖:

技術分享圖片

oneProxy分庫分表總結:

技術分享圖片

中間件或架構層中一部分是為了解決應用之間的通信及服務治理,另一部份是為了解決數據的分布問題。相當於是將前面例子中講的分區表裏的每一個分區分別移到一臺不同的硬件服務器上,而讓應用的開發基本感知不到或者能少做調整就能適應這種擴展,原理非常類似於分區表,但稱之為分庫分表。

OneProxy將分區表的概念從數據庫層抽象到SQL轉發器層,然後對通信協議進行分析,可根據SQL裏的表名及傳入參數進行對上層應用透明的智能路由,從而達到虛擬分區表的效果,也就實現了對應用透明的分庫分表的功能。

在OneProxy裏同樣支持按範圍(Range)、按值(List)、按哈希算法(Hash)進行虛擬分庫分表

Mysql 數據庫中間件