5.高性能資料庫叢集
1.高性能資料庫叢集:讀寫分離
讀寫分離的原理:
讀寫分離的基本原理是将資料庫讀寫操作分散到不同的節點上
讀寫分離的基本實作是:
資料庫伺服器搭建主從叢集 一主一從 一主多從都可以
資料庫主機負責讀寫操作 從機隻負責讀操作
資料庫主機通過複制将資料同步到從機 每台資料庫伺服器都存儲了所有的業務資料
業務伺服器将寫操作發送給資料庫主機 将讀操作發送給資料庫從機
存在問題:主從複制延遲
(例如:使用者剛剛完成注冊後 馬上登陸,業務伺服器會提示他還沒有注冊 而使用者剛剛才注冊)
解決主從複制延遲的方法有以下幾個:
1.寫操作後的讀操作指定發送給資料庫主伺服器
2.讀從機失敗後再讀一次主機
3.關鍵業務讀寫操作全部指向主機 非關鍵業務采用讀寫分離
配置設定機制:将讀寫操作區分開來 然後通路不同的資料庫伺服器一般有兩種方式:
程式代碼封裝和中間件封裝
程式代碼封裝:程式代碼封裝指的是在代碼中抽象一個資料通路層("中間層封裝")
實作讀寫操作分離和資料庫伺服器連接配接的管理,
中間件封裝:中間件封裝指的是獨立一套系統出來
實作讀寫操作分離和資料庫伺服器連接配接的管理
2.高性能資料庫叢集:分庫分表
業務分庫:業務分庫指的是按照業務子產品将資料分散到不同的資料庫伺服器
實行業務分庫後存在的問題:
1.join操作問題:
業務分庫後 原本在同一個資料庫中的表分散到不同的資料庫中
導緻無法使用SQL的join查詢。
2.事務問題:
原本在同一個資料庫中不同的表可以在同一事務中修改
業務分庫後 表被分散到不同的資料庫中 無法通過事務統一修改。
雖然一些資料庫廠商提供了一些分布式事務的解決方案(例如:MySQL的XA)
但是性能實在太低 與高性能存儲的目标是相違背的
3.成本問題
分表方式:垂直分表 水準分表