数据库中间件分片算法之enum

教育行业大文件分片上传技术解析与实践 文件分片上传是解决大文件传输的核心技术,通过将文件切割为多个小块并行传输,显著提升上传成功率与速度。其技术原理基于HTTP协议的分块传输机制,前端使用Blob.slice进行二进制切割,服务端通过流式合并降低内存消耗。在教育视频等大文件场景中,该技术能有效应对网络波动与服务器压力,结合P2P传输与动态压缩策略,可实现40%以上的带宽利用率提升。当前主流方案包括自建MinIO集群与云服务商智能分层存储,WebTransport等新协议更将首包时间降低300ms。 阅读详情
前言

最近挺焦虑的,不知道未来该做什么,方向又是什么。只能用别慌,月亮也正在大海的某处迷茫。来安慰下自己。不过学习的初心咱们还是不要忘记。今天我们学习的是enum分片算法。

1.hash分区算法
2.stringhash分区算法
3.enum分区算法
4.numberrange分区算法
5.patternrange分区算法
6.date分区算法
7.jumpstringhash算法

enum分区算法的配置
<tableRule name="rule_enum">
        <rule>
            <columns>code</columns>
            <algorithm>func_enum</algorithm>
        </rule>
    </tableRule>

<function name="enum" class="enum">
<property name="mapFile">partition.txt</property>
<property name="defaultNode">0</property>
<property name="type">0</property>
</function>

enum和之前的hash算法一样。需要在rule.xml中配置tableRule和function。

  • tableRule标签,name对应的是规则的名字,而rule标签中的columns则对应的分片字段,这个字段必须和表中的字段一致。algorithm则代表了执行分片函数的名字。
  • function标签,name代表分片算法的名字,算法的名字要和上面的tableRule中的标签相对应。class:指定分片算法实现类。property指定了对应分片算法的参数。不同的算法参数不同。
  • mapFile:指定配置文件名。其格式将在下面做详细说明。
  • defaultNode:指定默认节点号。默认值为-1,不指定默认节点。
  • type:指定配置文件中key的类型。0:整型; 其它:字符串。

mapfile文件格式配置如下:
a.type=0,
int1=node0
int2=node1

a.type=其他
string1=node0
string2=node1

1.启动加载配置

当启动的时候,会先根据type的值判断是字符串还是数字。然后把mapfile中配置的值加载到内存中,形成一个映射表。
例如上面的配置中type=0,就可以判断是数字,然后查看mapFile对应的文件partition.txt,可以查到:
10000=0
10010=1
也就是枚举值10000,就存放在分片1上,而枚举值10010,就存放在分片2上。

2.运行过程

当在运行的过程中,如果有用户通过查询code=10000或者是code=10001的时候,就会访问这个枚举算法。根据上面的映射表直接查询得到分片的编号。

3.我们建表来测试一下。

通过创建test_enum表,我们插入三条数据,分别是code=10000,10010,10020,可以看到10000被存放在分片1上,10010被存放在分片2上。这个和我们在partition.txt中配置的文件一样。当我们插入10020的时候,因为枚举值不存在,它会选择默认的分片节点dn1。这里不会因为错误而报错。
枚举在使用的时候,需要把已知的全部罗列出来。但是也有劣势,就是可能罗列不全,在这个时候把不在枚举定义范围的数字存放到默认节点是一个没有办法的办法,如果突然因为某个新版本上线,出现一些新的枚举类型而没有及时更新,会导致默认节点数据快速膨胀。此时就需要进行扩容,然后实现局部数据迁移。

注意事项
  1. mapfile文件不包含“=”的行将被跳过.
  2. 重复的枚举值的分区数据节点以最后一个配置为准。
  3. 分片字段为该枚举类型。
  4. 分片字段为NULL时,数据落在defaultNode节点上,若此时defaultNode没有配置,则会报错;当真实存在于mysql的字段值为not null的时候,报错 “Sharding column can’t be null when the table in MySQL column is not null”
后记

今天介绍的枚举算法较为简单。后续将继续带来剩下几种算法,谢谢支持!

搞懂分库分表 12 种分片算法 本文中我们讲解了ShardingSphere-jdbc所支持的12种分片算法,每种算法都具有独特的特点。在实际应用中,需要结合具体的业务场景来灵活选择和应用适合的分片算法。 阅读详情

