數據庫架構

架構師之路

讀寫分離

一主多從,主從同步,讀寫分離,互聯網大部分業務讀多寫少,一般讀會先成爲性能瓶頸。讀寫分離解決讀寫高併發問題,有以下特點:

  • 簡單易操作
  • 線性提升讀性能
  • 消除讀寫鎖提升寫性能
  • 冗餘從庫實現讀高可用,寫依舊單點

石杉的架構筆記

水平切分

水平切分是爲了解決併發量高、數據量大的問題,具體方案是分庫或分表,建議分庫:

  • 分表公用一個庫,依然是一個數據庫文件,存在IO競爭
  • 分庫可遷移到不同的實例,性能更高,擴展性更好

水平切分解決數據量大的問題,一般按主鍵id的範圍或Hash值切分,有以下特點:

  • 多實例結構相同,共同組成全局數據,但互相獨立
  • 多實例線性提升寫性能

按範圍切分要求主鍵遞增,各實例間數據量不均、請求不均,優點是擴容簡單,Hash切分則剛好相反,擴容可能導致數據遷移。

水平切分主鍵/非主鍵查詢

水平切分非主鍵訪問,可建立非主鍵到主鍵的二級索引或索引外置,通過二次查詢查找數據,也可不用索引而通過基因法快速定位,參考

架構師之路1

架構師之路2

架構師之路3

架構師之路4

架構師之路5

跨庫分頁

架構師之路

全局唯一id

石杉機構

水平切分不能用分區表原因:
架構師之路

讀寫分離+水平切分

綜合兩者優點:

  • 線性提升讀性能
  • 線性提升寫性能

數據庫中間件

目前基本使用基於客戶端的sharding-jdbc或基於中間件服務的sharding-proxy

架構師之路

垂直切分

垂直切分多個實例結構不同,往往通過業務主鍵關聯構成全局數據。垂直切分降低了單庫數據量,進而降低磁盤IO提升吞吐量,一般與業務結合緊密:

  • 長度短,訪問頻率高放一起
  • 長度長,訪問頻率低放一起

列增加方案

架構師之路
架構師之路

版本號+通用ext列

架構師之路

  • 可隨時動態擴展屬性,遷移方便
  • ext無法索引

擴展行key-value

  • 一行變多行,不方便多列查詢

平滑擴容

架構師之路

架構師之路

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章