数据库的读写分离

(请在电脑上打开页面,会获取更好的阅读效果)

 

本文讲述的数据库读写分离的实现方式,是基于前述“数据库的负载均衡”这篇文章的内容发展而来,请先对其阅读参考。

 

在某些大型应用系统中,往往需要把数据库的“读操作”与“写操作”分为两个数据库(甚至两组数据库)分开操作,以达到读写分离的目的。

要实现数据库的读写分离,只需在前述“数据库的负载均衡“这篇文章的内容上做两点修改即可实现:

一是在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属性值分别为BReadBWrite

 

 

接着,我们再创建两个“负载均衡器”类(Base4ReadBase4Write)分别对应BReadBWrite。如下所示:

    [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

    {

        //类中没有任何代码

    }

 

此后,我们只需在相关程序代码中区分使用Base4ReadBase4Write这两个类,即可灵活实现数据库的读写分离。