ShardingSphere标准分片算法有哪些?

提问者:帅平 问题分类:微服务
ShardingSphere标准分片算法有哪些?
5 个回答
温柔刀下鬼
温柔刀下鬼
COSID_INTERVAL_SNOWFLAKE算法
基于 CosId 的雪花ID固定时间范围的分片算法,和上边的COSID_INTERVAL算法不同之处在于,底层用于散列的COSID的生成方式是基于雪花算法(Snowflake),内部结合了时间戳、节点标识符和序列号等,这样有助于数据分布更均匀些。


发布于:4个月前 (03-26) IP属地:未知
有个笨蛋住进我心
有个笨蛋住进我心
COSID_INTERVAL算法
基于 CosId 的固定时间范围的分片算法,和INTERVAL算法的用法很相似,不同点在于增加了zone-id时区属性,logic-name-prefix分片数据源或真实表的前缀格式,上下界datetime-lower、datetime-upper范围的时间格式是固定的yyyy-MM-dd HH:mm:ss


YML配置示例如下:
发布于:4个月前 (03-26) IP属地:四川省
为什么放弃治疗
为什么放弃治疗
COSID_MOD算法
基于 CosId 的取模分片算法和普通的MOD算法使用上略有不同,mod为分片数量,logic-name-prefix分片数据源或真实表的前缀格式。


YML配置示例如下:
发布于:4个月前 (03-26) IP属地:未知
我怕时间不够
我怕时间不够
INTERVAL算法
时间范围分片算法,针对于时间字段(字符串类型)作为分片健的范围分片算法,适用于按照天、月、年这种固定区间的数据分片。 上边使用其它时间分片算法时,用的都是t_order_n后缀编号格式的分片表。但业务上往往需要的可能是按月、年t_order_yyyyMM的这种分片表格式。

时间范围分片算法(INTERVAL),可以轻松实现这种场景,它的属性比较多,逐个解释下:

YML配置示例如下:
发布于:4个月前 (03-26) IP属地:未知
相视而笑
相视而笑
INLINE算法
行表达式分片算法,适用于比较简单的分片场景,利用Groovy表达式在算法属性内,直接书写分片逻辑,省却了配置和代码开发,只支持SQL语句中的 = 和 IN 的分片操作,只支持单分片键。


该算法有两属性:
algorithm-expression:编写Groovy的表达式,比如: t_order_$->{t_order_id % 3} 表示根据分片健 t_order_id 取模获得 3 张 t_order 分片表 t_order_0 到 t_order_2。
allow-range-query-with-inline-sharding:由于该算法只支持含有 = 和 IN 操作符的SQL,一旦SQL使用了范围查询 >、< 等操作会报错。要想执行范围查询成功,该属性开启为true即可,一旦开启范围查询会无视分片策略,进行全库表路由查询,这个要慎重开启!

YML配置示例如下:
发布于:4个月前 (03-26) IP属地:四川省
我来回答