Mycat【Mycat分片技术(水平拆分-分表、ER表、全局表)】(五)-全面详解(学习总结---从入门到深化)

目录

Mycat分片技术_水平拆分-分表

Mycat分片技术_ER表

 Mycat分片技术_全局表


Mycat分片技术_水平拆分-分表

前言 

上面谈到垂直切分只是把表按模块划分到不同数据库,但没有解决单表大数据量的问题。

水平拆分 

相对于垂直拆分,水平拆分不是将表做分类,而是按照某个字段的某种规则来分散到多个库之中,每个表中包含一部分数据。

理解:

我们可以将数据的水平切分理解为是按照数据行的切分,就是将表中的某些行切分到一个数据库,而另外的某些行又切分到其他的数据库中。 

实现分表 

1、 选择要拆分的表

MySQL 单表存储数据条数是有瓶颈的,单表达到 1000 万条数据就 达到了瓶颈,会影响查询效率,需要进行水平拆分(分表)进行优化。

2、分表字段

以 orders 表为例,可以根据不同自字段进行分表

3、 修改配置文件 schema.xml

为 orders 表设置数据节点为 dn1、dn2,并指定分片规则为 mod_rule(自定义的名字) 

<table name="orders" dataNode="dn1,dn2" rule="mod_rule" ></table>

 4、修改配置文件rule.xml

分片规则:

在 rule 配置文件里新增分片规则 mod_rule,并指定规则适用字段为 customer_id, 还有选择分片算法 mod-long(对字段 求模运算),customer_id 对两个节点求模,根据结果分片.配置算法 mod-long 参数 count 为 2,两个节点。

<tableRule name="mod_rule"><rule><columns>customer_id</columns><algorithm>mod-long</algorithm></rule>
</tableRule>
<function name="mod-long"    
class="io.mycat.route.function.PartitionByMod"><!-- how many data nodes --><property name="count">2</property>
</function>

 5、 在数据节点dn2上建orders表

create table orders(id int auto_increment,order_type int,customer_id int,amount decimal(10,2),primary key(id)
);

6、 重启Mycat,让配置生效

mycat restart

7、 访问Mycat实现分片

INSERT INTO
orders(id,order_type,customer_id,amount) VALUES (1,101,100,100100);
INSERT INTO
orders(id,order_type,customer_id,amount) VALUES(2,101,100,100300);
INSERT INTO
orders(id,order_type,customer_id,amount) VALUES(3,101,101,120000);
INSERT INTO
orders(id,order_type,customer_id,amount) VALUES(4,101,101,103000);
INSERT INTO
orders(id,order_type,customer_id,amount) VALUES(5,102,101,100400);
INSERT INTO
orders(id,order_type,customer_id,amount) VALUES(6,102,100,100020);

实时学习反馈

1.Mycat技术中水平拆分主要解决___问题。

A 表字段多

B 表数据量大

C 兼容

D 并发

2.Mycat技术中水平拆分表时配置分片规则为取模时在_____配置文 件中修改。

A server.xml

B ehcache.xml

C rule.xml

D rule.xml

Mycat分片技术_ER表

分片 join 

遇到问题: orders表分片了,那和他相关的orders_detail 表未分片, join联 查的时候, master1正常查询出结果, master2上由于没有 orders_detail 表,则报错, 最后聚合结果肯定也是错误的。 

ER 表 

将子表的存储位置依赖于主表,并且物理上紧邻存放因此彻底解决了JION的效率和性能问题,根据这一思路,提出了基于E-R关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上。 

 修改配置文件schema.xml

<table name="orders" dataNode="dn1,dn2" rule="mod_rule" ><childTable name="orders_detail" primaryKey="id" joinKey="order_id" parentKey="id" />
</table>

参数:

childTable:子表

Master2上没有订单详情表创建一下 

create table orders_detail(
id int auto_increment,
order_id int,
detail varchar(200),
primary key(id)
);

重启Mycat服务

mycat restart

Mycat服务添加数据

insert into orders_detail(detail, order_id) values('detail1',1);
insert into orders_detail(detail, order_id) values('detail1',2);
insert into orders_detail(detail, order_id) values('detail1',3);
insert into orders_detail(detail, order_id) values('detail1',4);
insert into orders_detail(detail, order_id) values('detail1',5);

测试数据

select a.*,b.detail from orders a join orders_detail b on a.id=b.order_id;

实时学习反馈

1.Mycat技术中ER表解决___问题。

A 表字段多

B 表数据量大

C JOIN的效率和性能问题

D 数据节点多

2. Mycat技术中通过___标签配置ER表父子关系。

A child

B Table

C dataNode

D childTable

 Mycat分片技术_全局表

 全局表描述

在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,考虑到字典 表具有以下几个特性:

变动不频繁

数据量总体变化不大

数据规模不大,很少有超过数十万条记录。

全局表特征

全局表的插入更新操作会实时在所有节点上执行,保持各个分片的数据一致。

全局表的查询操作,只从一个节点获取。

全局表可以和任何一个表进行 JOIN 操作。

注意: 将字典表或者符合字典表特性的一些表定义为全局表,则从另外一个方面,很好的解决了数据JOIN 的难题。通过全局表+基 于E-R 关系的分片策略,Mycat 可以满足 80%以上的企业应用 开发。

