CobarClient文档全集
5.2.2.2.2.路由规则类型详解(Rule)
路由规则的定义初看起来简单,但到底应该如何定义,以及为什么要如此定义,在没有为你揭开这些疑问之前,我想,你还是很难搞清楚这些路由规则定义到底是怎么回事,不过没关联,我们现在就为你揭开这些疑团.
在使用进行数据访问的时候,我们通常会定义相关的文件,例如:
?xml="1.0"=""?!"-//.com//DTDSQLMap2.0//EN"""="com....."=""type="com....."/id=""=""="id"="id"/=""=""/=""=""/=""=""//id=""INTO(,,)(##,##,##)="id"="long"();//.../其中,每个都会对应一个,在该下,可以定义多个sql,而每个又会有相应的id作为其标志,其中,+id可以唯一标志一个全局的,在这一前提下,让我们来看如何根据现有的的定义来进行数据访问的路由.
我们本着从特殊到一般的情况进行推演.
以操作为例,假设我们的数据现在分布在两台数据库上,而根据切分规则,为奇数的数据分布在数据库1上,为偶数的数据分布在数据库2上,在这一前提下,要路由的创建相关的数据请求,最明了的方式就是,检查当前数据访问对应的sql是哪个,并判断传入的参数包含的是奇数还是偶数,这样,我们就有了以下2个路由规则定义:
....../%2==1///....../%2==0///rule/元素对应唯一的sql标志,即+sql,对应切分规则的定义,而则对应最终的路由成果.现在,我想你应该对路由规则的如上定义有了初步的相识了吧!
有了以上的基础,我们来变换假设场景,我们依然是操作,但现在我们不是做的水平切分,而只是做垂直切分,也就是说,所有的数据现在假设都会落在同一台数据库上,那么,以上的定义可以变更为:
....../%2==1///....../%2==0///rule/?xml="1.0"=""?!"-//.com//DTDSQLMap2.0//EN"""="com....."=""type="com....."/id=""=""="id"="id"/=""=""/=""=""/=""=""//id=""INTO(,,)(##,##,##)="id"="long"();//id=""SET=##,=##id=#id#/id=""fromid=#id#/.../如果只有和(Only)Rule的支持,要保证更新和删除操作能够被正确的路由到指定的数据库,我们就得根据切分规则,再路由规则定义文件中再为更新和删除操作添加相应的路由规则定义.这样做的问题在于:
没添加一个针对某表的文件,就需要在路由规则定义文件中添加一系列的CURD操作对应的路由定义,从使用的角度来看,很繁琐;
通常针对某个表的操作,切分规则都是相同的,不管具体数据访问操作是什么,也就是说,通常定义一套路由规则,原则上来讲应该可以满足CURD多个数据操作的路由.
鉴于以上两点,我们又引入了和(Only)Rule的概念.
允许我们基于中的和水平切分规则进行路由规则的定义,同样针对最初的切分规则,即为奇数的数据落在数据库1上,而为偶数的数据落在数据库2上,那不管其操作是创建还是更新,只要数据访问对应的落在指定的下(对应我们的情况就是com.....命名空间),并且数据访问参数符合指定的切分规则,我们就可以正确的路由数据访问请求,最终我们可以给出如下的路由规则定义:
...../%2==1///...../%2==0///rule/进一步的,如果所有数据只是水平切分,那跟和(Only)Rule的差别近似,我们也可以只使用(Only)Rule:
.....///rule/现在,定义在com.....命名空间下的所有,将全部被路由到数据库执行.
可以看到,从到(Only)Rule,一直到和(Only)Rule,路由规则涵盖的面是从特殊到一般层面逐步放开的,如果针对某个sql有特殊的路由需求,那么可以根据情况添加相应的或者(Only)Rule,而如果多个拥有相近或者相同的路由需求,那么,就可以根据情况归纳并添加相应的或者(Only)Rule,总之,这四种类型的Rule类型可以组合使用,全面的覆盖整个基于的数据访问请求的路由.
Tip在定义路由规则的过程中,可以从一般情况下的或者(Only)Rule着手,首先定义一般情况下的路由规则,然后在根据某些特殊数据访问请求,进一步添加或者(Only)Rule类型的路由规则.在进行路由的时候,将首先进行特殊情况下的路由规则匹配,当找不到匹配规则的时候,在进一步的使用一般的路由规则作为后备规则进行匹配.
5.2.2.2.3.自定义路由规则函数(Rule)
常见的水平切分规则有:
基于范围的切分,比如and
基于模数的切分,比如%128==1或者%128==2或者...
基于哈希()的切分,比如()==等
此外,还有诸如-等,为了满足不同切分规则定义的需要,我们运行在路由规则定义的时候,在中使用自定义的路由规则函数.
下面我们以一个简单的实例来说明在中如何自定义使用路由规则函数.
假设我们要按照某种算法对进行散列,并根据散列的值进行路由,那么首先,我们需要定义一个函数类,该类将根据传入的返回相应的散列成果:
{...int(Long){//realhere.}}有了该函数定义,我们希望在中使用它,那首先我们需要注册该函数,这通过的“”属性进行:
beanid=""="com......"name=""key="hash"bean=".."/bean//map/name="":META-INF//-sql--.xml/:META-INF//---on-.xml//list//bean注意,我们以hash作为key对以上自定义函数进行了注册.
有了以上准备之后,我们就可以在中使用该自定义函数了:
...../.()==///...../.()==///rule/可见只要使用注册时用的key作为对象应用针对指定的表达式字段调用相应的方法就是了.简单,却不失强大.
【下载地址】
1.下载时迅雷软件如提示‘任务错误,未知错误,敏感资源,违规内容,版权等等’都是迅雷屏蔽资源的表现,和6v无关。请仔细浏览下载帮助,依旧可以正常下载。
2.迅雷对资源的屏蔽越来越严重,推荐大家使用BT类软件或各种网盘离线。
3.本站所有资源没有不良广告,请大家放心下载。
本站所有电影完全免费,推荐使用迅雷下载,下载的人越多下载速度越快,把资源分享给您的朋友可以大大提高下载速度。
匿名 发表于 2023-10-24 20:56:36 | |
热门电影电视剧
- 第八十八章黑色丝袜
- www.1111.com高清电影在线
- 双生灵探免费高清版完整电影在线观看
- 光速跑者21号第125集在线观看
- 耗时6年,58000张实拍照片,这部大尺度国产佳作不该被埋没女他花木兰动画女鞋男鞋
- 鸣鸟不飞主题曲 モラトリアム 原声音乐下载
- 画江湖之不良人第一季2023免费在线观看完整版高清,求百度网盘资源
- 丁丁历险记动画、漫画、小人书
- 儿童安全教育动画片变形警车珀利之消防安全篇全26集下载mp4720p百度云网盘
- 小马宝莉睡前故事全集3篇小马宝莉故事小马公主和小马王子
- 七龙珠第四部国语版神马在线观看
- 七大罪愤怒的审判全集免费在线观看
- 催眠美女漫画
- 头文字D第三季(剧场版)在线观看
- 聪明的顺溜有第三季吗什么时候播
- 临时女友动画形式公布短篇故事集合游民星空
- 动感新势力cd曲目第3期
- 火影忍者国语版全集土豆网高清不卡在线观看
- 纽约危情漫画完整版,好看漫画纽约危情,漫画,下拉式麻瓜漫画
- 可塑性记忆阿里云下载
最新电影下载
- 韩国漫画排行榜前十名推荐2023
- ¡¶÷úÊóµÄ¹ÊÊ¡·È¼¯Ó׶ù¾µä¶¯Ô°æÔÉù¿ÉÑ¡ÔñÔÚÏß×ÖÄ£¨VIPáÔ±Ãâ·ÑÏÂÔØ£©
- 头文字D高清全集免费在线观看
- 恋爱禁止的世界2017高清不卡在线观看
- 东京喰种东京食尸鬼漫画图解第100话
- 赛尔号第8季幻梦战记动漫
- 风筝电视剧全集免费播放高清不卡在线观看
- 季前赛全集完整版在线观看
- 东海县有哪些高中学校东海县高中学校有哪些
- 青春水球社免费高清在线观看
- 头文字D第三季(剧场版)免费在线观看
- 变形金刚Transformers系列合集整合卷土重来、赛博坦之战、赛博坦陨落、暗焰崛起、毁灭等5部
- 动画大全
- 冰雪奇缘
- 三国演义动漫在线观看
- 古董杂货店全集
- 飞哥与小佛动画片全集PhineasandFerb国语版全65集迪士尼动画中文版百度网盘下载
- 春逝百年抄×AI梦境档案特别对谈
- 头文字D第六季动漫全集在线观看
- 刀使巫女全集
最新电视剧下载
- 几米漫画全集下载
- 三国演义·第三十五回·巧唱空城计中国少年儿童最喜爱的古
- 没有接吻,没有床戏,一接触就死亡的爱情片今天一对少男少女给我们带来的是一部又甜又虐的纯爱片
- 魔发奇缘剧集版第二季电视剧全集在线
- 好看的许毛毛电影全集
- 1998
- 精灵梦叶罗丽第九季樱花动漫全集免费在线观看
- 爆笑虫子第一季迅雷下载全集免费在线观看
- 儿童动画儿童科普百科动画片阿u学科学全32集下载mp4高清720美妈联盟吧
- 妹汁动漫HD电影免费观看
- 鬼父2动漫电影在线看
- 鬼父全集高清不卡在线观看
- 福尔摩斯冒险史五个桔核故事阅读点学英语
- 光之美少女动漫
- 天装战队护星者第46集全集免费观看
- ReLIFE\重返17岁01
- 妃夕妍雪21系列漫画
- 鲁邦三世动漫在线观看
- 动态漫画·斗破苍穹第二季第52集在线观看
- 美男高校地球防卫部HAPPYKISS!动漫在线观看