相关推荐

IDM更改下载路径的详细指南

Internet Download Manager(IDM)是一款功能全面的下载加速工具,它支持多种浏览器和协议,能够显著提升下载速度,同时提供断点续传、多线程下载等实用功能。IDM的用户界面简洁明了,操作便捷,使得用户能够轻松管理下载任务。此外,IDM还支持自动分类下载文件、定时下载等高级功能,进一步提升了用户的下载体验。通过本文的介绍,相信用户已经掌握了如何在IDM中更改下载路径的方法。这一功能不仅提升了下载效率和文件管理便捷性,还满足了用户的个性化需求。

nntxthml的博客 1761

数据库 常用分片算法分析

分片算法 【范围法】 以用户中心的业务主键uid为划分依据,将数据水平切分到两个数据库实例上去: soap_db1:存储0到1千万的uid数据 soap_db2:存储1到2千万的uid数据 范围法的优点是: 切分策略简单,根据uid,按照范围,业务很快能够定位到数据在哪个库上 扩容简单,如果容量不够,只要增加soap_db3即可 范围法的不足是: uid必须要满足递增的特性 数据量不均,新增的soap_db3,在初期的数据会比较少 请求量不均,一般来说,新注册的用户活跃度会比较高,故soap_db2往往会比

qq_42271561的博客 2494

当vCenter的证书过期、Root密码过期、Root密码遗忘同时发生时的解决方法与步骤

vCenter,强制修改root密码,修改SSO User密码,修复证书过期问题

OCTSJimmy的专栏 5542

12 种分片算法,大厂都在用

这次将详细介绍如何在中实战 5 种分片策略和 12 种分片算法,自定义分片算法,比较它们的应用场景以及优劣。本文中我们讲解了所支持的12种分片算法,每种算法都具有独特的特点。在实际应用中,需要结合具体的业务场景来灵活选择和应用适合的分片算法。

tangjieqing的博客 1027

嵌入式系统中的轻量级压缩实践——miniLZO在STM32上的性能优化

本文深入探讨了miniLZO轻量级压缩算法在STM32嵌入式系统中的性能优化实践。通过对比无损压缩算法的性能特点,详细解析了miniLZO在内存占用、压缩速度方面的优势,并提供了STM32移植、参数调优及创新应用案例,帮助开发者在资源受限环境中实现高效数据压缩。

weixin_30776273的博客 83

在线机器学习(OML-AD)应对时序数据概念漂移的异常检测实战

时序数据异常检测是监控系统健康、识别业务风险的核心技术。其基本原理是通过预测模型学习数据的正常模式,并将预测误差作为异常判定的依据。然而,当数据背后的统计规律随时间发生变化,即发生概念漂移时,传统的静态模型会失效,导致误报和漏报激增。在线机器学习技术通过增量学习,使模型能够随每个新数据点实时微调,为预测式异常检测提供了动态适应能力,从而在数据流持续演化的场景下保持检测的鲁棒性。这种将预测与检测无缝衔接的OML-AD框架,尤其适用于工业监控、金融风控等对实时性与资源效率要求高的领域,有效解决了概念漂移这一核心

weixin_29889665的博客 529

分片算法详解:原理、类型与实现方案

分片算法详解:原理、类型与实现方案

weixin_43076660的博客 1165

Dify 1.0+内网部署全攻略:模型插件离线安装与信创环境适配

本文详细介绍了Dify 1.0+版本在内网环境中的部署全攻略,重点解析了模型工具插件的离线安装方法与信创环境适配技巧。通过实战经验分享,帮助企业在严格的内网隔离条件下高效部署AI平台,解决插件依赖和安装难题,提升大语言模型的应用效率。

weixin_29224529的博客 273

一口气搞懂分库分表 12 种分片算法,大厂都在用

本文是《ShardingSphere5.x分库分表原理与实战》系列的第五篇文章,我们一起梳理下框架中的核心部分分片策略和分片算法,其内部针为我们提供了多种分片策略和分片算法,来应对不同的业务场景,本着拿来即用的原则。这次将详细介绍如何在中实战 5 种分片策略和 12 种分片算法,自定义分片算法,比较它们的应用场景以及优劣。全部demo案例GitHub。

