使用DistSQL添加自定义分片算法过程中遇到的问题

如果我自己实现了自定义分片类算法,应该如何使用DistSQL进行添加和应用?
我尝试了文档中提供的方法,遇到了一些问题。


官网的文档不是特别清晰,能告诉我应该怎么正确的使用自定义ID生成类吗?

对应的类不在服务端的话, 你得先传输上去对吧? 如果ShardingSphere Proxy 的 ext-lib 文件夹有对应 volumes 挂载的话(我假设是docker daemon), 对应的类打成 jar 后用rsync传上去即可. 然后正常DistSQL 添加.

核心问题不在这里,而在于我对distsql语法的理解不到位,亦或是文档对于这部分的描述不清晰。
我已解决这个问题。

创建

CREATE SHARDING KEY GENERATOR generator_name(TYPE(NAME=CLASS_NAME));

这里的CLASS_NAME依赖于自定义算法中getType()方法的返回值。

使用:

CREATE SHARDING TABLE RULE table_rule (
    DATANODES("database_team_default.TABLE${0..3}"),
    TABLE_STRATEGY(
        TYPE=standard,
        SHARDING_COLUMN=table_column,
        SHARDING_ALGORITHM=table_sharding_strategy
    ),
    KEY_GENERATE_STRATEGY(
        COLUMN=table_column,
        KEY_GENERATOR=generator_name
    )
);

这是我自己摸索了很久,发现可以work的方法。
在文档中完全没有提及,只能自己摸索。
体验糟糕至极。

1 个赞

文档这地方为什么是CLASS_NAME:rofl:好怪啊,开个issue?

这个是我自己写的,不是文档内容。

京ICP备2021015875号