Mysql 數據庫中間件

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

分庫分表:數據庫

水平分區:分表服務器

垂直分區:分庫架構

 

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

 

垂直分庫在「微服務」盛行的今天已經很是普及了。基本的思路就是按照業務模塊來劃分出不一樣的數據庫,而不是像早期同樣將全部的數據表都放到同一個數據庫中。以下圖:性能

oneProxy分庫分表總結:優化

中間件或架構層中一部分是爲了解決應用之間的通訊及服務治理,另外一部份是爲了解決數據的分佈問題。至關因而將前面例子中講的分區表裏的每個分區分別移到一臺不一樣的硬件服務器上,而讓應用的開發基本感知不到或者能少作調整就能適應這種擴展,原理很是相似於分區表,但稱之爲分庫分表。3d

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

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

相關文章
相關標籤/搜索