竹林幽深 694

Revit二次开发之双事件:空闲事件与DocumentChanged事件

对以下文章所展示的代码进行了修改,当前展示的代码可直接复制使用。 由于本人初学,下列语言为个人理解,如有错误请指正。   《引用1》中: 使用模态对话框,或者尽量保证事件在ExternalCommand的Execute函数或者ExternalApplication的OnStartup函数里面注册。 如果一定要使用非模态对话框,那么请使用ExternalEvent事件的Raise函数,强迫...

一个Revit二次开发的实习生 6146

pytorchDataLoader中调整数据长度不一致问题(lstm等)

数据长度不一致 用pytorch做rnn的时候,如果输入数据不一样长,可以用两种方式解决。 一种是自定义collate方法, #自定义collate_fn dataloader.DataLoader(dataset,4,True,collate_fn=my_collate) 然后里面写数据和标签载入方式即可 def my_collate(batch): data = [item[0] for item in batch] target = [item[1] for item in batc

weixin_48174100的博客 7770

mysql enum 算法_数据库中间件分片算法之enum

前言最近挺焦虑的,不知道未来该做什么,方向又是什么。只能用别慌,月亮也正在大海的某处迷茫。来安慰下自己。不过学习的初心咱们还是不要忘记。今天我们学习的是enum分片算法。1.hash分区算法2.stringhash分区算法3.enum分区算法4.numberrange分区算法5.patternrange分区算法6.date分区算法7.jumpstringhash算法enum分区算法的配置codef...

weixin_36086687的博客 220

Android 13 Settings蓝牙列表卡顿问题排查及优化过程

此时我们的卡顿优化基本完成了,我们应该要考虑内存是否会泄漏,如果大家不知道哪些需要回收可以用leakcanary和android profiler进行内存检测,看代码有没有内存泄漏。

龚礼鹏的博客 2544

mysql enum 算法_怎么拿到Mysql一张表里某enum类型字段的所有值

用户在rule.xml中配置枚举值文件路径和分e69da5e6ba9062616964757a686964616f31333433636165片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表在DBLE的运行过程中,用户访问使用这个算法的表时,WHERE子句中的分片索引值会被提取出来,直接查映射表得到分片编号与MyCat的类似分片算法对比中间件DBLEMyCat分片...

weixin_39852688的博客 288

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

分布式 | MyCat如何迁移到DBLE之分片算法对比解析:enum分片

关于作者 钟 悦 - 资深DBLE用户 某宇宙行资深架构师,在大型重点项目中使用 DBLE。 常年与 MySQL 纠缠不清,经常运用技术处理大企业病的技术or非技术问题的一个挨踢从业者。 根据用户定义的枚举值与分片节点映射文件,直接定位目标分片。 用户在rule.xml中配置枚举值文件路径和分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表 在DBLE...

ActionTech的博客 159

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

mysql 分区 mycat 分片_分布式 | MyCat如何迁移到DBLE之分片算法对比解析:enum分片...

根据用户定义的枚举值与分片节点映射文件,直接定位目标分片。用户在rule.xml中配置枚举值文件路径和分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表在DBLE的运行过程中,用户访问使用这个算法的表时,WHERE子句中的分片索引值会被提取出来,直接查映射表得到分片编号与MyCat的类似分片算法对比中间件DBLEMyCat分片算法种类enum 分区算法分片枚举两种...

weixin_30430517的博客 111

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

mysql字段枚举的作用及好处_MySQL中的enum类型有什么优点

用户在rule.xml中配置枚举值文件路径和分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表在DBLE的运行过程中,用户访问使用这个算法的表时,WHERE子句中的分片索引值会被提取出来,直接查映射表得到分片编号与MyCat的类似分片算法对比中间件DBLEMyCat分片算法种类 enum 分区算法 分片枚举两种中间件的枚举分片算法使用上无差别。开发注意...

weixin_32418703的博客 709

3分钟实现零代码表结构迁移:Chat2DB跨数据库同步技术全攻略

你是否还在为MySQL到PostgreSQL的表结构迁移编写数百行SQL脚本?是否因Oracle与MongoDB的数据类型差异而反复调试?Chat2DB Pro版推出的智能数据结构同步功能,让跨数据库表结构迁移像拖拽文件一样简单。本文将带你掌握从环境配置到增量同步的全流程,无需编写一行代码即可完成10+数据库类型的结构迁移。 ## 为什么选择Chat2DB同步技术 传统表结构迁移需要手动处理数...

