1. 程式人生 > >分布式數據庫中間件的實現原理介紹一:分庫分表【轉】

分布式數據庫中間件的實現原理介紹一:分庫分表【轉】

介紹 com CA 擴展 png HA 不同 訂單號 order

聲明:本文並非原創,轉自華為雲幫助中心的分布式數據庫中間件(DDM)服務的產品介紹。

分片是解決數據庫存儲容量限制的直接途徑。分片包括垂直分片與水平分片兩種方式。

    • 垂直分片

      垂直分片又叫縱向分割,即以邏輯表為單位,把原有數據庫切分成多個數據庫。切分後不同的表存儲在不同的數據庫上。

      垂直分片與業務架構設計有密切的聯系。比如從業務領域對系統進行架構優化,分成多個子業務系統,各個子業務系統耦合度較低。子業務系統間以接口方式進行數據通信和數據交換。

      圖2 垂直分片示意圖
      技術分享圖片

      垂直拆分後業務清晰,拆分規則明確,系統之間容易整合與擴展。一般用於數據庫上層架構設計。

    • 水平分片

      水平分片又叫橫向分割,即以邏輯表中的數據行記錄為單位,把原有邏輯數據庫切分成多個物理數據庫分片,表數據記錄分布存儲在各個分片上。

      水平分片主要用業務架構無法繼續細分,而數據庫中單張表數據量太大,查詢性能下降的場景。通過水平分片,即解決單庫容量問題,同時提高並發查詢性能。

      圖3 水平分片示意圖
      技術分享圖片

      DDM實現了自動水平分片,應用無需關心某個數據該存儲在哪一塊分片上。

      對邏輯表水平分片需要依據一定的分片規則,例如一個訂單跟蹤系統(見圖3),我們選取訂單號(OrderId)作為拆分鍵,分別對“訂單流水表”、“訂單詳情表”以及“物流跟蹤表”進行水平拆分,拆分規則為對鍵值Hash後求模,則分片計算規則如下:

      H(Key(OrderId)) = Hash(Key(OrderId))%N

      其中,N表示一共有N個數據分片,H(Key(OrderId))表示該訂單經過訂單號Hash並求模後存儲的分片編號。

      圖4 分片後數據存儲示意圖
      技術分享圖片

分布式數據庫中間件的實現原理介紹一:分庫分表【轉】