分库分表-shardingshpere
文章平均质量分 88
分库分表中间件shardingshpere的用法、原理、需要注意的问题
看透也说透kevin
喜欢琢磨事,把事情弄得清楚一些,拨开谜雾,弄清底层逻辑
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
shardingsphere分库分表项目实践0-分库分表缘起官方文档导读
性能方面,当数据量超过阈值时,关系数据库的B+树索引会增加磁盘IO次数,降低查询性能,高并发请求也限制了集中数据库的性能。可用性方面,无状态服务可以低成本扩展容量,但单节点或简单主从结构难以承受压力。运营成本方面,当数据库实垂直分片虽然能缓解高数据量和高并发带来的问题,但无法彻底解决单节点问题,仍需进行水平分片。水平分片根据一定规则将数据分散到多个数据库或表中,理论上克服了单机数据处理量的限制,可以自由扩展。数据分片虽然解决了单点问题,但引入了新的挑战:多库多表运维困难、数据聚合查询和跨库事务等。原创 2024-12-25 09:54:07 · 615 阅读 · 0 评论 -
shardingsphere分库分表项目实践1-让shardingsphere运行起来
shardingsphere分库分表项目实践1-让shardingsphere运行起来:1. 先找一个比较完善的demo跑起来2. 弄清楚用法:配置、原理、使用场景3. 移植到自己项目上,按照自己需求进行修改优化。:优先去官方git库找,如果没有或者过于简单那么就找一个相关的、活跃的、star多的项目。原创 2024-12-23 13:42:57 · 794 阅读 · 0 评论 -
shardingsphere分库分表项目实践2-多库动态路由原理
shardingshpere 抽象出了一套逻辑对象,实际上用的是代理模式设计思想:逻辑数据源: 包含了真是的多个物理数据源,和sharding策略规则逻辑connection : 没有具体连接,包含了逻辑数据源的引用逻辑statement : 根具sql参数和sharding 规则计算 真实的数据库表,然后通过sql解析改写,最后交给真是的statement执行。逻辑sql : 就是代码里面的sql, 表名不含sharding部分,真正执行的时候根据参数和sharding规则拼接上去原创 2024-12-24 07:40:03 · 1073 阅读 · 0 评论 -
shardingsphere分库分表项目实践3-分库分表算法原理
ShardingSphere的数据库表分片算法原理主要基于分片字段、分片算法以及分片策略来实现。分片算法是用于实现数据分片的具体逻辑。ShardingSphere支持多种分片算法,包括取模、哈希、范围、时间等常用算法。这些算法可以根据分片键的值来计算数据应该存储在哪个数据库或表中。支持自定义分片算法。分片策略是在配置文件中配置的,就是分片键和分片算法的组合,它决定了数据分片的整体规则。在ShardingSphere中,可以通过配置分片策略来指定分片键、分片算法以及分片后的数据节点等信息。原创 2024-12-24 16:00:00 · 1898 阅读 · 0 评论 -
shardingsphere分库分表项目实践4-sql解析&sql改写
如果我们的系统数据库实现了分表,那么我们的sql中表名需要根据参数动态确定,那么代码怎么写?方案1: 自己手动拼接, 比如 update t_user_${suffix} ,${suffix} 作为一个变量传递进来,这么变量怎么设置,自己可以通过硬编码,高级一点的写法就是可以用拦截器(AOP)统一设置。方案2: 更高级一点的方案就是sql重写,代码中的sql就和没分表一样,直接写,框架层面做拦截,进行sql解析重写。原创 2024-12-25 07:30:00 · 1191 阅读 · 0 评论 -
shardingsphere分库分表项目实践5-自己用java写一个sql解析器+完整项目源码
ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,用于从语法描述中生成词法分析器、解析器、树分析器和代码生成器。它主要用于解析和处理编程语言、数据格式以及任何基于文本的输入。跨平台支持:ANTLR 是用 Java 编写的,但它可以生成多种目标语言的解析器,例如 Java、C#、Python、JavaScript、Go、Swift、TypeScript 和 C++ 等。这使得它非常灵活,可以集成到各种编程项目中。丰富的语法支持原创 2024-12-25 14:25:11 · 1217 阅读 · 0 评论
分享