Sharding分片的话, 只需要一句话,就可以完成分片. 有以下两种写法,与表名关系或与实现类关联.
数据源有ds0,ds1; test_user总共有6个表, ds0是test_user0,test_user1,test_user2,另外三个在ds1. 分片键是id, 默认是根据id的值求余,余数的下标即可表的下标.
ShardingConfig.addShardingBean("test_user",new ShardingBean("ds[0..1].test_user[0..5]", "id"));
ShardingConfig.addShardingBean(TestMyUser.class,new ShardingBean("ds[0..1].test_my_user[0..5]", "id"));
1. 背景:为什么需要分库分表
1.1 互联网需求 3
1.2 分库分表的好处 4
1.2.1 分库的好处 4
1.2.2 分表的好处 4
1.3 分片后带来的挑战 4
1.4 目标 5
1.5 什么样的表需要进行分库分表 5
1.6 电商系统哪些表需要作分库分表 5
2. 分库分表种类 5
2.1 垂直分片 5
2.2 水平分片 6
2.3 分库分表种类介绍 6
2.3.1 只分表 7
2.3.2 只分库 7
2.3.3 分库分表 7
3. 基本概念 7
3.1 基本表 7
3.2 实际表 7
3.3 表下标(表后缀) 7
3.4 关联表(主表与从表) 8
3.5 广播表 8
3.6 单表 8
3.7 数据节点 8
3.8 完整的数据节点 8
4. 路由/映射:如何找到要操作的表 8
4.1 实际表的分布种类 8
4.2 分片键 9
4.2.1 分库键 9
4.2.2 分表键 9
4.2.3 分片键的选择 9
4.2.4 实践—用userid作为分表键的好处 10
4.3 分片算法及分片函数 10
4.4 默认分片函数及分片的自动化 10
4.5 强制指定分片路由 10
4.6 路由到的库与表种类 11
4.6.1 一库一表 11
4.6.2 一库多表 11
4.6.3 多库多表 11
4.6.4 全库全表 11
4.6.5 只指定表 11
4.6.6 只指定库 11
4.7 如何分片 12
4.7.1 SQL触发的分片 12
4.7.2 面向对象触发的分片 12
4.7.3 SQL分片与面向对象分片的异同 12
4.8 分片优化与应该避免的问题 12
4.8.1 引起全域查询 12
4.8.2 插入的数据必须要找到归属 12
4.9 主键(分布式唯一ID) 12
5. 分片流程与Sharding核心问题 12
5.1 Bee (JDBC部分)的转换流程 12
5.2 Bee Sharding分片流程 13
5.3 Sharding核心问题 14
5.3.1 改写SQL 14
5.3.2 结果合并 14
5.3.3 排序 14
5.3.4 分页 14
5.3.5 查询Json 15
6. Sharing最佳实践 15
6.1 表节点分布要有规律 15
6.2 配置简单方便 15
6.3 允许只有部分表分片 15
6.4 无侵入架构设计 15
6.5 分片透明化 15
6.6 示例 16
6.7 建议 16
7. Bee对分片的优化 16
7.1 对一库一表的优化 16
7.2 对一库多表的分页查询的优化 16
7.3 对路由结果是只指定表的优化 17
7.4 采用约定方式,简化逻辑 17