在实际的业务中,有些表中的数据非常稳定,几乎不会发生更新,比如用来存储行政区划数据,或者国家地区数据,这些数据稳定的表,也被称为字典表。
字典表的特征:
那么在实现了分片的情况时,对业务数据进行分片后,业务表与这些字典表之间如果需要进行关联查询,此时就成为了一个亟需解决的问题。
为了解决上述问题,在Mycat中引入了全局表。
全局表在mycat中的特征:
通过全局表以上特征,不难看出,通过全局表的使用,也能很好的解决分片数据在查询中遇到的 JOIN 难题。通过全局表和ER表的分片策略,可以解决工作中遇到的绝大多数问题。
在 schema.xml 中配置全局表信息。
在 xml 文件中 schema 节点下增加如下一行配置信息:
<table name="dict_order_type" dataNode="dn1,dn2" type="global">\</table>
配置信息中
修改后的配置文件如下
mycat restart
因为在配置中定义的字典表 dict_order_type 之前不存在,现在需要把它创建出来。
登录到mycat数据端口
mysql -uroot -p123456 -h192.168.137.3 -P8066
选择 TESTDB 数据库
use TESTDB;
创建字典表
create table dict_order_type(id int auto_increment primary key, order_type varchar(200));
在mycat中创建该表后,将在两个节点中同时创建出该表。
注意:
由mycat创建的数据表,在mysql中表名为全大写。在查询时,表名也需要全大写,否则查询报错。
mycat中的数据表
dn1中的数据表
dn2中的数据表
在mycat中执行数据插入操作
insert into DICT_ORDER_TYPE values(1, "Order");
insert into DICT_ORDER_TYPE values(2, "Refund");
插入后,进行查询
在mycat中的查询结果
dn1中的查询结果
dn2中的查询结果
可以发现,作为全局表,它的数据将被插入到配置文件中配置的所有分片中。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。