`
1028826685
  • 浏览: 940761 次
  • 性别: 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数据库进行交互。在大规模的应用系统中,数据库的性能和可扩展性变得非常重要。为了解决这个问题,需要实现数据库的分库分表...

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

    因此,数据库分库分表架构实践成为解决这一问题的关键策略之一。本文将深入探讨数据库分库分表的几种主要方法及其实践中的问题和解决方案,旨在为企业提供有效的性能优化途径。 首先,我们来看垂直分表。垂直分表是...

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

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

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

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

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

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

    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