本文講述的數據庫讀寫分離的實現方式,是基於前述“數據庫的負載均衡”這篇文章的內容發展而來,請先對其閱讀參考。
在某些大型應用系統中,往往需要把數據庫的“讀操作”與“寫操作”分為兩個數據庫(甚至兩組數據庫)分開操作,以達到讀寫分離的目的。
要實現數據庫的讀寫分離,只需在前述“數據庫的負載均衡“這篇文章的內容上做兩點修改即可實現:
一是在DeveloperSharp.xml配置文件中設置兩個DatabaseCluster節點分別對應“讀數據庫”與“寫數據庫”。
二是建立兩個“負載均衡器”類分別對應“讀的DatabaseCluster節點”與“寫的DatabaseCluster節點”。
舉例如下,我們在數據庫服務器中創建一個BaseRead數據庫專門用作讀操作,然后再創建一個BaseWrite數據庫專門用作寫操作。隨后,我們的DeveloperSharp.xml配置文件則修改為如下:
<?xml version="1.0" encoding="utf-8" ?> <DeveloperSharp> <DatabaseClusterList> <DatabaseCluster Id="BRead"> <Database Id="A1" Enable="true" Weight="100" DatabaseType="SqlServer" ConnectionString="Server=localhost;Database=BaseRead;Uid=sa;Pwd=123"/> </DatabaseCluster> <DatabaseCluster Id="BWrite"> <Database Id="B1" Enable="true" Weight="100" DatabaseType="SqlServer" ConnectionString="Server=localhost;Database=BaseWrite;Uid=sa;Pwd=123"/> </DatabaseCluster> </DatabaseClusterList> </DeveloperSharp>
注意,其中兩個DatabaseCluster節點的Id屬性值分別為BRead與BWrite。
接着,我們再創建兩個“負載均衡器”類(Base4Read與Base4Write)分別對應BRead與BWrite。如下所示:
[DeveloperSharp.Structure.Model.LoadBalance.DataSourceCluster("BRead")] public class Base4Read : DeveloperSharp.Structure.Model.DataLayer { //類中沒有任何代碼 } [DeveloperSharp.Structure.Model.LoadBalance.DataSourceCluster("BWrite")] public class Base4Write : DeveloperSharp.Structure.Model.DataLayer { //類中沒有任何代碼 }
此后,我們只需在相關程序代碼中區分使用Base4Read與Base4Write這兩個類,即可靈活實現數據庫的讀寫分離。
【本文采用.NET/C#語言撰寫,如需其它語言版本,請聯系作者索取。】
【本文采用Sql Server數據庫撰寫,如需其它數據庫版本,請聯系作者索取。】