ER模型是實體關系模型,基本元素是實體、關系和屬性,Mycat 針對ER關系表的切分規則中,使得有相互依賴的表能夠按照某一個規則切分到相同的節點上,避免垮庫 Join 關系查詢,下面的示例為訂單(order)和訂單明細(order_detail),明細表依賴於訂單,這總業務的切分可以設計出合適的切分規則,比如根據用戶ID切分,可以抽象出父子關系的表都可以使用ER分片表。訂單表(order)和訂單明細表(order_detail)通過 order_id 進行數據切片,保證相同的 order_id 數據分切到同一個分片中,在進行數據插入時,Mycat 會獲取 order 所在的分片,然后將 order_detail 也插入到 order 所在的分片,配置如下:
<table name="order" dataNode="dn$1-32" rule="mod-long">
<childTable name="order_detail" primaryKey="id" joinKey="order_id" parentKey="order_id"/>
</table>
注意:其中 joinKey 的 order_id 是 order_detail 表的字段,parentKey 的 order_id 是 order 表的字段