ER表分片策略详解
1. E-R关系分片原理
Mycat的E-R关系分片策略是基于数据库实体关系模型设计的创新方案。核心思想是将存在关联关系的父表和子表的数据存储在同一个数据分片中。
2. 表分组机制
- 将具有关联关系的多张表划分到同一个逻辑组
- 保证相关联的数据行始终位于同一个物理节点
3. 典型应用场景
- 订单-订单明细场景:订单表作为父表,订单明细表作为子表
- 用户-用户扩展信息场景
- 商品-商品分类场景
4. 配置示例
<table name="orders" primaryKey="order_id" dataNode="dn1,dn2" rule="mod-long">
<childTable name="order_items" joinKey="order_id" parentKey="order_id"/>
</table>
5. 优势分析
- 查询性能提升:关联查询无需跨节点执行
- 事务简化:相关表的操作可以在同一节点完成
- 数据一致性:避免分布式事务带来的复杂性
全局表
概念与定义
全局表是分布式数据库系统中一种特殊的数据表类型,主要用于存储字典数据或配置数据。
典型特征
- 数据变更频率低:更新操作极少
- 数据规模稳定:记录数量基本保持恒定
- 数据量适中:单表数据量通常不超过100MB
解决方案
Mycat采用数据冗余机制处理字典表关联查询:
- 所有分片都保存完整的全局表数据副本
- 任何更新操作都会同步到所有分片
设计原则
- 识别标准:数据变更周期大于1个月,记录数小于10万条
- 实现注意事项:需要配置自动同步机制
- 性能优化建议:对全局表建立合适的索引
分片节点
分片节点是指将原单一数据库表按照特定规则进行水平切分后,各数据分片实际存储的数据库实例。
- 分片机制:数据行根据预设的分片规则被分配到不同的物理数据库中
- 节点特性:每个分片节点都是一个完整的数据库实例
- 典型部署场景:电商系统订单表按用户ID分片
节点主机
节点主机是指承载一个或多个分片节点的物理服务器或虚拟机。
- 分片与主机的对应关系:一个节点主机可以运行多个分片实例
- 并发限制问题:当多个高负载分片集中在同一主机时,容易造成资源瓶颈
- 负载均衡策略:分片分布、读写分离、权重分配
分片规则
分片规则的重要性
- 数据均匀分布:好的分片规则能确保数据在各个分片节点上均匀分布
- 查询效率优化:合理的分片规则可以减少跨分片查询
- 扩展性保障:当需要扩容时,好的分片规则能支持平滑扩容
常见分片规则类型
- 哈希分片:对分片键进行哈希计算,根据哈希值决定数据分布
- 范围分片:按照数值范围进行分片
- 列表分片:按照枚举值进行分片
- 复合分片:组合多种分片策略