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 | |
热门电影电视剧
- 邪恶催眠师之捕梦人全集免费高清在线观看
- 一拳超人一击超人一击男漫画全集在线观看
- 催眠术2nd高清不卡在线观看
- 贸易有限公司名称大全(免费简单大气)
- 脱口秀沈腾成200亿影帝,背后3个女人被曝光一个苦等他12年,一个助他爆红,最后一个……马丽贾玲张小斐
- 一拳超人全集在线观看-动漫
- 秋叶原之旅好玩吗秋叶原之旅3出了吗
- 漫画岛vip永久破解版下载
- 班长大人班长大人漫画班长大人漫画全集班长大人漫画免费阅读看漫画
- 3D丁丁承载着梦想和回忆(图)
- 书香全本电子书下载txt免费下载,全集全本全文完结版完整版txt电子书下载
- 龙珠Z第245集
- 100个公主故事
- 鬼父2动漫电影在线看
- 智龙迷城X动漫在线观看
- 爱寐七公主漫画全集
- 爱情男女电影情侣必看的30部电影
- 肤浅是什么意思(说女人肤浅是什么意思)
- 动画中英文对照表09.24
- 双生灵探免费全集在线观看-动漫
最新电影下载
- 2021年12月里番预告时间表
- 讲卫生懂健康主题班会教案通用8篇
- Directdeterminationof4
- 第15章东方无忌
- 日漫 东京喰种东京食尸鬼石田スイ尖端漫画1
- 传闻中的七公主全集在线观看
- 龙珠Z剧场版9银河面临危机!!身手不凡的高手!!全集免费在线观看地址
- 绅士资讯最新2020年12月里番预告时间表
- 动漫下载贤惠仙狐小姐百度网盘
- 白浊之村(爱吃果冻布丁著)无弹窗免费全文阅读
- 小学生诗歌朗诵大全集精选8篇
- 学园奶爸第二季出了吗
- 比得兔PeterRabbit之中文版高清全73集mp4格式720P
- 旧システム提供終了のお知らせ
- 双生灵探免费全集在线观看-动漫
- 魔穗字幕组2017年5月预告
- ALDNOAH.ZERO
- 2023年1月新番已公布54部!
- 鬼父
- 我叫白小飞第二季动漫全集
最新电视剧下载
- 奥特曼的小故事合集
- 穿越西元3000后漫画
- 你们有看过什么实际内容和标题给人的印象完全不同的动漫吗神作,烂作都行
- 感动世界的父子真情,广为流传的亲情漫画丰子恺漫画父与子父与子全集
- 奥特曼的小故事合集
- 补番推荐九部超甜纯爱动漫
- 日本动漫中形形色色的奇葩老师集锦163
- 谁有80年代动画片名称大全
- 妄想学生会漫画全640话,资源下载!
- 9.3分的国产动画,忍不住一口气看全集
- tm轻漫画v1.4.2
- 一拳超人漫画新141解读童帝决战究极体凤凰男冲击波都用出来了
- 星辰变全集
- (怎么画立体机动装置)立体机动装置真人试飞!
- 死神动漫在线观看免费完整版
- 腾讯音乐遭反垄断罚款,白蛇23天票房近2亿元三文娱周刊手游b站
- 半田君传说女主是谁
- 狐妖小红娘在线观看
- 龙珠Z剧场版8燃烧吧!!热战·烈战·超激战电影在线观看免费
- 求猫和老鼠全集国语版高清下载