00:00
接下来我们配置水平分片,水平分片相对垂直分片来说比较复杂,所以呢我们分若干节课来讲。那么首先需要大家了解的是数据库中的order表创建的时候我们并没有使用自增策略,我们来看一下服务器准备这一块。这块于。也是一样的,那为什么我们在这个过程当中没有使用增策略呢?其实原因呢也很明显,如果我们使用了数据库本身的自增的话,不同的表它会有各自独立的自增序列啊,多张表中的记录ID呢就会重复,所以呢,我们呢需要在程序级别,也就是说需要在我们的业务代码当中去生成我们数据库表中的ID,而不是依赖数据库本身的逐渐自增策略。
01:10
那这个组件应该怎么生成呢?后面我们会有专门的一节课来讲,那么接下来呢,我们先对基本水平分片的一些基础配置呢,做一个实现好。我们打开我们的应用程序,那把之前的这个application给复制一下。那这个呢,是垂直分片。好,我们把垂直分片配置文件进行备份,那么在新的配置文件当中呢,进行水平分片的配置。现在呢,我们其实一共有三个数据源了,一个是server user30这台服器上还有一个呢是SERVER03311数,可能会嗯,稍微复杂一些了,所以呢,我们把我们的配置呢,分成几个部分哈。
02:15
这面呢,我们都叫基本配置。好,这一部分呢,我们叫数据源配置。这个部分呢,我们叫标准分片配置,那实际上标准分片配置也就是我们所说的数据节点配置,一张真实的数据库表就代表一个标准分片。然后接下来呢,在数据源配置这呢,我们看一看啊,首先第一我们要有三个数据,一个是server user,还有一个呢是server order0,另外呢,还有server order1这三个数据源,那么针对server user来说的话呢,它是不变的。
03:13
那么针对零来说。我们给他做一个简单的修改。好,我们这边填零就可以了。那么它的端口号呢,是3310,这是第二个数据源,接下来我们配置第三个数据源。这是server order1。好,那么它的端口号呢,是3311,这样的话呢,我们配好了三个数据源,那接下来呢,我们来看标准分片表的这个配置,那么很显然这个位置呢,我们就不能去这样配置了。
04:07
Order,零一。好,用逗号隔开啊。Server order1。零和一。这样去配。所以前面。我们从官方文档当中啊,拿来的注释呢,你会发现它这里面也告诉我们了,如果是多个表的话呢,是以逗号风格的,那这样的话很显然它会很麻烦,对不对,所以呢,一会儿呢,我们会讲到一个叫音表达式的这样的一个概念啊,那么在真正的使用这个表达式之前呢,我们先来测试一下我们这两个数据源是不是分别都好用,那么怎么去测呢?我们找到我们的测试文件,测试文件呢,我新建了一个叫test的这样的一个测试代码,把所有的关于数据分片的测试代码呢到了里面,就是分片的意思哈。
05:14
所以这个里面呢,有前面我们测试的关于垂直分片的内容,然后接下来呢,我们再测一个关于水平分片的内,那么我们呢,也先针对order做一个测试。先只差order。好,那这个user ID呢,我们临时给他写一个。叫一。好,这个是水平分片的测试。插入数据测试,那这种情况下呢,我们先右键。运行一下。好,你发就了那1SER插语不能够支持,意思呢,就是我们现在的插语句它不支持。
06:20
将分片数据路由到不同的数据节点当中,也就是说你现在插入的这条记录。那究竟是像。零服务器的零表还是一表插入,还是像一服器的零表和order仪表插入呢?那么我们的应用程序呢,它判断不出来啊,因为我们在这个地方,其实呢,它映射的这个order类,它映射的是一个逻辑表明,它并不指向真实表,我们的真实表呢,是order,零服务器的ORDER1表和ORDER0表,以及一服务器的一表和零表,所以呢,我们的应用程序呢,就没有办法判断具体要向哪张表中插入记录。
07:16
那这样的话呢,其实后面我们会讲到分片算法,那么在真正的讲这个分片算法之前呢,我们先要确保我们这四个数据节点呢,都是可用的,那这个怎么去测试呢?我们可以分别先进行测试啊。比如说呢,我们先把后面的这些都删掉,然后一个节点一个节点的先进行测试,先看一看这几个数据节点是不是分别都能够正确的插入数据,先确保节点耗时,好,我们来进行一个测试。
08:01
好,那这个时候呢,你又发现了第二个问题,第二个问题是什么呢?叫ID没有默认值,什么意思呢?我们的数据库当中,前面我们已经强调了,我们并没有呢给它生成任何。件策略,尤其是没有这个自增策略,而在我们的应用程序当中呢,我们呢,也没有为ID,也没有为order生成ID,并且在这个类呢呢,还明确的了,我们一定使一定要使用这个逐渐自增,那就意味着在。业务代码级别。ID是没有的,是个空啊,然后呢,它要依赖这个叫数据库的主见自增策略,诶那么这就产生了一个矛盾,这个位置你要依赖数据库的主键自增策略,但是数据库里面呢,又没有主键自增策略,所以呢,我们就没有办法进行数据插入了,那这个怎么办呢?我们呢先临时把这个。
09:17
凹策略给它改成my beatt plus里的另一个策略,叫做分布式ID。As sign ID啊好,那这个SID是什么呢?后面我们会具体的讲,现在呢,咱们先临时把它设置一下,好,那接下来呢,咱们再来进行测试。好,这一次呢,我们的测试呢就成功了,我们来看一下circle,那逻辑circle呢是向t order表中插入了数据,而实际circle呢,是向server order0的t order0表中插入了数据,并且呢,这个是刚才我们生成的分布式ID,就是这个ID其实是依赖们的买的个分布ID生的ID,那目前为和。
10:23
啊,She fair尔没有任何关系啊,它是买贝斯plus的一个策略,那么我们来看一下数据库表。领表。零库零表啊。好,这里面呢,就插入了一条记录,接下来呢,我们再来测试一下。零库一表。那怎么测呢?这样测就好了,这是零库一表。
11:01
好,那跟刚才一样,我们看一下它的这个circle,这个circle和前面是一致的,那么actual circle是向零库一表中插入了记录,那么我们来确认一下,这个一表确实呢也是有一条记录的,并且呢,你会发现这两条记录的ID呢,它其实是不一样的啊,因为这个是通过ID策略生成了唯一的ID,然后接下来呢,我们再来。确认一下,我们另一个数据源呢,是可用的,就是一库零表。和一库仪表,好,我们来做一个测试。看一下实际色吧,这面呢是向一库零表插入了数据,最后我们再确认我们的最后一个数据节点呢,也是可用的。
12:17
好,我们来看一下实际色口,那么这一次呢,他向一库一表插入了数据,那么到此为止呢,我们就确认了我们新创建的两个数据源中的四个数据节点都是可以正常插入数据正常被访问的啊,那在进行后面步骤之前呢,建议大家先把这里面的数据记录呢先删掉啊。因为这个数据记录很显然。它不是我们最重要的一个合理记录。
13:00
那么这样的话呢,我们就完成了数据节点是否可用的一个测试。
我来说两句