00:01
好,咱们品尝了分库分表这一道大菜之后呢,哎,再给各位介绍一个小甜品啊,就是常用分片规则啊,咱们去也去了解一下啊,这个分片规则到底什么样啊,其实咱们最最常用的就是那个Mo哈希啊,对咱们呃这个指定字段里面值呢,哎,这个进行曲模预算,然后呢,哎去对什么曲目啊,是对咱们的数据节点啊,对数据节点进行个曲模,然后呢,诶把咱们的数据进行个划分,当然这个分库分表都可以用这个相量规则,咱们之前带各位做这个分库分表的时候,是不是指定的规则里面既有分库的规则,又有分表的规则可以说啊,哎,这个买开二,他把分库分表给做到什么呢?直接用咱们的建表语句就可以去进行实现啊这块呢,而且还把你分多少片啊,这个咱们的分片的这个数量也指定一下啊,这更简化了,咱们去进行分库分表的一个设计,好,那咱们去看看啊,这个常用的分片规则都有哪些,首先。
01:01
啊,分片算法的一个简介,咱们去了解一下啊呃,这个买CAT2跟买cat1.6呢,是有一些变化的啊,比如说买CAT2它支持什么是自动的哈希型的分片算法啊,在这块呢,可以自动去使用,不需要咱们再去配置了啊,默认去选择就好,然后呢,呃,也兼容咱们的这个1.6内置的什么的,哎,扣巴的这个分片算法也可以啊,这它都是支持的,那这块呢,给各位给各位提个醒啊,咱们用这个呃,哈希型分片算法呢,默认要求对咱们的集群是有一个命名要求的啊,这个要以C为前缀啊去创建集群啊,当然这块呢,哎,各位可以参考我之前带各位去搭建的例子啊,用CV前缀啊,C1C2C啊C3C4啊去搭建这个相关的集群环境,然后呢,哎,这块呢,哎C啊,当然这块最开始啊,是以C0啊为咱们的分片的第一个节点,C就是第二个节点啊,按照这个顺序去呃往下排,当然你也可以手动去改变都是。
02:01
可以的,呃,建议各位咱们还是按照默认规则去搭建就好,从C0开始啊,C0C1C2这样往后去盘啊,咱们也看到了默认的这个效果是什么说咱们都不需要再去改配置文件,直接运行相关的啊,这个建数据源呢啊这个什么的语句啊,建这个集群的语句,然后呢,再去创建库表,诶就搞定了啊,它默认选择诶这个C0C1去什么使用,这就是为什么咱们哎这个演示的时候,哎就那么神奇啊,就直接创建好库,创建好表,他选择的集群就是C0C1,因为咱们是按照它官方的命名要求去创建的啊,按照这种规则去创建就可以,那再去对比一下吧,咱们对比一下买CAT2与一点多哎这个版本的一个区别,咱们去了解一下啊,这块在咱们买CAT2啊哈希型分咱们的分片算法呢,诶这个基于这个model哈希啊,就是拿咱们的字段啊去对这个什么呢?诶咱们所对应的数据节点进行取。
03:01
模啊,这个取余啊,这个运算啊,这块就是用咱们的呃字段数,然后呢,对这个什么呢?哎,咱们的节点数进行一个什么呢?哎,百分号运算啊这块呢,哎,这个除这个咱们节点数,然后取个余数啊这样算出来啊这块呢,它到底什么做一个平均的一个划分,那一点多的系列呢?啊它是什么呢?也是类似的啊,咱们的曲模预算也都相类似啊,都是对应的哈西的运算啊,但是它区别是什么?哎咱们呢,买CATS2呢,哎会根据咱们的什么呢?会根据咱们选择的字段啊,把类型转化成符合咱们类型的这个属性再进行预算啊举个例子啊,咱们进到这个咱们上啊,咱们之前去搭建的分片的这个相应的表信息,咱们去看一下,呃,咱们往上翻啊,能看到,呃,咱们之前分片表orders啊,它所对应的什么,指定的是卡麦D什么类型啊,Int类型,数字类型,那这块呢,哎,咱们进行分片的时候,哎。
04:01
会会先转化成咱们的什么呢?哎,这个会先转化成把分片值转化成咱们的数字类型,然后再去模预算,那这块呢,如果是一点多的系列的呢,跟它最大的区别就是它会先转化成字符串再运算啊,这是诶它的一个什么呢?比较大的一个区别啊,就是底层运算的方式不太一样,但是呢,效果都是一样的啊,能可以做到很平均的把数据划分成到呃多个节点存储啊不同的数据啊,完成咱们一个大的表拆分成多个小的数据分片啊,存到不同数据库啊,咱们了解一下买二与这个一点多它的一个版本的区别就好,然后呢,继续再往下啊,咱们再去看看分片规则与适用性啊,这块呢,哎,咱们呢,买开给咱们提供的这个分片规则有很多啊,咱有很多种类型,然后呢,它适用性咱们简单看看,其实多数啊能看到啊,这个支持的数据类型,数值字符串啊都是支持的啊,如果按日期来说,它支持的就是date,还有。
05:01
看这个数据类型,就看咱们选择哪种啊啊,你要选择日期的,那肯定选择啊,这个按年月啊去取哈希或者什么的,按这个年日啊或者什么呢?哎,咱们直接按月按日都可以,但是各位需要注意的啊,咱们啊这个买cat这个分片啊,咱们的数据分片做这个什么呢?呃,分库分表它是什么呢?得看它的支持的这个什么呢?哎是这个咱们的分片算法是否支持啊,这块呢,有些是全头支持,比如说咱们的最常用的model哈希啊,它是什么呢?支持分库也支持分表啊,像咱们的在这儿啊这个右移哈希它也是都支持的,但是有些是不啊不是全支持的,咱们去确认一下,比如说哎这个日期相关的各位留意一下,哎,只有按什么的月日啊进行什么的去哈希进行的分片,它是哎这个分库分表都支持,而咱们的什么呢?哎,比如说按照月啊,按照日啊,按照周啊,哎去什么呢?还有上面这块啊,上面这块啊这个哎咱。
06:01
咱们按照月日周啊去什么呢进行分片,它只支持,哎在这儿只支持咱们的分表,不支持分库啊,这个再往上呢,呃,就多一点呢,就是按照这个年月,按照年日啊,还有按照什么年周去进行分表的话,呃,也都是支持的啊,所以这块呢,咱们需要记住呢啊,其实啊,不需要全都去记忆它咱们用到什么,咱们现查相的手册就成,那这块呢,哎,其实只需要了解,就是纯按月啊日啊,还有咱们的什么的周啊,哎,按照这三个去进行划分分片的话,只支持分表,不支持分库啊,各这块咱们需要了解一下啊,了解一下这个相关的它的适用性,那再往后简单取几个啊,咱们分片规则给各位,咱们去简单说说啊,它到底怎么计算出啊这个分片值的啊,咱们去说说。好,那这以咱们最常见的就是它了,Mo希可以说哎80%的情况都是用它啊,这块直接用哎这自动的这个Mo哈希就可以啊它是什么呢?数据分片啊,它的特点就是哎,如果你这个分片值是字符串啊,会先对咱们字符串进行一个哈希转换,转化成数值型,然后呢,进行一个计算,那怎么计算呢?咱们看看哎有两种情况,一种是呢,哎,我分库件跟分表键是同件啊,比如说就是咱们之前举的这个例子啊,咱们可以看到,哎,我对应什么呢?这是咱们的分库键指的是什么呢?Customer ID,再去看这是咱们的分表键指的是谁?哎。
07:35
也是卡斯麦蒂都是同一个键,那就好办了啊,咱们看一下它怎么计算的,哎,那这个分表的下标就是分片值,哎,我除以什么呢?哎,咱们进行取模,哎在什么呢?在这儿可以看到是咱们的分库数量乘以分表数量,哎对它进行什么的取模,那这块呢,对于咱们来说就很熟悉了啊就是什么呢?哎再回到这个,呃,咱们语句里面是就是下两个参数啊,哎,一乘二,哎进行一个什么呢?哎,就相乘算出相的值,那就是什么呢?哎,就是哎这个二嘛啊一乘二等于二,那怎么算这个分表的这个下标呢?各位,哎,别忘了咱们分票值啊,这个字段值是不是对这个二取模,那各位任何事对二取模或者取余数啊,它算出来的结果都是什么?是不是零或者一啊。
08:24
所以这块呢,哎,咱们看看咱们创建那个表啊,这个命名这个表是有原因的,咱们看看根据它算法怎么命名的表,哎,是不是它的下标就是什么呢?在这儿啊,OS0OS1啊。哎,就是通过这咱们可以算出来,你说老师,那我这不止两个节点,我三个节点,哎,那三个节点呢,有什么是不是012啊,所以这块呢,分到三个节点的这个表分别就是零,然后呢,哎一再来一个,那就是二啊,通过这咱们去什么呢?可以通过下标确定你到底是哪个节点。啊哥,这是啊,咱们对应的这个相应的规则啊,相对而言,咱们的这个命名方式呢,比这个呃之前咱们的这个呃,买K一点多更什么的更规范一些啊,买K一点多啊这个这个分表这个相关信息啊,这个包括表名都是咱们自己制定,然后这块呢,哎,都是什么同名的,这样你看不出来它到底在哪个节点,但是现在咱们可以看到,然后再后呢,诶别忘了还有分库呢,分库的下标怎么去计算,同样是拿咱们的这个分表的数量,你分了几张表,然后呢,用咱们分表的下标啊除以分表的数量,那同样就是什么呢?算出来,哎,再回来看一眼。
09:38
是不是也是分的库啊,信息也是从零开始对吧,零还有一啊,这样咱们可以看到这个命名到底怎么来的,还是那句话,知其然,知其所以然。啊就是哎咱们采用的这个,哎这个再回来啊,采用了咱们的在这儿啊采用了咱们的这个呃,Model哈希这种算法啊这块呢,算出来的结果啊带着各位咱们去把它简单了解一下,那Z后就是它什么呢?哎,咱这哎咱们的right啊shift right shift是什么呢?哎咱们的右移算法啊,它是怎么去计算的,咱们也简单了解一下啊就什么呢?哎,它就根据咱们的字段名和位移数啊进行计算,但是它只支持数值类型,字符串是不行的啊,只支持数值类型啊它特点呢,就是拿咱们的啊这分片值,哎我又移二进制哎什么的位数啊,咱们往后啊为啊移了多少位,然后呢,咱们再按照分片数量进行取,说白了我取出啊,就是有一串数数字啊,咱们往后呃往右啊,这个右移几位取出这个值,然后呢,进行的区域啊,这块呢,呃也是呃分的更平均一些啊,这是咱们的右移算法,那暂后哎就是按照日期了啊,按照日期比说。
10:51
哎,这个年月进行划分啊,它什么呢?诶,这个仅用于咱们的这个分库啊,这个用于分库的操作,那咱们可以看到相关的信息啊,是咱们,哎拿这个年啊乘以12,再加上月暂,然后呢,哎,再对分库数进行取余啊,其中这个月份呢,就是从一到12啊各这简单了解就成,然后咱根据咱们的月呃月日进行一个划分,它什么的仅用于咱们的分表啊,可以进行一个分表操作,在这块呢,呃,一般情况下就是哎咱们只针对date类型或者date time类型,然后呢,呃,一年中啊,咱们第几天啊,对这个分表数进行一个取模啊,进行个取余数操作,那这块呢,而且咱们的这个哎,你不能说是可劲分啊,我这想分多少片分多少片啊,我这个什么呢?那这个表我分什么呢?这个400多片那肯定不行啊,这块一定要注意啊,咱们的这个表分片不能超过366啊,不忘了咱是拿这个啊,这一年中的第几天啊。
11:51
啊这块啊,这个咱不能说是太夸张啊,一年啊这个什么呢?360多天啊,你不能说是夸张来点啊,来到什么四百四百多片,这肯定不行的啊各位这块呢,一定要注意它不超过366片,好这是啊带着各位咱们呃了解一下这个开胃小菜,了解一下咱们的这个什么呢?买cat给咱们提供的这些啊分片算法还是那句话,咱们最常用的就是它model哈希,如果你需要别的分片算法,哎,咱们可以去查查官网啊,去看一下对这个分片的算法的一个描述啊,你可以去什么呢?拿自己的数据尝试一下去做一个划分啊,但是还是啊,这个一般用的最多的还是它在咱们的Mo哈西,好啊,这个甜品就先介绍到这儿啊,各位简单了解就可以。
我来说两句