gitblog_00197的博客 317

PHP环境下如何支持500M以上视频文件的分片上传?

作为刚入职三个月的新人,近期接到核心任务:开发支持2G级文件批量上传功能。

weixin_52050572的博客 697

XXL-Job分片任务实战:从‘发短信’案例到通用数据处理框架的封装思路

本文深入探讨XXL-Job分片任务架构设计,从业务解耦到通用框架的进阶实践。通过分析海量数据处理场景下的分片策略、核心设计哲学及性能优化技巧,提供了一套可扩展的通用分片处理框架方案,帮助开发者高效应对百万级数据处理挑战。

weixin_30457551的博客 1609

mysql 逻辑库 逻辑表_华为云分布式数据库 DDM 如何创建逻辑表

配置逻辑表参数。逻辑表类型:分片表。“分片表”模式下,逻辑表的数据将被按照拆分规则,分到各个分片中存储。全局表。每一个分片上存储全量的数据。拆分算法:拆分规则对分片表适用。将逻辑表中数据拆分到多个数据库分片上的算法。Hash:数据分布比较均匀。Range:适合范围类操作较多的场景。算法元数据:该参数仅当“拆分算法”为“Range”时有效。用于定义数据库分片对应的数据拆分规则,格式如下:算法元数据定...

weixin_39519798的博客 563

央企BIM模型管理痛点与前端分片上传解决方案

BIM(建筑信息模型)作为建筑行业的数字化核心技术,通过三维模型集成全生命周期工程数据。其技术实现依赖高效的文件传输与版本管理机制,尤其在央企大型基建项目中,动辄数GB的模型文件对网络传输稳定性提出挑战。本文深入解析基于Vue3和TypeScript的前端分片上传方案,采用动态分片、哈希校验等关键技术,有效解决大文件传输中断和版本混乱问题。通过Web Worker并行计算和IndexedDB状态持久化等工程优化,系统成功将地铁项目模型同步时间从4小时缩短至23分钟,为工程协同提供可靠技术支撑。

weixin_33841503的博客 406

Java 分片(Sharding)模式实战:基于 java-design-patterns 的水平分区实现与三种分片策略解析

本文围绕 java-design-patterns 仓库中的 [sharding 模块](https://link.gitcode.com/i/6f427b7552bde541c78b61649c012c81),系统讲解 Sharding(分片 / 水平分区)设计模式:从模式意图、现实场景,到 `ShardManager` 抽象骨架与 Lookup(查表)、Range(范围)、Hash(哈希)三种

gitblog_02592的博客 403

MyCat入门指南:分库分表与读写分离实战解析

当业务数据量激增,单库性能达到瓶颈时,如何优雅地扩展数据库成为后端架构的核心挑战。数据库中间件作为应用与MySQL集群之间的代理层,通过解析SQL并路由到不同物理节点,实现读写分离与分库分表,从而在不修改业务代码的前提下提升系统吞吐能力。MyCat作为该类中间件的典型代表,源于阿里Cobar,以逻辑库屏蔽物理库差异,支持分片算法、全局表及弱XA事务,适用于电商、金融等大数据量场景。本文以实战视角拆解MyCat的核心设计,从schema配置到SQL路由路径,帮助读者快速掌握这一工具的应用边界与落地技巧。

weixin_34408717的博客 367

Feed系统简易实现:分库分表架构与核心代码解析

摘要: 本文详细设计了一个社交平台的数据库架构,采用分库分表策略实现高扩展性。系统包含用户管理、动态内容、关系关注和Feed生成四大模块。数据库采用CRC32分片算法实现水平拆分,其中用户数据分8库32表,动态数据分8库64表。文章提供了完整的表结构设计(用户表、Feed映射表、内容表和关系表)和核心代码实现,包括数据库初始化、表创建、数据插入和查询等操作。通过优化错误处理和查询性能,系统实现了高效的数据存储和访问能力。

pop_opo_的博客 837
上一篇: 数据库中间件分片算法之stringhash
Buddy Yuan
博客等级 码龄21年 2粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值