企业实战_17_MyCat水平扩展_跨分片查询_ER分片

接上一篇:企业实战_16_MyCat全局自增ID
https://blog.csdn.net/weixin_40816738/article/details/100064315

案例比较:
在垂直拆分场景中,针对字段个数少的类型为字典类型的表,我们可以使用全局表的方式解决。
在水平扩展场景中,针对数据量很大的表,怎样实现跨分片查询呢? ER分片

文章目录

  • 一、跨分片查询的另一个场景
    • 1. 思考
    • 2. 回顾!
    • 3. 目前,归纳
          • 二、配置order_detail表的全局自增id

一、跨分片查询的另一个场景

1. 思考

order_master表进行了切片操作,而order_detail没有进行切片操作, 2张表,不在一个分片中,现在这种关联属于跨分片关联,针对这种跨分片的查询应该如何处理呢?

2. 回顾!

  • 在垂直拆分场景中,针对这种跨分片查询的情况,有3种方式解决跨分片查询。
方式应用场景/说明
api结果拼接,比较耗时
数据冗余数据冗余量大
全局表字段少 字典类型的表

3. 目前,归纳

  • 在水平扩展场景,针对这种跨分片查询的情况,使用方式解决跨分片查询。
方式应用场景/说明
ER分片字段多,访问频繁,数据集大
  • 得出结论!

全局表:适用于字段少的字典类型的表的场景,而order_master订单表是一个非常庞大的表,调用比较频繁,因此并不适合使用全局表的应用场景。

ER分片表,是通过ER关系来进行分片的,可以把需要两个关联的表,根据他们的关联键,把要关联的这些数据分布到同一个分片内,那么,我们在同一个分片内来解决这个关联问题,以此来,解决跨分片查询的问题

mysql  -uapp_imooc -p123456 -h192.168.92.101 -P8066mysql> select * from order_master a join order_detail b on a.order_id = b.order_id;
ERROR 1064 (HY000): invalid route in sql, multi tables found but datanode has no intersection  sql:select * from order_master a join order_detail b on a.order_id = b.order_id
mysql>

在这里插入图片描述
ER分片
#分别在order_db01、order_db02、order_db03、order_db04数据库中创建order_detail表


#登录node2节点,在order_db01、order_db02数据库中创建order_detail表
[root@node2 ~]# mysql -uroot -p123456
mysql> use order_db01;
mysql> use order_db02;
依次初始化创建表sql#登录node3节点,在order_db03、order_db04数据库中创建order_detail表
[root@node3 ~]# mysql -uroot -p123456
mysql> use order_db03;
mysql> use order_db04;
依次初始化创建表sql

初始化创建表sql

