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天前
|
算法 前端开发 机器人
一文了解分而治之和动态规则算法在前端中的应用
该文章详细介绍了分而治之策略和动态规划算法在前端开发中的应用,并通过具体的例子和LeetCode题目解析来说明这两种算法的特点及使用场景。
一文了解分而治之和动态规则算法在前端中的应用
|
7天前
|
算法 调度
贪心算法基本概念与应用场景
尽管贪心算法在许多问题中都非常有效,但它并不总是会产生最优解。因此,在应用贪心算法前,重要的是先分析问题是否适合采用贪心策略。一些问题可能需要通过动态规划或回溯等其他算法来解决,以找到确切的全局最优解。
28 1
WK
|
10天前
|
机器学习/深度学习 算法 数据挖掘
PSO算法的应用场景有哪些
粒子群优化算法(PSO)因其实现简单、高效灵活,在众多领域广泛应用。其主要场景包括:神经网络训练、工程设计、电力系统经济调度与配电网络重构、数据挖掘中的聚类与分类、控制工程中的参数整定、机器人路径规划、图像处理、生物信息学及物流配送和交通管理等。PSO能处理复杂优化问题,快速找到全局最优解或近似解,展现出强大的应用潜力。
WK
16 1
|
19天前
|
机器学习/深度学习 算法 Python
群智能算法:深入解读人工水母算法:原理、实现与应用
近年来,受自然界生物行为启发的优化算法备受关注。人工水母算法(AJSA)模拟水母在海洋中寻找食物的行为,是一种新颖的优化技术。本文详细解读其原理及实现步骤,并提供代码示例,帮助读者理解这一算法。在多模态、非线性优化问题中,AJSA表现出色,具有广泛应用前景。
|
1天前
|
算法 前端开发
一文了解贪心算法和回溯算法在前端中的应用
该文章深入讲解了贪心算法与回溯算法的原理及其在前端开发中的具体应用,并通过分析LeetCode题目来展示这两种算法的解题思路与实现方法。
|
26天前
|
机器学习/深度学习 算法 数据挖掘
R语言中的支持向量机(SVM)与K最近邻(KNN)算法实现与应用
【9月更文挑战第2天】无论是支持向量机还是K最近邻算法,都是机器学习中非常重要的分类算法。它们在R语言中的实现相对简单,但各有其优缺点和适用场景。在实际应用中,应根据数据的特性、任务的需求以及计算资源的限制来选择合适的算法。通过不断地实践和探索,我们可以更好地掌握这些算法并应用到实际的数据分析和机器学习任务中。
|
1月前
|
算法 C++
A : DS串应用–KMP算法
这篇文章提供了KMP算法的C++实现,包括计算模式串的next数组和在主串中查找模式串位置的函数,用于演示KMP算法的基本应用。
|
1月前
|
缓存 算法 前端开发
深入理解缓存淘汰策略:LRU和LFU算法的解析与应用
【8月更文挑战第25天】在计算机科学领域,高效管理资源对于提升系统性能至关重要。内存缓存作为一种加速数据读取的有效方法,其管理策略直接影响整体性能。本文重点介绍两种常用的缓存淘汰算法:LRU(最近最少使用)和LFU(最不经常使用)。LRU算法依据数据最近是否被访问来进行淘汰决策;而LFU算法则根据数据的访问频率做出判断。这两种算法各有特点,适用于不同的应用场景。通过深入分析这两种算法的原理、实现方式及适用场景,本文旨在帮助开发者更好地理解缓存管理机制,从而在实际应用中作出更合理的选择,有效提升系统性能和用户体验。
73 1
|
1月前
|
数据采集 搜索推荐 算法
【高手进阶】Java排序算法:从零到精通——揭秘冒泡、快速、归并排序的原理与实战应用,让你的代码效率飙升!
【8月更文挑战第21天】Java排序算法是编程基础的重要部分,在算法设计与分析及实际开发中不可或缺。本文介绍内部排序算法,包括简单的冒泡排序及其逐步优化至高效的快速排序和稳定的归并排序,并提供了每种算法的Java实现示例。此外,还探讨了排序算法在电子商务、搜索引擎和数据分析等领域的广泛应用,帮助读者更好地理解和应用这些算法。
24 0
|
22天前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。