news 2026/7/7 5:32:29

分库分表基因法实现策略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
分库分表基因法实现策略

背景

基因法,将分片信息注入到非分片键中,让非分片键携带路由信息。比如分片键是用户id,那么订单号就加入用户id分片信息。

但是如果出现节点挂了,或者是数据倾斜以及扩容需要迁移数据等问题时,将无法解决。所以需要使用映射覆盖方案,在中间件层设置一个优先级高的本地热迁移配置。如果设置了配置,那么就强制使用配置中的路由,否则就使用id中的。

具体实现

数据结构

使用长度为1024的原子性数组。

为什么不使用map呢?因为使用数组可以直接通过下标获取到数据,性能更好。并且没有哈希碰撞。

数组下标是表的编号,存的只是库名或者是策略。

{
"type": "sub_shard",
"sub_count": 8,
"algorithm": "hash(user_id) % 8"
}

路由执行逻辑。

中间件在进行路由的时候,先去查覆盖层,发现不为空,就去执行策略,找的真正的表。

举例

订单表,一开始是按照店铺去拆分的。但是某个店铺订单量很大,所以出现了数据倾斜。那么我们可以再将这个表再拆分为很多个小表,并且把数据迁移到那些小表里面。那我们数组里面存的就是这些小表的路由策略。

数据查询

比如我们要查询某个店铺某个用户的订单,我们先通过店铺去查到订单,然后再去覆盖层找到对应的路由去查询对应的表。

但如果是想要查询某个店铺当天的订单,就只能广播查询该店铺下所有子表,再在内存里聚合。但是这样的话,性能可能就没有那么好,建议引入es 。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 18:36:28

机器学习工程真相:从监督学习到泛化误差的物理约束解构

1. 这不是一堂“AI通识课”,而是一次对机器学习底层逻辑的重新校准你有没有在深夜刷完一篇“5分钟看懂Transformer”的文章后,反而更困惑了?标题里那个“Key ML Concepts”听着像教科书目录,但真正坐下来想厘清“为什么梯度下降能…

作者头像 李华
网站建设 2026/7/5 21:36:57

网络安全入门:高危漏洞、端口暴露与弱口令的识别与加固实战

1. 项目概述:从“门外汉”到“守门人”的必修课 最近在和一些刚入行的朋友交流,发现一个挺普遍的现象:大家一听到“高危漏洞”、“端口暴露”、“弱口令爆破”这些词,就觉得特别高深,是安全大牛才玩得转的东西。其实不…

作者头像 李华
网站建设 2026/7/5 23:20:34

AlphaTensor如何用强化学习优化矩阵乘法算法

1. 这不是又一个“AI打败人类”的新闻,而是一次线性代数底层逻辑的重新校准AlphaTensor不是下棋程序,也不是写诗模型,它不生成图像、不翻译语言、不编排音乐。它干了一件看起来枯燥到极点的事:在给定维度下,寻找两个矩…

作者头像 李华
网站建设 2026/7/4 10:39:48

AI Agent 运行时架构:会话即事件日志与生产级可靠性设计

1. 这不是新赛道,是 runtime 层的“操作系统时刻”来了你有没有试过让一个 AI 代理连续工作四十分钟?不是闲聊,而是真正在查文档、调 API、写代码、汇总结果——一个典型的多步骤知识工作流。去年我带团队跑一个客户的数据分析代理时&#xf…

作者头像 李华
网站建设 2026/7/5 0:36:44

Minecraft服务器包创建终极指南:3分钟快速生成完美服务器配置

Minecraft服务器包创建终极指南:3分钟快速生成完美服务器配置 【免费下载链接】ServerPackCreator Create a server pack from a Minecraft Forge, NeoForge, Fabric, LegacyFabric or Quilt modpack! 项目地址: https://gitcode.com/gh_mirrors/se/ServerPackCre…

作者头像 李华