如果我自己实现了自定义分片类算法,应该如何使用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的方法。
在文档中完全没有提及,只能自己摸索。
体验糟糕至极。
文档这地方为什么是CLASS_NAME
好怪啊,开个issue?
这个是我自己写的,不是文档内容。