全局表

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

  1.   变动不频繁
  2.   数据量总体变化不大
  3.   数据规模不大,很少有超过数十万条记录。   

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

  1.    全局表的插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性
  2.    全局表的查询操作,只从一个节点获取
  3.     全局表可以跟任何一个表进行 JOIN 操作

全局表配置(配置所有可能用到节点)

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

全局表说明
 1、准对Select操作,mycat会随机现在一个节点输出结果内容;
    2、准对Insert-Update-Delete操作,Mycat会操作所有节点

E-R分片表

也称为父子表,主外键关联表;处理存在2种请求对应关系。

1、父表的分片字段是子表的外键字段:

  这种情况下,父表通过分片字段查询能很快定位到数据库的位置提高查询性能;子表通过父表ID也能很快定位到分片服务器数据库地址;

<table name="ORDER1" primaryKey="ID" dataNode="dn1,dn2" rule="mod-long">
<childTable name="ORDER_DETAIL" primaryKey="ID" joinKey="ORDER_ID" parentKey="ID" />
</table>

2、父表的分片字段不是子表的外键字段:

这种情况下,父表通过分片字段查询能很快定位到数据库的位置提高查询性能;子表通过父表ID查询时,Mycat将遍历所有节点数据,实现数据查询;

<table name="ORDER2" primaryKey="ID" dataNode="dn1,dn2" rule="province-str">
<childTable name="ORDER_DETAIL2" primaryKey="ID" joinKey="ORDER_ID" parentKey="ID" />
</table>
05-12 01:14