场景

  • 原因
    • 当有关联的数据存储在不同的分片时,就会遇到表连接的问题
    • 在 Mycat 中是不允许跨分片做表连接查询
  • 解决
    • 为了解决跨分片表连接的问题,Mycat 提出了父子表这种解决方案

特点

  • 父子表规定父表可以有任意的切分算法,但与之关联的子表不允许有切分算法,即子表的数据总是与父表的数据存储在一个分片

配置

  • schema.xml

    1. <schema name="test" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1">
    2. <table name="t_customer" dataNode="dn1,dn2" rule="sharding-by-areafile">
    3. <!-- 配置子表, 可以配置多个 -->
    4. <!--
    5. joinKey属性:定义子表中用于关联父表的列
    6. parentKey属性:定义父表中被关联的列
    7. childTable标签内还可以继续添加childTable标签
    8. -->
    9. <childTable name="t_orders" joinKey="customer_id" parentKey="id"/>
    10. </table>
    11. </schema>