`
1028826685
  • 浏览: 936924 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

dbsplit数据库分库、分表利器

 
阅读更多

Dbsplit扩展了Spring的JdbcTemplate, 在JdbcTemplate上增加了分库分表,读写分离和失效转移等功能,并与Spring JDBC保持相同的风格,简单实用,避免外部依赖,不需要类似cobar的代理服务器,堪称可伸缩的Spring JdbcTemplate。

一方面,它对于单库单表扩展了JdbcTemplate模板, 使其成为一个简单的ORM框架,可以直接对领域对象模型进行持久和搜索操作,并且实现了读写分离。

另一方面,对于分库分表它与JdbcTemplate保持同样的风格,不但提供了一个简单的ORM框架,可以直接对领域对象模型进行持久和搜索操作,还是先了数据分片和读写分离等高级功能。

另外,扩展的Dbsplit保持与原有JdbcTemplate完全兼容,对于特殊需求,完全可以回溯到原有JdbcTemplate提供的功能,即使用JDBC的方式来解决,这里面体现了通用和专用原则,通用原则解决80%的事情,而专用原则解决剩余的20%的事情。

此项目也提供了一个方便的脚本,可以一次性的建立多库多表。

TODO

  1. 三种分库分表的hash策略的支持, 水平(索引不重复),垂直(索引重复),混合(库索引不重复,表索引重复)。
  2. 使用annotation来声明SimpleJdbcTemplate or SimpleSplitJdbcTemplate。
  3. 对SimpleJdbcTemplate实现读写分离。
  4. 对spring XML封装一个简单的FactoryBean, 使用builder模式来声明template让开发者使用起来更简单。
  5. 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'
  6. build-db-split脚本增加调试bug时候输入id,根据各种hash策略取出实例索引,库索引和表示锁,便于查找bug
  7. 需要对build-db-split脚本增加建立从库,并把从库指向主库的脚本, 可参考这里面的脚本建立工具集合:https://github.com/lebronhkh/mysqlyunwei
  8. 提供失效转以的方法。
  9. 提供对事物配置的支持,考虑多数据源,可以开发一个RoutingDataSource,http://itindex.net/detail/49026-spring-%E6%95%B0%E6%8D%AE-%E6%8E%A7%E5%88%B6

开源地址:https://github.com/robertleepeak/dbsplit

分享到:
评论

相关推荐

    数据库分库分表的技术演进与最佳实践.docx

    数据库分库分表的技术演进与最佳实践 在移动互联网时代,海量数据的产生对数据库的存储和查询提出了很大的挑战。面对如此庞大的数据量,单一的数据库表已经无法满足需求,而数据库分库分表技术则是解决这个问题的...

    数据库分库分表思路.docx

    数据库分库分表是应对大数据量和高并发场景下的常用策略,目的是为了减轻单个数据库的负担,提高系统的整体性能和稳定性。随着互联网业务的发展,单个关系型数据库的存储容量、连接数和处理能力往往难以满足需求。当...

    数据库分库分表原理与实践方案-大厂精品培训ppt.pptx

    培训数据库分库分表,以及分布式数据库搭建各种问题解决方案 1.数据库分片原理 2.Mycat与Sharding-JDBC 对比 3.分布式数据库问题解决方案,包括分配、一致性、事务控制等

    多数据源+数据库分库分表

    分库分表采用sharding-jdbc 数据库连接池管理是alibaba的druid-spring-boot-starter 项目使用springboot搭建,junit测试,为了方便实现对数据库操作继承了mybatisplus,为了少些get、set 引入lombok

    数据库分库分表

    数据库分库分表是应对大数据量和高并发场景下的重要技术策略,旨在提高数据库系统的性能、可用性和可扩展性。随着互联网应用的发展,单个数据库往往难以承受日益增长的数据量和用户访问压力,这时就需要采用分库分表...

    Mycat数据库分库分表

    《Mycat数据库分库分表详解》 在大数据时代,单个数据库处理海量数据的能力逐渐捉襟见肘,这催生了数据库分库分表的需求。Mycat,作为一个开源的分布式数据库中间件,应运而生,为解决大数据场景下的高性能、高可用...

    阿里巴巴数据库分库分表的实践.docx

    阿里巴巴在应对大数据量挑战时,采用了数据库分库分表的策略,这涉及到一系列的技术实践和解决方案。早期,阿里巴巴团队基于开源项目Cobar开发了分布式数据层平台,旨在解决Oracle数据库扩展性问题。Cobar虽然在一定...

    数据库分库分表存储分析思路

    数据库分库分表存储分析思路 在大数据量存储时,如何解决常见问题和实施合理的解决方案是非常重要的。数据库分库分表存储是解决大数据量存储的有效方法之一,但是它也存在一些问题,例如join操作问题、事务问题、...

    java 数据库分库分表

    java 数据库分库分表

    数据库分库分表的几种方式.wmv

    mysql数据库分库分表的几种方式,数据库优化的一部分...

    数据库分库分表的工作原理与Java实现

    数据库分库分表是一种有效的数据库架构设计,用于提升性能和可扩展性。通过选择合适的分库分表策略,并在Java中实现相应的数据路由逻辑,可以构建出高性能、高可用的数据库系统。随着技术的发展,分库分表将继续在...

    MyBatis实现Mysql数据库分库分表操作和总结(推荐)

    MyBatis实现Mysql数据库分库分表操作和总结 MyBatis是一款流行的持久层框架,能够与Mysql数据库进行交互。在大规模的应用系统中,数据库的性能和可扩展性变得非常重要。为了解决这个问题,需要实现数据库的分库分表...

    Mycat 数据库分库分表中间件.pdf

    《Mycat数据库分库分表中间件》 在当今大数据时代,单个数据库系统往往无法满足高并发、海量数据的处理需求。为了解决这一问题,Mycat应运而生,它是一款开源的、基于Java开发的数据库中间件,专门用于实现数据库的...

    数据库分库分表解决方案汇总.docx

    数据库分库分表是应对大数据量和高并发场景下的常用技术策略,旨在提高数据库系统的性能和稳定性。当单个数据库的存储容量、连接数或处理能力达到极限时,通过数据切分可以有效地分散负载,缩短查询时间。主要分为...

    数据库分库分表(sharding)的技术

    ### 数据库分库分表(Sharding)技术详解 #### 一、基本概念与原理 **数据库分库分表(Sharding)**是一种常见的数据库优化技术,主要用于解决大规模数据存储和高并发访问带来的性能瓶颈问题。它通过将单一数据库...

    数据库分库分表架构实践.docx

    数据库分库分表架构实践是应对业务增长和性能瓶颈的关键策略。这一技术旨在通过将大型数据库分解为多个较小的部分,提升系统的可扩展性和性能。本文主要探讨了垂直分表、垂直分库、水平分表以及水平分库分表四种方法...

    Mycat数据库分库分表中间件

    Mycat是基于开源cobar演变而来,我们对cobar的代码进行了彻底的重构,使用NIO重构了网络模块,并且优化了Buffer内核,增强了聚合,Join等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。

    mysql高可用分库分表.pdf

    为了提升MySQL数据库的性能和可用性,常采用的策略是数据库分库分表,其中可以分为垂直分库、垂直分表、水平分库、水平分表等方法。 垂直分表是针对数据库表中的列进行拆分,将一张大表拆成若干个结构更小的表,以...

    深度解析ShardingJDBC:Java开发者的分库分表利器.rar

    《深度解析ShardingJDBC:Java开发者的分库分表利器》是一本专注于Java开发者在数据库扩展性问题上的解决方案,特别关注于ShardingJDBC这一强大的工具。ShardingJDBC作为一个轻量级的Java框架,它允许开发者在不改变...

Global site tag (gtag.js) - Google Analytics