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 | |
热门电影电视剧
- 废柴王子StudioFlat改编电视动画
- 加速时发动机格拉格拉响
- 亲爱的大叔漫画免费阅读全集~劲爆更新
- 漫画人物表情日常12困倦和睡醒的表情画法
- 东京食尸鬼全4季+漫画全集+2OVA
- 精品!开运风水大全集是难能可贵的佳作!
- 铠甲勇士拿瓦全集剧情介绍
- 求文豪野犬剧场版百度云链接,谢谢(°∀°)=3
- 冰雪奇缘X守护者联盟冰王子杰克能和冰公主艾莎在一起吗
- 济南三模漫画材料作文真正的奔跑者
- 孔中窥见真理之在线动画
- 龙珠超漫画
- 番茄免费小说下载
- 求漫画的名字和出处谢谢
- 老夫子说成语粤语有声漫画
- 女孩最爱的十部原版英语动画
- 苍蓝战士奥特曼全集视频播放免费观看,苍蓝战士奥特曼大战怪兽(56位童年的英雄奥特曼大全览)
- 母子情
- 全国哪里的土豆最好经过评比,这8个地方较出名,有你家乡吗
- 女人的下体图片各国女人私密形状大全
最新电影下载
- 姐姐在食堂吃饭,普通的脸开朗大方,老样子真实,但气质也真优雅
- 美不胜收四字成语典故释义用法近义词成语故事
- 人参果树苗图片动漫(人参果树苗图片动漫大全)
- 脑筋急转弯儿童
- 第124章戴妍琦有问题,你的思想绝对有问题!
- 欧布奥特曼普通话版
- 乐高幻影忍者前传至第十七季,2011年至2023年十一年动
- 妹妹走失,身为大小姐的我被逐出家门完整版唐希蕊蒋一白全文免费阅读无弹窗大结局
- 动画片B传说!战斗弹珠人炎魂分集剧情介绍第1
- 乐高幻影忍者官方版下载
- 纪念曹禺诞辰113周年,曹禺全集面世
- 七龙珠AF主题曲歌词
- 陈凯琳真不愧是甜女子神,黑色方框丝袜搭配翻毛牛仔裤秒变靓女!
- 求美型妖精大混战漫画全集
- 漫画北斗神拳百度云资源下载已完结
- 美少女战士水野亚美简笔画怎么画(6张)
- 关于夏风的有哪些诗句
- 盘点京族民间故事大全
- 奇瑞星途官网(奇瑞星途官网商城)
- 求一拳超人第二季2019年百度云资源,山路和弘主演的
最新电视剧下载
- 第四弹盘点好看的耽美校园漫画持续更新中
- 南山竹海漫呼吸
- 老马全集,免费阅读下拉式,作者详情,漫画全集
- 美国动画猫和老鼠(1965)70周年DVD版全194集国英双语百度网盘下载
- 动画片侠岚开场白及开篇词
- 買動漫ナースパラダイス(原創)
- 鸣人喜欢上雏田哪一部鸣人在漫画版中第几部喜欢上雏田
- 那里可以下载动画片四川方言版猫和老鼠
- 产后伤口愈合知多少这6道特效食谱免费送给姐妹们!
- 几米漫画经典语录全集
- 漫画头像制作免费软件有哪些
- 考古系女生用漫画图解专业知识
- 好听的水系技能名字,冰系绝招好听的名字
- 妻子密会情人被发现,被丈夫发现,丈夫我们离婚吧
- 竞孙鬲器主名之字考释
- 雷古洛思奥特曼免费在线观看完整版全集
- 德伯家的苔丝(TESSOFTHED'URBERVILLES)第十四章
- 求龙珠Z日语全集下载地址,要高清的,标清的不要哈
- 口述岳母比老婆更能让我销魂(7)
- 劳动纪律管理制度