by 陈思儒
1、添加规则函数case、range、增加表达式 (boolean表达式 ? 表达式1: 表达式2)
range函数:
id in range(12,16,0,1) 表示 id>12 and id<=16
id in range(12,16,0,0) 表示 id>12 and id<16
id in range(12,16,1,0) 表示 id>=12 and id<16
id in range(12,16,1,1) 表示 id>=12 and id<=16
case 函数
case (abs(hash(SDID)) % 32) when range(0,8,1,0) then (isReadStatment ? ’server1′ : ’server1_write’);
when range(8,16,1,0) then (isReadStatment ? ’server2′ : ’server2_write’);
when range(16,24,1,0) then ‘(isReadStatment ? ’server3′ : ’server3_write’)';
else ’server4′
END CASE;
2、增加bool 类型的规则内置变量 isReadStatment
用户可以在规则的表达式中使用比如 : isReadStatment? ‘pool1′ : ‘pool2′
3、稳定性增强,解决了在大并发下需要多个数据库聚合结果集的时候出现数据异常而无法返回给客户端的问题
4、规则属性新增加ruleResult属性,有3种类型(BOOLEAN、POOLNAME、INDEX)
BOOLEAN — 默认值、结果一定是布尔值,表示执行的sql是否匹配当前的规则
POOLNAME — 结果是字符串,是由dbpool名字组成的字符串,多个pool以分号间隔(rule中的defaultPools、readPools、writePools无效)
INDEX — 结果是数字 ,如果>=0 则表示当前规则匹配,并且将相关index的pool返回
<tableRule name=”LIST_FRIEND_GROUP,RELATION_FOLLOW” schema=”sd_relation”
defaultPools=”server1,server2,server3,server4″>
<rule name=”rule1″ ruleResult=”POOLNAME”>
<parameters>SDID</parameters>
<expression><![CDATA[
var hashid = abs(hash(SDID)) % 32;
case hashid when range(0,8,1,0) then (isReadStatment ? ’server1′ : ’server1_write’);
when range(8,16,1,0) then (isReadStatment ? ’server2′ : ’server2_write’);
when range(16,24,1,0) then ‘(isReadStatment ? ’server3′ : ’server3_write’)';
else ’server4′
END CASE;
]]></expression>
</rule>
</tableRule>
</tableRule>
下载地址 https://sourceforge.net/projects/amoeba/
by 陈思儒
1、添加规则函数case、range、增加表达式 (boolean表达式 ? 表达式1: 表达式2)
range函数:
id in range(12,16,0,1) 表示 id>12 and id<=16
id in range(12,16,0,0) 表示 id>12 and id<16
id in range(12,16,1,0) 表示 id>=12 and id<16
id in range(12,16,1,1) 表示 id>=12 and id<=16
case 函数
case (abs(hash(SDID)) % 32) when range(0,8,1,0) then (isReadStatment ? ’server1′ : ’server1_write’);
when range(8,16,1,0) then (isReadStatment ? ’server2′ : ’server2_write’);
when range(16,24,1,0) then ‘(isReadStatment ? ’server3′ : ’server3_write’)';
else ’server4′
END CASE;
2、增加bool 类型的规则内置变量 isReadStatment
用户可以在规则的表达式中使用比如 : isReadStatment? ‘pool1′ : ‘pool2′
3、稳定性增强,解决了在大并发下需要多个数据库聚合结果集的时候出现数据异常而无法返回给客户端的问题
4、规则属性新增加ruleResult属性,有3种类型(BOOLEAN、POOLNAME、INDEX)
BOOLEAN — 默认值、结果一定是布尔值,表示执行的sql是否匹配当前的规则
POOLNAME — 结果是字符串,是由dbpool名字组成的字符串,多个pool以分号间隔(rule中的defaultPools、readPools、writePools无效)
INDEX — 结果是数字 ,如果>=0 则表示当前规则匹配,并且将相关index的pool返回
<tableRule name=”LIST_FRIEND_GROUP,RELATION_FOLLOW” schema=”sd_relation”
defaultPools=”server1,server2,server3,server4″>
<rule name=”rule1″ ruleResult=”POOLNAME”>
<parameters>SDID</parameters>
<expression><![CDATA[
var hashid = abs(hash(SDID)) % 32;
case hashid when range(0,8,1,0) then (isReadStatment ? ’server1′ : ’server1_write’);
when range(8,16,1,0) then (isReadStatment ? ’server2′ : ’server2_write’);
when range(16,24,1,0) then ‘(isReadStatment ? ’server3′ : ’server3_write’)';
else ’server4′
END CASE;
]]></expression>
</rule>
</tableRule>
</tableRule>
评论 (3)
2019-Dec-18
匿名用户 发表:
[url=http://elimite2.com/]where to buy elimite cream[/url][url=http://elimite2.com/]where to buy elimite cream[/url]
2019-Dec-18
匿名用户 发表:
[url=https://elimite2.com/]permethrin cream[/url][url=https://elimite2.com/]permethrin cream[/url]
2020-Jan-02
匿名用户 发表:
cbd oil cbd oil cbd oil capsules <a href="https://cbdoilnumber1.com">cbd...cbd oil cbd oil cbd oil capsules <a href="https://cbdoilnumber1.com">cbd oil </a> cbd oil cbd oil for dogs
cbd plus cbd oil [url=https://cbdoilnumber1.com]prosper cbd [/url] cbd oil cbd oil best cbd oil 2019
添加评论