CREATE TABLE `order_detail` (`order_detail_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键ID,订单详情表ID',`order_id` int(10) unsigned NOT NULL COMMENT '订单表ID',`product_id` int(10) unsigned NOT NULL COMMENT '订单商品ID',`product_name` varchar(50) NOT NULL COMMENT '商品名称',`product_cnt` int(11) NOT NULL DEFAULT '1' COMMENT '购买商品数量',`product_price` decimal(8,2) NOT NULL COMMENT '购买商品单价',`average_cost` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '平均成本价格',`weight` float DEFAULT NULL COMMENT '商品重量',`fee_money` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '优惠分摊金额',`w_id` int(10) unsigned NOT NULL COMMENT '仓库ID',`modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',PRIMARY KEY (`order_detail_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单详情表';

数据清理

# 删除order_master的数据
mysql  -uapp_imooc -p123456 -h192.168.92.101 -P8066
use imooc_db;
delete from order_master;

添加分片配置
修改编辑schema.xml
order_master在的table标签中添加childTable 标签,并把下面以前定义的的order_detailtable标签删除

cd /app/mycat/conf/
vim schema.xml
 <table name="order_master"          primaryKey="order_id"          dataNode="ordb01,ordb02,ordb03,ordb04" rule="order_master" autoIncrement="true"/>
<childTable name="order_detail"  primaryKey="order_detail_id" joinKey="order_id"  parentKey="order_id" autoIncrement="true" />
</table>

注:在childTable标签中,没有定义 dataNode属性,因此,说明字表和父表公用此属性

  • joinKey 父表和字表关联的键
  • parentKey 父表主键
  • primaryKey order_detail表的主键
  • autoIncrement 全局自增id 一旦开启需要在配置文件中配置才可以生效

由于order_detail配置了autoIncrement="true" 这个属性,因此,我们需要配置order_detail表的全局自增id
配置order_detail表的全局自增id

二、配置order_detail表的全局自增id

需要在sequence_db_conf.properties文件中,添加order_detail的id数据节点

cd /app/mycat/conf/
vim sequence_db_conf.properties#sequence stored in datanode
GLOBAL=mycat
ORDER_MASTER=mycat
ORDER_DETAIL=mycat

设置自增配置项‘

mysql -uroot -p123456
use mycat;# 查询现有
mysql> select * from MYCAT_SEQUENCE;
+--------------+---------------+-----------+
| name         | current_value | increment |
+--------------+---------------+-----------+
| GLOBAL       |             1 |         1 |
| ORDER_MASTER |            11 |         1 |
+--------------+---------------+-----------+# 插入新的自增配置项
mysql> insert into MYCAT_SEQUENCE values ('ORDER_DETAIL',1,1);
Query OK, 1 row affected (0.00 sec)mysql> select * from MYCAT_SEQUENCE;
+--------------+---------------+-----------+
| name         | current_value | increment |
+--------------+---------------+-----------+
| GLOBAL       |             1 |         1 |
| ORDER_DETAIL |             1 |         1 |
| ORDER_MASTER |            11 |         1 |
+--------------+---------------+-----------+
3 rows in set (0.00 sec)# 为了演示好看,将自增ID都改成从1开始,生产环境不能操作,这一步也可以不操作
mysql> update MYCAT_SEQUENCE set current_value =1 where name ='ORDER_MASTER';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from MYCAT_SEQUENCE;
+--------------+---------------+-----------+
| name         | current_value | increment |
+--------------+---------------+-----------+
| GLOBAL       |             1 |         1 |
| ORDER_DETAIL |             1 |         1 |
| ORDER_MASTER |             1 |         1 |
+--------------+---------------+-----------+
3 rows in set (0.00 sec)

重启mycat

mycat stopmycat start
# 登录mycat批量插入order_master和order_detail表的数据
mysql  -uapp_imooc -p123456 -h192.168.92.101 -P8066use imooc_db;# 初始化脚本,批量插入order_master和order_detail表的数据

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

从上面图的order_id中可以看出,order_master和order_detail都在通一个分片中

select a.order_id,order_sn,product_name from order_master a join order_detail b on a.order_id=b.order_id;

在这里插入图片描述

到此,ER跨分片查询的问题已经解决!

下一篇:企业实战_18_MyCat_ZK集群安装部署
https://gblfy.blog.csdn.net/article/details/100075631

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

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

相关文章

bmob php支付,支付服务 - 支付服务RESTful 开发文档 - 《Bmob 文档中心》 - 书栈网 · BookStack...

注意&#xff1a;目前支付宝无法使用&#xff0c;请用户暂时不要接入&#xff0c;等待官方的恢复公告&#xff01;打款需知1.打款前请先在控制台填写以下信息2.每月的1、2、16、17号为申请打款时间&#xff0c;15号、月尾日为打款时间&#xff0c;确保用户有半个月的追诉期。Bm…

企业实战_22_MyCatSQL拦截

接上一篇&#xff1a;企业实战_21_MyCat_keepalived 安装配置验证 https://gblfy.blog.csdn.net/article/details/100073474 Mycat SQL拦截应用场景&#xff0c;可以指定监控的sql类型 文章目录1. 在server.xml文件中添加sql拦截属性标签2. 测试验证3. 查看sql拦截监控日志1. 在…

MongoDB凭什么跻身数据库排行前五?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 孙浩峰DB-Engines 数据库流行度排行榜发布了5 月份的数据&#xff0c;前六名的排名“千年不变”&#xff0c;分别是&#xff1a;Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB 和IBM Db2。而其中&#xff0c;Mo…

企业实战_23_MyCat SQL防火墙

接上一篇&#xff1a;企业实战_22_MyCatSQL拦截 https://blog.csdn.net/weixin_40816738/article/details/100073474 文章目录1. SQL防火墙_白名单配置2. 白名单测试3. SQL防火墙_黑名单配置4. SQL防火墙_黑名单测试SQL防火墙&#xff1a;包括2个标签<whitehost></whi…

同样是消息队列,Kafka凭什么速度那么快?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 邴越来源 | 技术琐话Kafka的消息是保存或缓存在磁盘上的&#xff0c;一般认为在磁盘上读写数据是会降低性能的&#xff0c;因为寻址会比较消耗时间&#xff0c;但是实际上&#xff0c;Kafka的特性之一就是高吞吐率。即使是普…

企业实战_10_Mycat集成ZK实现配置同步

主机名IP地址角色数据库mycat192.168.43.32MYCAT ,MYSQL,ZKmycat&#xff08;全局自增id&#xff09;node1192.168.43.104ZKMYSQLorder_db01和order_db01node2192.168.43.217ZK,MYSQLorder_db03和order_db04node3192.168.43.172MYCAT ,MYSQLmycat&#xff08;全局自增id&#x…

亚马逊重组游戏开发部门:数个未发布游戏被“扼杀”;台积电明年开始为苹果iPhone生产5nm处理器……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 盒马送餐机器人、无人化再进…

psp中java,PSP编程概述

元旦准备买NDS&#xff0c;顺带关注了下PSP&#xff0c;其实是想&#xff0c;或许买PSP也不错~PSP很像一个平台&#xff0c;提供了很多东西&#xff0c;譬如官方的PS模拟器~在上面编程也是个不错的想法。国外的一个网站提供了很多信息&#xff0c;PS2Dev Network (http://www.p…

企业实战_18_MyCat_ZK集群安装部署

接上一篇&#xff1a;企业实战_17_MyCat水平扩展_跨分片查询_ER分片 https://gblfy.blog.csdn.net/article/details/100066013 文章目录一、使用ZK记录Mycat的配置1. 操作步骤2. 服务器部署分布二、zk集群安装部署2.1. 安装jdk并验证2.2. ZK下载2.3. node1下载同步zk2.4. 基础配…

分布式精华问答 | 分布式与集群的区别是什么?

什么是分布式计算&#xff1f;所谓分布式计算是一门计算机科学&#xff0c;它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分&#xff0c;然后把这些部分分配给许多计算机进行处理&#xff0c;最后把这些计算结果综合起来得到最终的结果。1Q&#xff1a;…

Mycat设置开机自启

接上一篇&#xff1a;实战_21_Mycat_MySql更新数据库失败 --read-only https://blog.csdn.net/weixin_40816738/article/details/100059688 下载mycat wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz解压即安装mycat tar -zxf Mycat…

最近,京东AR又爆出哪般神奇?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 刘晶晶只用一部手机就可在线“试用”口红&#xff0c;效果堪比美妆男主李佳琪&#xff0c;厉不厉害&#xff1f;只要轻轻一点就可一目了然购买的家具在家中摆放的效果怎样&#xff0c;神不神奇&#xff1f;时间飞快&#xff…

zookeeper开机自启动

编辑rc.local vim /etc/rc.d/rc.local2.需要指定jdk路径以及zookeeper启动路径 export JAVA_HOME/app/jdk1.8.0_144 /app/zookeeper-3.4.11/bin/zkServer.sh start3. 启动zookeeper cd /app/zookeeper-3.4.11/bin ./zkServer.sh start查看zk启动状态 /app/zookeeper-3.4.11…

10分钟读懂什么是容器云?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 宝哥devops运维来源 | http://t.cn/ECwSNgj容器技术是近几年云行业发展中不可缺少的一环。Docker和k8s的大热极大可能会推动云计算PAAS层的完善和普及。那么容器云到底是怎样的技术形态&#xff1f;究竟是概念还是可落地的应…

企业实战_19_MyCat初始化ZK并配置Mycat支持ZK

接上一篇&#xff1a;企业实战_18_MyCat_ZK集群安装部署 https://gblfy.blog.csdn.net/article/details/100075631 文章目录一、初始化集群中的数据1. 配置复制2. 初始化zookeeper集群中的数据二、验证数据是否被初始化到集群中2.1. 进入mycat01服务节点2.2. 使用ls命令查看当前…

Hadoop精华问答 | 基于Hadoop的数据中心有什么好处?

戳蓝字“CSDN云计算”关注我们哦&#xff01;2006年项目成立的一开始,“Hadoop”这个单词只代表了两个组件——HDFS和MapReduce。到现在的13个年头,这个单词代表的是“核心”&#xff0c;今天我们就来看看关于Hadoop的精华问答。1Q&#xff1a;基于Hadoop的数据中心有什么好处&…

企业实战_20_MyCat使用HAPpoxy对Mycat负载均衡

上一篇&#xff1a;企业实战_19_MyCat初始化ZK并配置Mycat支持ZK https://gblfy.blog.csdn.net/article/details/100087824 解决了引入多个mycat节点之间配置文件信息同步问题 如何在多个mycat之间进行负载均衡的问题&#xff1f; 在某一个mycat节点出现宕机之后&#xff0c;我…

安全,从写第一行代码开始!

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 刘晶晶伴随5G时代的脚步渐进&#xff0c;物联网发展也将成井喷式增长&#xff0c;“网络安全”这个老生常谈的话题似乎进入了新阶段。数据是天使&#xff1f;还是魔鬼&#xff1f;归根结底&#xff0c;没有安全保障的物联网终…

Linux zookeeper下载、单点部署

说明地址ziphttp://mirror.bit.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.5.5-bin.tar.gz命令下载wget http://mirror.bit.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.5.5-bin.tar.gz http://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zoo…

聚科技精英,享开源之美- 2019 Open Source Summit 主题演讲+项目亮点

2019年6月24-26日&#xff0c;在上海世博中心&#xff0c;由Linux基金会主办的LinuxCon ContainerCon CloudOpen大会&#xff08;简称LC3&#xff09;将与CNCF主办的KubeCon CloudNativeCon大会合体&#xff0c;自此&#xff0c;大会正式更名为KubeCon CloudNativeCon Ope…