场景
- 原因
- 当有关联的数据存储在不同的分片时,就会遇到表连接的问题
- 在 Mycat 中是不允许跨分片做表连接查询的
- 解决
- 为了解决跨分片表连接的问题,Mycat 提出了父子表这种解决方案
特点
- 父子表规定父表可以有任意的切分算法,但与之关联的子表不允许有切分算法,即子表的数据总是与父表的数据存储在一个分片中
配置
schema.xml
<schema name="test" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1">
<table name="t_customer" dataNode="dn1,dn2" rule="sharding-by-areafile">
<!-- 配置子表, 可以配置多个 -->
<!--
joinKey属性:定义子表中用于关联父表的列
parentKey属性:定义父表中被关联的列
childTable标签内还可以继续添加childTable标签
-->
<childTable name="t_orders" joinKey="customer_id" parentKey="id"/>
</table>
</schema>