MyCat - 分片 - 分片规则 - 应用指定算法 | 学习笔记

简介: 快速学习 MyCat - 分片 - 分片规则 - 应用指定算法

开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(二):MyCat - 分片 - 分片规则 - 应用指定算法】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/756/detail/13272


MyCat - 分片 - 分片规则 - 应用指定算法

内容介绍:

一、应用指定算法

二、测试

 

一、应用指定算法

1.简介

应用指定算法分片指的是在运行阶段由应用程序自主决定当前这条数据路由到哪个分片,直接根据字符子串(必须是数字)继续的分片号,然后再路由到对应的分片。

2.配置如下

<tableRule name =" arding - by - substring ">

< rule >

< columns > ids / columns >

xalgorithm > sharding - by - substring </ algorithm >

</ rule >

</ t ableRule >

< function name =" sharding - by - substring " class =" io . mycat . route . function . PartitionDirectBySubString ">

< property name =" startIndex ">0</ property ><!-- zero - bas ed --> xproperty name =" size ">2</ property >

< property name =" partitionCount ">3</ pr operty >

< property name =" defaultPartition '>0</ property ></ funct ion >

首先是分片规则安照哪个字段进行分片,然后来指定分片法,下面要配置分片结果的处理类,指定 startIndex 起始索引,这个起始索引指的是子字符串的起始索引,从哪个位置开始截取子字符串,size 截取的长度是多长,partitionCount 指的是分片的数量,默认的分片为零,假如在这里插入了一个 ID,它的值是 05-100000002,按照刚才的配置从第一位开始截取,截取长度是两个,截取出来的就是 05,这两位代表的就是他获得的分区号,如果 05 一共有五个分区,他就会存储在这个分区中,如果没有,他会使用默认分区。

 

二、测试

1.配置

<table name =" tb _ app " dataNode ="dn1,dn2,dn3" rule =" sharding - by - substring "/>

首先配置一个逻辑表,在 schema.xml 中进行配置,然后需要进行配置分配规则,分片规则需要使用 sharding - by - substring

<tableRule name =" sharding - by - substring "

xrule >

< columns > id </ columns >

< algorithm > sharding - by - substring </ algorithm ></ rule >

</tab1eRule

还需要分片的函数

< function name =" sharding - by - substring " class =" io . mycat . route . function . PartitionDirectBySubString ">

< property name =" startIndex ">0</ property ><!-- zero - bas ed --> xproperty name =" size ">2</ property >

< property name =" partitionCount ">3</ pr operty >

< property name =" defaultPartition '>0</ property ></ funct ion >

这里面的属性都不用改变,这些属性已经配置好了,还需要重启 my cat,My cat 重启,完成之后,再次重新连接这个 mycat,mycat 重新连接后执行指令 show tables 查看一下里面的表,刚才所设置的表 APP 已经有了。

image.png

接下来需要创建表结构,插入数据

2.数据

CREATE TABLE ‘ tb _ app (

id varchar (10) NOT NULL cOMMENT ‘ ID ',

name varchar (200) DEFAULT NULL cOMMENT ‘名称’,

PRIMARY KEY ( id )

) ENGINE = InnoDB DEFAULT CHARSET = ut f8mb4; I

执行,表结构已经创建好了,接下来再像这张表结构中插入数据

insert into tb _ app ( id , name ) values ('00-00001','Testx00001');

insert into tb _ app ( id , name ) values ('01-00001",'Test100001');

insert into tb _ app ( id , name ) values ('01-00002','Test200001');

insert into tb _ app ( id , name ) values ('02-00001','Test300001');

insert into tb _ app ( id , name ) values ('02-00002','TesT400001');

数据插入进来以后,执行select*from tb_app

image.png

这五条数据都已经有了,接下来需要知道这五条数据到底存储在哪个节点当中,select*from tb_app 第一个中有,select*from tb_app 第二个中也有,select*from tb_app 第三个中也有,在插入数据时,前两位 00,01,01,02,02这些就是指定分片,00 指定第一个分片,01 指定第二个分片,零二指定第三个分片,接下来还想插入一条数据

insert into tb _ app ( id , name ) values ('00-00003','Testx00001');让这条数据在第一个分片中就是 00,接下来再来看第一个分片

image.png

00003 就已经进来了,这就是应用指定分配

相关文章
|
1月前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
41 3
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的优化算法及其应用
【10月更文挑战第8天】 本文将探讨深度学习中常用的优化算法,包括梯度下降法、Adam和RMSProp等,介绍这些算法的基本原理与应用场景。通过实例分析,帮助读者更好地理解和应用这些优化算法,提高深度学习模型的训练效率与性能。
142 63
|
1月前
|
算法 Java 数据库
美团面试:百亿级分片,如何设计基因算法?
40岁老架构师尼恩分享分库分表的基因算法设计,涵盖分片键选择、水平拆分策略及基因法优化查询效率等内容,助力面试者应对大厂技术面试,提高架构设计能力。
美团面试:百亿级分片,如何设计基因算法?
|
20天前
|
存储 编解码 负载均衡
数据分片算法
【10月更文挑战第25天】不同的数据分片算法适用于不同的应用场景和数据特点,在实际应用中,需要根据具体的业务需求、数据分布情况、系统性能要求等因素综合考虑,选择合适的数据分片算法,以实现数据的高效存储、查询和处理。
|
16天前
|
机器学习/深度学习 JSON 算法
二叉树遍历算法的应用场景有哪些?
【10月更文挑战第29天】二叉树遍历算法作为一种基础而重要的算法,在许多领域都有着不可或缺的应用,它为解决各种复杂的问题提供了有效的手段和思路。随着计算机科学的不断发展,二叉树遍历算法也在不断地被优化和扩展,以适应新的应用场景和需求。
24 0
|
20天前
|
存储 缓存 算法
分布式缓存有哪些常用的数据分片算法?
【10月更文挑战第25天】在实际应用中,需要根据具体的业务需求、数据特征以及系统的可扩展性要求等因素综合考虑,选择合适的数据分片算法,以实现分布式缓存的高效运行和数据的合理分布。
|
27天前
|
存储 算法 搜索推荐
这些算法在实际应用中有哪些具体案例呢
【10月更文挑战第19天】这些算法在实际应用中有哪些具体案例呢
30 1
|
1月前
|
机器学习/深度学习 人工智能 算法
[大语言模型-算法优化] 微调技术-LoRA算法原理及优化应用详解
[大语言模型-算法优化] 微调技术-LoRA算法原理及优化应用详解
75 0
[大语言模型-算法优化] 微调技术-LoRA算法原理及优化应用详解
|
1月前
|
算法 Java 数据库
美团面试:百亿级分片,如何设计基因算法?
40岁老架构师尼恩在读者群中分享了关于分库分表的基因算法设计,旨在帮助大家应对一线互联网企业的面试题。文章详细介绍了分库分表的背景、分片键的设计目标和建议,以及基因法的具体应用和优缺点。通过系统化的梳理,帮助读者提升架构、设计和开发水平,顺利通过面试。
美团面试:百亿级分片,如何设计基因算法?
|
27天前
|
监控 算法 数据挖掘
HyperLogLog算法有哪些应用场景呢
【10月更文挑战第19天】HyperLogLog算法有哪些应用场景呢
15 0