Dbsplit扩展了Spring的JdbcTemplate, 在JdbcTemplate上增加了分库分表,读写分离和失效转移等功能,并与Spring JDBC保持相同的风格,简单实用,避免外部依赖,不需要类似cobar的代理服务器,堪称可伸缩的Spring JdbcTemplate。
一方面,它对于单库单表扩展了JdbcTemplate模板, 使其成为一个简单的ORM框架,可以直接对领域对象模型进行持久和搜索操作,并且实现了读写分离。
另一方面,对于分库分表它与JdbcTemplate保持同样的风格,不但提供了一个简单的ORM框架,可以直接对领域对象模型进行持久和搜索操作,还是先了数据分片和读写分离等高级功能。
另外,扩展的Dbsplit保持与原有JdbcTemplate完全兼容,对于特殊需求,完全可以回溯到原有JdbcTemplate提供的功能,即使用JDBC的方式来解决,这里面体现了通用和专用原则,通用原则解决80%的事情,而专用原则解决剩余的20%的事情。
此项目也提供了一个方便的脚本,可以一次性的建立多库多表。
TODO
- 三种分库分表的hash策略的支持, 水平(索引不重复),垂直(索引重复),混合(库索引不重复,表索引重复)。
- 使用annotation来声明SimpleJdbcTemplate or SimpleSplitJdbcTemplate。
- 对SimpleJdbcTemplate实现读写分离。
- 对spring XML封装一个简单的FactoryBean, 使用builder模式来声明template让开发者使用起来更简单。
- dbsplit基类的实现需要针对insert, delete, update, select单独处理sql,当前实现还不准确,使用druid库,druid库有性能问题,考虑使用cobar或者自己实现匹配功能,可以根据关键字 into, from, update, select from等等,一次匹配多个字符,例如:匹配from可以char(i) == 'f' and char(i+1) == 'r' and char(i+2) == 'o' and char(i+3) == 'm'
- build-db-split脚本增加调试bug时候输入id,根据各种hash策略取出实例索引,库索引和表示锁,便于查找bug
- 需要对build-db-split脚本增加建立从库,并把从库指向主库的脚本, 可参考这里面的脚本建立工具集合:https://github.com/lebronhkh/mysqlyunwei
- 提供失效转以的方法。
- 提供对事物配置的支持,考虑多数据源,可以开发一个RoutingDataSource,http://itindex.net/detail/49026-spring-%E6%95%B0%E6%8D%AE-%E6%8E%A7%E5%88%B6
开源地址:https://github.com/robertleepeak/dbsplit
相关推荐
数据库分库分表的技术演进与最佳实践 在移动互联网时代,海量数据的产生对数据库的存储和查询提出了很大的挑战。面对如此庞大的数据量,单一的数据库表已经无法满足需求,而数据库分库分表技术则是解决这个问题的...
数据库分库分表是应对大数据量和高并发场景下的常用策略,目的是为了减轻单个数据库的负担,提高系统的整体性能和稳定性。随着互联网业务的发展,单个关系型数据库的存储容量、连接数和处理能力往往难以满足需求。当...
培训数据库分库分表,以及分布式数据库搭建各种问题解决方案 1.数据库分片原理 2.Mycat与Sharding-JDBC 对比 3.分布式数据库问题解决方案,包括分配、一致性、事务控制等
分库分表采用sharding-jdbc 数据库连接池管理是alibaba的druid-spring-boot-starter 项目使用springboot搭建,junit测试,为了方便实现对数据库操作继承了mybatisplus,为了少些get、set 引入lombok
数据库分库分表是应对大数据量和高并发场景下的重要技术策略,旨在提高数据库系统的性能、可用性和可扩展性。随着互联网应用的发展,单个数据库往往难以承受日益增长的数据量和用户访问压力,这时就需要采用分库分表...
《Mycat数据库分库分表详解》 在大数据时代,单个数据库处理海量数据的能力逐渐捉襟见肘,这催生了数据库分库分表的需求。Mycat,作为一个开源的分布式数据库中间件,应运而生,为解决大数据场景下的高性能、高可用...
阿里巴巴在应对大数据量挑战时,采用了数据库分库分表的策略,这涉及到一系列的技术实践和解决方案。早期,阿里巴巴团队基于开源项目Cobar开发了分布式数据层平台,旨在解决Oracle数据库扩展性问题。Cobar虽然在一定...
数据库分库分表存储分析思路 在大数据量存储时,如何解决常见问题和实施合理的解决方案是非常重要的。数据库分库分表存储是解决大数据量存储的有效方法之一,但是它也存在一些问题,例如join操作问题、事务问题、...
java 数据库分库分表
mysql数据库分库分表的几种方式,数据库优化的一部分...
数据库分库分表是一种有效的数据库架构设计,用于提升性能和可扩展性。通过选择合适的分库分表策略,并在Java中实现相应的数据路由逻辑,可以构建出高性能、高可用的数据库系统。随着技术的发展,分库分表将继续在...
MyBatis实现Mysql数据库分库分表操作和总结 MyBatis是一款流行的持久层框架,能够与Mysql数据库进行交互。在大规模的应用系统中,数据库的性能和可扩展性变得非常重要。为了解决这个问题,需要实现数据库的分库分表...
《Mycat数据库分库分表中间件》 在当今大数据时代,单个数据库系统往往无法满足高并发、海量数据的处理需求。为了解决这一问题,Mycat应运而生,它是一款开源的、基于Java开发的数据库中间件,专门用于实现数据库的...
数据库分库分表是应对大数据量和高并发场景下的常用技术策略,旨在提高数据库系统的性能和稳定性。当单个数据库的存储容量、连接数或处理能力达到极限时,通过数据切分可以有效地分散负载,缩短查询时间。主要分为...
### 数据库分库分表(Sharding)技术详解 #### 一、基本概念与原理 **数据库分库分表(Sharding)**是一种常见的数据库优化技术,主要用于解决大规模数据存储和高并发访问带来的性能瓶颈问题。它通过将单一数据库...
数据库分库分表架构实践是应对业务增长和性能瓶颈的关键策略。这一技术旨在通过将大型数据库分解为多个较小的部分,提升系统的可扩展性和性能。本文主要探讨了垂直分表、垂直分库、水平分表以及水平分库分表四种方法...
Mycat是基于开源cobar演变而来,我们对cobar的代码进行了彻底的重构,使用NIO重构了网络模块,并且优化了Buffer内核,增强了聚合,Join等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。
为了提升MySQL数据库的性能和可用性,常采用的策略是数据库分库分表,其中可以分为垂直分库、垂直分表、水平分库、水平分表等方法。 垂直分表是针对数据库表中的列进行拆分,将一张大表拆成若干个结构更小的表,以...
《深度解析ShardingJDBC:Java开发者的分库分表利器》是一本专注于Java开发者在数据库扩展性问题上的解决方案,特别关注于ShardingJDBC这一强大的工具。ShardingJDBC作为一个轻量级的Java框架,它允许开发者在不改变...