00:01
咱们继续买开二这个概念的学习啊,带着各位咱们往下去什么呢?看后面的概念,呃,物理分表啊,这块呢,就是只进行数据拆分的,哎,在数据库上面的哎物理表啊,也就是哎这个咱们整个分片表中的一个分区啊这块呢,哎,其实说白了就是啊咱们什么多个物理分表,哎,咱们汇总起来就是这个哎咱们的逻辑表啊这块呢,各位物理分表还是跟咱们之前的这个什么呢?哎,咱们所对应的那个分库分表啊,这个概念有所连接就成啊说白了就是在我物理上面啊,咱们把一个什么呢?一个表里数据拆分成多个啊这块咱们理解一下它物理分库呢,这块一样啊,就是一般值包含多个物理分表的库啊,这块呢啊,咱们什么呢,一般啊,咱们说过啊,这个分库分表一般咱们都会什么呢?同时进行啊,就是参与咱们的数据分片的实际的数据库。
01:02
这是咱们所说的物理分库啊,同样这两个也是有关联的,好了再往后分库呢,哎这块呢,就是指啊咱们什么呢,一般通过多个数据库哎拆分分片表啊每个数据库哎这块一个物理分片啊这块呢,咱们的物理这个分库的啊这个名字相同啊各这就是咱们所对应的分库啊其实这块呢,呃可以理解成是一个动作啊就是啊什么呢?呃,我需要多个数据库参与的啊这块呢,咱们无论是分库也好,分表也好,还是这个咱们,呃经常这个真实操作是分库分表一块做的,哎分库分表哎所对应的啊这个数据一定要存在多个主机上面,多个数据库啊这块举个例子,它就相当于什么呢?哎,咱们多个数据库就相当于多个盘子,我分库就是把一串啊数据葡萄啊,把它什么呢,分到各个盘子里面啊,这块呢,诶,这个盘子放两粒,那个盘子放两粒啊,放两粒有点少啊,放一堆啊。
02:02
这一个盘子放一堆,一个盘子放一堆,然后这块呢,查询数据的时候,就是所有盘子中的葡萄,呃,又通过咱们的这个买cat组成一个什么呢?一串完整的葡萄。啊,有说相当于是简单给各位画一下。其实这块也很好理解,就相当于说我这个原先呢,是一个什么呢?哎,一个完整的啊这个数据,然后呢,我把它进行个拆分,比如说这块一下,哎分成四块,把它分到什么呢?四个,哎什么呢,数据库当中把这块分成四片,而对于咱们的my cat,因为有我的CA做数据库中间件啊呃,这个查询的请求过来啊,咱们是要查这张表里数据啊,咱们什么呢?这个对于我这个查询的啊,相应程序来说,诶通过买cat,我看到是一个什么呢?完整的逻辑库啊,或者完整的逻辑表里面有相关的数据,而什么呢?诶真正查的时候要根据实际情况,根据咱们拦截转发的情况啊,这个分到各个数据节点当中,但是对于咱们在外面去看啊,咱这个麦看到另外一边的应用程序去看我的数据是什么呢?存在一个,哎这个数据表里的啊各位这是啊咱们的哎分库分表这相关概念啊,分库啊这块就是把我的一个。
03:18
库来分成这么多个啊,各位这块呢,还是再去理解一下好了,再往后就是咱们的分片表啊,也就是咱们的水平分片表,说白了就是按照一定规则哎,把这个数据拆分成多个分区的表啊,咱们呢,在分库分表的语境下,就是咱们呃,逻辑啊,属于逻辑表的一种啊,就是咱们所说的啊水平分片表啊,这块呢,就是按照规则进行拆分数据的这个表啊,那这块相当于上面咱们这个例子,是不是举了一个什么一串葡萄的例子,对吧?哎,就相当于上面这个举了例子,这个数据葡萄啊,就是咱们所说的这个,哎,这个水平分片表。啊,各位这块呢,还是啊各位几个概念咱们结合到一块儿去理解啊,这叫什么呢?可能理解更什么,这个通畅一些啊,理理解更什么深刻一些,好再往后单表啊这个,哎,这个跟上面肯定有区别了,一个叫水平分片表,一个叫单表,单表就跟它名字一样,哎只有一个什么意思,我没有分片啊,也没有什么呢,冗余的给你来一个复制啊,在另外一个数据库里面复制了这张表里的所有数据,不是啊,就一个啊,就没有拆分的数据,哎,也没有复制到别的库里的表的这个数据,说白了我这个什么这个表什么叫单表啊,就是有我的maca啊,咱们maca的创建逻辑库,哎,逻辑库里面有逻辑表,这个逻辑表比如说叫A吧。
04:45
哎,这个逻辑表A,它所对应的什么呢?真实的物理表也只有一个啊,这个物理表比如说咱们起名叫B。哎,这种AB只有一对一的这种映射关系,这就叫单表啊各位这块咱们理解一下,这就叫单表,好,那这块呢,这是啊,咱们有这个分片表啊,这个分片表就是一对多啊,那这块呢,咱们的单表就是一对一啊,这个也可以结合一块去积啊,那再往后就是什么呢?哎,全局表。
05:16
啊,相信啊,咱们学过,哎这个买cat一点多那个版本的同学应该对它有印象啊,分片表又叫广播表,那这块呢,哎,它是什么呢?哎,就是为了保证啊,咱们之前是不是有拆分这个水平分片表对吧?啊咱们一对多这种情况主要是应对这种情况,那在这种情况里面啊,咱们随便举个例子啊,比如说就是咱们的,呃,举了很多例子,那个什么订单表。哎,我那个订单表,咱们本来是一个完整的,还是。在这儿画一下啊,啊,现在各位咱们啊,这个去画一下,理解一下,然后再去咱们读那些概念啊,这块呢,可能这个消化更好一些啊,那这块呢,哎,咱们还是举这个订单表为例啊,这块订单表里面有很多的记录,咱们说了是不是根据实际情况,我一张表这个存的数据量太大,我扛不住,对吧,咱们是不是做了一个什么呢?诶一个分库分表,咱们做了一个分表操作这块呢,诶产生了水平分片表啊,数据分别存在了这个三个数据库里面三张表里。
06:19
那这块呢,这问题就来了,因为咱们的这个呃,订单表里面肯定有相应的字段啊,比如说这块我这个字段是啊,这个标注了什么它的属性了啊,这属性的字段啊,比如说我这个,哎,咱们的比如说一般都是什么的状态值啊叭如说有这个哎,新创建订单啊,订单创建未支付啊,已支付啊,哎什么的,还有已完成啊,或者这个已退款啊,哎这个这些一系列的这个相关的状态值,但这些状态值存在数据表里可只是编码啊,1234种编码或者别的啊,只是编码想翻译出它所这个编码所对应的含义,是不是应该有一个字典表啊。啊,这个字典表咱们需要什么呢?是不是在我这三个数据库里面也要有,但问题就来了,哎,咱们什么呢?这个存到哎分到这三个数据库里面数据,它的状态值可不一定都是什么,那我翻译的那个字典表,各位是不是每个数据库里面我存的字典表应该是全集啊,说白了,我这张表里的数据是不是要做一个冗余。
07:24
来,我这个一张表里有相关的数据,是不是要冗余到各个数据库,那这种表就叫全局表,就叫广播表。哎,这块呢,哎对于咱们数据库来说,哎,你是这个什么呢?哎多占了一部分存储空间,但是呢,有必要,因为咱们什么每一个分片的这个数据库数据表里的数据想要进行关联查询,进行桌印的话,是不是都需要全量的字典表数据啊啊各位,这就是咱们的这个广播表,哎这个咱们的全局表的一个概念,但各位看去,呃,官方的定义啊。
08:00
每个数据库啊,实例都有这个冗于全量数据的逻辑表啊,这个也需要的,哎,它是什么呢?通过数据表啊冗余啊这块呢,说白了就是多出来这个一模一样的数据啊,是分票表的分区,与该表的数据在同一个数据库实例里面说就是刚刚给各位举个例子啊,我这个一个订单表分到什么呢?哎,这个这个A12A3啊三个数据库里面,哎,这个这在这个对应的数据库实例里面,诶能达到桌越能直接关联运行,而不是说我关联这个关联不到数据各,这就是为了达到这个目的,所以咱们需要创建这个全局表,广播表啊这块呢,哎,咱们这个解读这块也写的很清楚,哎,例如咱们系统中翻译字段的字典表啊,这个每个分片表,哎,我每个什的咱们数据节点的数据库里面都需要完整的字典表的,这个数据需要翻一字段,所以这块哎,它起名就叫。
09:00
什么呢?广播表就叫全局表啊,咱们需要搭建它的啊,这是全局表广播表的一个含义,再后啊就是ER表啊ER表什么意思呢?哎这块呢,它叫狭义上就是指父子关系中的子表,说白了就是哎我这个表是依赖别的另外一张表的,哎它是什么呢?这块呢?哎它怎么进行分表啊,这块呢也很好举例给各位,咱们也举个例子啊,就是咱们底下这个解读啊这块呢,哎咱们哎我作为子表怎么进行一个分表操作,那就是什么呢?得遵循它的什么,是不是那个附表啊,哎它跟它关联非常紧密的那个附表,你怎么进行哎这个分表的,哎咱们的什么子表也怎么分,就是大哥怎么走,我也怎么走啊这个怎么降辈儿的啊这个哎这父亲怎么走,哎,这个儿子也怎么走对吧?啊,这是什么呢?这就是咱们所说的这个一儿表啊,这块呢,各位咱们简单了解一下啊,举个例子,比如说我这块呢,有数据库里面有一张表叫。
10:00
做什么的,就是咱们的订单表啊,我这个有这个订单表,就这给他标题定一下啊,这订单表还有另外一张表啊,咱们的订单表里存着订单的基本信息,然后呢,还有另外一张表啊,字段比订单表多一些,叫什么订单详情表啊,这块呢,也给它列出来订单详情表。啊,订单详情表肯定要放一堆什么呢,更详细的订单相关的信息,但是呢,诶咱们诶真正最开始啊,咱们这个在电商平台进行查询这个,呃,所有订单的时候,查询订单信息的时候,一般订单表就够啊,咱们订单详情表是对订单表的一个补充,那这块呢,既然是这种补充关联的关系,那我订单表一定什么的跟这个,哎,咱们的订单详情表是什么,是不是一一对应的关系啊啊其实这块呢,哎,我应该这个箭头应该是反方向画一下应该是诶。刚刚表现啊,这个触发了咱们的这个,呃,这个关闭这块了啊,关闭截图了,那我再去画一下一个是咱们的订单表。
11:10
一个是按订单表,一个是订单详情表。好,那这块呢,订单表跟订单详情表,它里面数据肯定是一一对应的,我有一个订单就要有它跟它相关的详情啊,比如我订单表里面只是显示了啊,你在我平台买的这个商品叫什么?哎,你花了多少钱,然后呢,它的状态值是什么啊这个展现资料并不是太多,而订单详情哎需要展示,比如说哎,你这个商品的它的这个商家店铺是谁呀?啊对应的这个什么时候发的货呀,哎这个关联的一些什么的一些更详细的信息啊,哎产品规格啊,这块可能东西更多,那这块呢,一般在我的什么的订单详情表里面,是不是应该有订单表,哎,比如说他的主键ID作为一个外键存在,对吧?啊这块呢,两个表是可以进行着印关联的。
12:02
啊,这是咱们所说的这个订单详情表,那它在咱们进行分表操作的时候,它就是什么?就是ER表,就是咱们所说的子表啊什么意思,我订单表怎么进行分表的啊,有相应的规则,我分到什么呢?后面呃对应的什么呢?有这个三个数据库里面啊分到三个数据库里面了,按照比如说用户ID进行划分,那就是哎这个咱们划分划分完这个相关数据,比如说哎这个我在这举个例子啊,比如说这个一跟二啊分到咱们的这个什么的第一个数据库了,然后呢,三跟四啊分到咱们的什么的第二个数据库了,哎,这个五跟六啊分到第三个数据库了,我指的是他,比如说他的ID,那这块呢,哎,咱们的订单详情表是不是也得跟着哎这个,哎,咱们之前的订单表这种分配方式进行分配,对吧,因为我要什么呢,保证我在这个三个数据库里面,是不是都可以进行两个表着印关联啊。那这块呢,想要咱们完成这个效果就得做一件事,就是什么,哎,这个订单表怎么分,我订单详情表跟着你这个关联的这个ID字段,就是关联的有这个,呃,咱们的这个。
13:13
哎,关联的有这个外键ID啊,跟着这个ID字段也怎么分,也就说我这个订单详情表里面,它的这个订单表关联这个ID啊,是一样,那我也把这个订单详情表里的一二分到这儿,那订单详情表里的三四分到这儿啊,五六分到这啊保证哎咱们在同一个数据库里边两个表可以捉影关联啊各位,这就是咱们所说的ER表啊好,那继续再往下。啊,集群这个很好理解啊,咱们啊这块呢,这个学很多工具啊,比如说咱们的red数据库啊,咱们的哎这个MYS数据库啊,啊咱们的什么的,哎,各种各样的,咱们的微服务的这个什么的架构里面的一些什么的,比如说有瑞克啊注注册中心啊,或者咱们的什么的纳库斯注册中心啊,这些都可以搭集群啊集群哎就可以把它看成什么高可用,还有咱们的负载均衡的一个代名词啊,同样在咱们的买CAT2里面啊这块呢,哎,咱们什么呢,这个集群概念也在,也把它什么提出来了,而且什么呢,可以说诶更更加重点的使用它啊,包括咱们进行一个什么呢,哎,这个分库分表的时候也可以用上这个集群啊,各以这块呢,哎,咱们这个集群概念啊,这块虽然对于它什么呢,已经很熟悉了,咱们看看买CATD2里面咱们怎么去搭这个集群啊,也也并不复杂啊,在各位咱们去看看好那数据源这不用多说啊,咱们什么呢?呃,如果什么呢,对这个呃,咱们的这个。
14:39
Java开发,对咱们程序开发比较了解的同学,肯定对数据源这个很熟悉了啊,就是什么呢?我访问数据的那个什么,存储数据的那个什么的那个组件。啊,我访问这个组件相关的配置信息,它的这个角色啊,封装的这个对象啊,就叫数据源,说白了啊,就是通过我买开的读取什么呢?咱们数据源那个相关的链接啊,然后呢,这个诶直接访问到咱们的MYSQL数据库啊,这是咱们所说的数据啊,好了再往后原型库啊,原型库哎是咱们的什么的,就是咱们的买cat后面的真实的数据库啊,这可以是买S扣,也可以是别的啊,这块呢,当然这块呢,呃,咱们之后进行这个买K2的使用的时候,诶,肯定是采用的买四扣数据库,而且是买四扣八的这个版本,好,这时候咱们带各位过一过这个买四扣二相关的这些概念,咱们把这些概念都了解清楚之后呢,哎,咱们再去什么去使用它。
我来说两句