问一人读写分离的老问题:我们可以采用很多技术来实现一台主服务器和多台从服务器数据一致;并用主服务器处理增,删,改的动作;而用从服务器处理查询的动作。现在我有一个问题,在应用程式层发来一个对数据库操作的请求,用什么方法来实现把增,删,改的操作分给主服务器;而查询的操作分发给从服务器!!服务器mssql数据库技术应用

解决方案 »

  1.   

    如果时间差要求比较严格,只能部署SQL SERVER 2012 ALWAYSON
      

  2.   

    最近有研究AMOEBA FOR MSSQL;遇到一个问题,相关的环境都已架好,所有配置都与网上提供的一样,只是网上只有amoeba for mysql. 但测试时有一个怪现象。如增删改查语句显示指定数据库名访问的是主数据库(如:select * from DBA.dbo.tt);没有指定数据库名访问的是从数据库(如:select * from dbo.tt)。
    --配置文件dbServers.xml:
    <dbServer name="Master" parent="abstractServer">
    ...
    <property name="url">jdbc:sqlserver//10.0.6.121:1433;DatabaseName=DBA</property>
    ....
    </dbServer><dbServer name="Slvae1" parent="abstractServer">
    ...
    <property name="url">jdbc:sqlserver//10.0.6.124:1433;DatabaseName=DBA</property>
    ....
    </dbServer><dbServer name="Slave2" parent="abstractServer">
    ...
    <property name="url">jdbc:sqlserver//10.0.6.128:1433;DatabaseName=DBA</property>
    ....
    </dbServer><dbServer name="ReadPool" virtual="true">
      <poolconfig class="com.meidusa.amoeba.server.MultipleServerPool">
      <property name="localbalance">1</propery>
      <property name="poolNames">Slave1,Slave2</perporty>
    </poolconfig>
    </dbservers>amoeba.xml:
    <property name="defaultPool">Master</perporty>
    <property name="writepool">Master</perporty>
    <property name="readpool">ReadPool</perporty>rule.xml:
    <tableRule name="*" schema="dbo" defaultPools="ReadPool"
      

  3.   

    以ADO为例,前端程序中,可创建2个ADODB.Connection对象,分别连接主服务器和从服务器.
     当是增删改操作时,用主服务器的连接对象.
     当是查询操作时(如报表),用从服务器的连接对象.