时间范围跨年分片问题

方便更快捷的说明问题,可以按需填写(可删除)

使用环境:

ShardingSphere Proxy 5.4.0
配置参数
image

场景、问题:

根据时间按月份创建分片

已进行操作:

  • !SHARDING
    tables:
    t_order:
    actualDataNodes: ds.t_order_${202308…202401}
    tableStrategy:
    standard:
    shardingColumn: create_time
    shardingAlgorithmName: sharding_by_time

    shardingAlgorithms:
    sharding_by_time:
    type: INTERVAL
    props:
    datetime-pattern: “yyyy-MM-dd HH:mm:ss” # 分片字段格式
    datetime-lower: “2023-01-01 00:00:00” # 范围下限
    datetime-upper: “2099-12-31 23:59:59” # 范围上限
    sharding-suffix-pattern: “yyyyMM” # 分片名后缀,可以是MM,yyyyMMdd等
    datetime-interval-amount: 1 # 分片间隔,这里指一个月
    datetime-interval-unit: “MONTHS” # 分片间隔单位

现状:

ds.t_order_${202308…202401},理想状态应该生成后缀为 202308、202309、202310、202311、202312、202401的分表,实际生成后续是 202308~202399,202400~202401
image

groovy 表达式中,202308…202401 表达是连续的数字,它当然会出现 xxxx99 这样的值。

请参考行表达式说明,将年和月分开描述
https://shardingsphere.apache.org/document/current/cn/features/sharding/concept/#行表达式

谢谢,我们改了 IntervalShardingAlgorithm 源码,已达到想要的效果了

京ICP备2021015875号