自定义路由逻辑函数-Oceanus编码调用

2019-03-10 15:49|来源: 网路

实现接口:

   com.bj58.oceanus.core.shard.Function

实现方法:

   public int execute(int size, Map<String, Object> parameters)

参数说明:

   size:表示该table中配置的datanode数量

   parameters:key为字段名,大写开头,value为字段在sql中的值

返回值:

   namenode 的下标

示例。

(例子中根据 uid 取模来返回下标,这不是通用方法,方法取决于uid的生成规则,非顺序递增的逻辑会造成数据分布不均):

public class UserDynamicShardFunction implements Function {
    public int execute(int size, Map<String, Object> parameters) {
        long uid = Long.parseLong(parameters.get("UID").toString());
        return (int)(uid % size);
    }
}


本文来源:58同城Oceanus使用文档


相关问答

更多
  • DELIMITER $$ DROP FUNCTION IF EXISTS `sp_test`.`getdate`$$ CREATE FUNCTION `sp_test`.`getdate`(gdate datetime) RETURNS varchar(255) BEGIN DECLARE x VARCHAR(255) DEFAULT ''; SET x= date_format(gdate,'%Y年%m月%d日%h时%i分%s秒'); RETURN x; END $$ DELIMITER ;
  • 调用如:select 函数名(参数列表)。 mysql中的UDF(自定义函数),可以写好一些方法或 函数,然后进行调用,而且是在SQL语句中可以进行调用。 1. DROP FUNCTION CalculateAmount 2. CREATE FUNCTION CalculateAmount(userid INT) RETURNS float(10,2) 3. BEGIN 4. DECLARE totalCredits FLOAT; 5. SELECT SUM(amount) INTO totalAmount ...
  • 在select后跟你的自定义函数就可以。 mysql中用select调用自带的now()函数: mysql> select now(); 然后mysql就会返回当前的时间。
  • 如果自定义函数,是在当前文件中定义的,直接调用即可,就像楼上回答的一样;如果是在别的模块中定义的,那么要在当前文件中调用,就需要先导入对应的模块, 导入方法:在当前文件代码最前面加上 import 模块名 比如,你在文件test.py中定义了函数sum,那么你要在当前文件头部,添加: from test import *
  • Oracle自定义函数[2022-11-03]

    写了个了简单的小例子,由于你没有说明当入参不为0时,返回什么值,所以默认返回入参了。代码如下: CREATE OR REPLACE FUNCTION Fun_Test(p IN NUMBER) RETURN VARCHAR2 IS v_Result VARCHAR2(20); --定义返回值变量 BEGIN IF p = 0 THEN v_Result := NULL; --赋空值 ELSE v_Result := To_Char(p); --返回p的值 END IF; RETURN v_Result; - ...
  • 具体指哪一个函数? 对于函数直接使用就可以了 比如 select abs(-10) from dual;
  • FUNC_GET_PY(),FUNC_GET_WB()是我自定义的两个获取参数拼音码和五笔码的数据库function,使用的时候就如下直接调用 update PLUS_OPERATOR p set (p.PY_CODE,p.WB_CODE)= (select FUNC_GET_PY(c.OPER_NAME),FUNC_GET_WB(c.OPER_NAME) from CODE_OPERATOR c where c.OPER_CODE= p.OPER_CODE and c.OPER_CODE !='00')
  • mysql 自定义函数[2022-06-30]

    你好哦楼主~ 很高兴看到你的问题。 但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。 对于你的问题我爱莫能助! 可能是你问的问题有些专业了,或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也会比较热心,能快点帮你解决问题。 最后祝您全家幸福健康快乐每一天!
  • Oracle自定义函数[2023-07-06]

    写了个了简单的小例子,由于你没有说明当入参不为0时,返回什么值,所以默认返回入参了。代码如下: CREATE OR REPLACE FUNCTION Fun_Test(p IN NUMBER) RETURN VARCHAR2 IS v_Result VARCHAR2(20); --定义返回值变量 BEGIN IF p = 0 THEN v_Result := NULL; --赋空值 ELSE v_Result := To_Char(p); --返回p的值 END IF; RETURN v_Result; - ...
  • 您可能在get_by_slug.html.erb模板中有错误。 如果将文件设为空,是否会产生错误? You probably have an error in the get_by_slug.html.erb template. Does it generate error if you make the file empty?