答:
-
使用shardingJDBC之前,需要手动分库分表,然后使用shardingJDBC对这个手动的分库分表进行操作
-
创建数据库lg_order, 模拟将订单表进行水平拆分, 创建两张表pay_order_1 与 pay_order_2,这两 张表是订单表拆分后的表,我们通过Sharding-Jdbc向订单表插入数据,按照一定的分片规则,主键 为偶数的落入pay_order_1表 ,为奇数的落入pay_order_2表, 再通过Sharding-Jdbc 进行查询
-
配置步骤:
-
定义数据源
-
指定pay_order 表的数据分布情况, 分布在 pay_order_1 和 pay_order_2
-
指定pay_order 表的主键生成策略为SNOWFLAKE,是一种分布式自增算法,保证id全局唯一
-
定义pay_order分片策略,order_id为偶数的数据下沉到pay_order_1,为奇数下沉到在 pay_order_2
-
-
执行步骤:
-
SQL解析: 编写SQL查询的是逻辑表, 执行时 ShardingJDBC 要解析SQL ,解析的目的是为了找到需 要改写的位置.
-
SQL路由: SQL的路由是指 将对逻辑表的操作,映射到对应的数据节点的过程. ShardingJDBC会获取 分片键判断是否正确,正确 就执行分片策略(算法) 来找到真实的表.
-
SQL改写: 程序员面向的是逻辑表编写SQL, 并不能直接在真实的数据库中执行,SQL改写用于将逻辑 SQL改为在真实的数据库中可以正确执行的SQL.
-
SQL执行: 通过配置规则 pay_order_$->{order_id % 2 + 1} ,可以知道当 order_id 为偶数时 , 应该向 pay_order_1表中插入数据, 为奇数时向 pay_order_2表插入数据.
-
将所有真正执行sql的结果进行汇总合并,然后返回
-