Mycat_全局表

Mycat_全局表开发目的、使用场景:

在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,考虑到字典表具有以下几个特性:

    变动不频繁

    数据量总体变化不大

    数据规模不大,很少有超过数十万条记录。

 

鉴于此,MyCAT 定义了一种特殊的表,称之为“全局表”,全局表具有以下特性:

    插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性

    查询操作,只从一个节点获取

    可以跟任何一个表进行 JOIN 操作

 

MyCAT 可以满足 80%以上的企业应用开发。全局表有点类似于RAID 1,写的时候多份写入,读的时候从任意节点读取即可。

Mycat全局表的配置

全局表配置比较简单,不用写 Rule 规则,修改schema.xml即可。

注意:全局表每个分片节点上都会运行创建表的 DDL 语句。

 

Schema.xml

<?xml version="1.0"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema xmlns:mycat="http://io.mycat/">

<schema name="TESTDB"  checkSQLschema="true" sqlMaxLimit="100">

<!--全局表设置,不需要设置分片格式-->

<table name="t_test1" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3"   />

</schema>

<dataNode name="dn1" dataHost="localhost1" database="db1" />

<dataNode name="dn2" dataHost="localhost1" database="db2" />

<dataNode name="dn3" dataHost="localhost1" database="db3" />

<!--设置读写一体的数据库-->

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"

  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<writeHost host="hostM1" url="localhost:3306" user="root"

   password="123456">

</writeHost>

</dataHost>

</mycat:schema>

posted @ 2020-04-13 13:22  啄木鸟chens  阅读(183)  评论(0编辑  收藏  举报