配置全局表 

<!--全局表配置比较简单,不用写 Rule 规则,修改schema.xml,如下配置即可-->
<table name="dict_order_type" dataNode="dn1,dn2" type="global"></table>

在dn2创建 dict_order_type 表

#订单类型字典表
create table dict_order_type(id int auto_increment,order_type varchar(200),primary key(id)
);

重启Mycat

mycat restart

Mycat上添加数据

insert into dict_order_type(id,order_type)values(101,'type1');
insert into dict_order_type(id,order_type)values(102,'type2');

测试数据

select * from dict_order_type;

实时学习反馈

1.Mycat技术中全局表主要解决___问题。

A 表数据量大

B 表字段多

C 变动不频繁和数据量总体不大的数据

D 代码量庞大,系统臃肿

2. Mycat技术中如何设置全局表____。

A global

B rule="mod_url"

C dataNode="global"

D type="global"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13394.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试 | HTML常见的知识点

什么是 web web 就是 world wide web 的缩写&#xff0c;称之为全球广域网&#xff0c;俗称 WWW。对于用户来说它其实就是由多个网页组成在一起而形成的一种服务&#xff08;Web&#xff09;. 我们可以将 web 理解为就是当前的一种互联网。对于我们来说更多的就是网站服务。网…

C++学习笔记-第11单元 标准模板库介绍

第11单元 标准模板库介绍 文章目录 第11单元 标准模板库介绍单元导读11.1 标准模板库(STL)基础11.2 STL容器简介11.3 STL迭代器简介11.3.1 使用迭代器访问容器中的元素11.3.2 迭代器类型11.3.3 迭代器支持的运算符操作 11.4 顺序容器11.4.1 顺序容器的逻辑结构11.4.2 代码展示s…

Java的线程(Thread)、线程池(ThreadPool)

一、线程&#xff08;Thread&#xff09; 1、线程的创建 Java创建线程是采用内核线程: 由操作系统内核支持的线程&#xff0c;通过操纵调度器对线程进行调度(内核切换线程)&#xff0c;将线程的任务映射到各个处理器上。 调native方法 —> 调C -> 调操作系统(通过操作…

buuctf pwn入门1

目录 1. test_your_nc(简单nc ) pwn做题过程 2. rip(简单栈溢出) 3. warmup_csaw_2016(栈溢出 覆盖Return_Address) 4. ciscn_2019_n_1(栈溢出 浮点数十六进制) (1) 覆盖v2值 (2) 利用system("cat /flag"); 5. pwn1_sctf_2016(字符逃逸栈溢出 32位) 6. jarvis…

【Linux】什么是文件系统及inode?如何创建软硬链接?软硬链接有什么作用?

inode软硬链接创建软硬链接理解硬链接理解软链接 inode 了解一下文件系统&#xff1a; Linux ext2文件系统&#xff0c;上图为磁盘文件系统图&#xff08;内核内存映像肯定有所不同&#xff09;&#xff0c;磁盘是典型的块设备&#xff0c;硬盘分区被 划分为一个个的block。…

使用MATLAB画SCI论文图

从gcf和gca说起 不论是 Python 绘图还是Matlab绘图&#xff0c;想要获得更好看的图&#xff0c;都会用到这两个单词。 gcf&#xff1a;get current figure&#xff0c;是目标图像的图形句柄对象 gca&#xff1a;get current axes&#xff0c;是目标图像的坐标轴句柄对象 Mat…

基于条件风险价值CVaR的微网动态定价与调度策略(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

el-tab-pane 和el-tooltip及el-tree 组合使用

<el-tabs v-model"groupId" tab-click"handleClick"><el-tab-pane label"全部" name"0"></el-tab-pane><el-tab-pane v-for"items in editableTabs" :key"items.group_id" :name"item…

java项目之美食推荐管理系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的美食推荐管理系统。 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;ssm&#xff0c;mybatis JDK版…

2.3 Web应用 -1 web 应用概述

2.3 Web应用 -1 web 应用概述 Web与HTTPHTTP协议概述 Web与HTTP World Wide Web: Tim Berners-Lee 网页网页互相链接 网页(Web Page)包含多个对象(objects) 对象&#xff1a;HTML文件、JPEG图片、视频文件、动态脚本等基本HTML文件&#xff1a;包含对其他对象引用的链接 对象的…

【MongoDB】

目录 MongoDB基本简介 MongoDB基本概念 MongoDB和关系数据库的对比 MongoDB数据类型 MongoDB元素命名规则 MongoDB安装部署 MongoDB配置管理 MongoDB服务管理 MongoDB 多实例配置 基本操作 集合 数据备份与恢复 MongoDB复制集集群部署及管理 MongoDB复制集ReplSe…

OPCUA 的历史数据库/聚合服务器的实现细节

进入了AI 大数据时代&#xff0c;无论是工业自动化系统&#xff0c;还是物联网系统&#xff0c;对大数据的采集&#xff0c;存储和分析都十分重要。大数据被称为工业的石油&#xff0c;未来制造业的持续改善离不开大数据。 传统的应用中&#xff0c;历史数据的存储是特定的数据…