TSharding-Client Mybatis 分库分表组件

程序名称:TSharding-Client

授权协议: MIT

操作系统: 跨平台

开发语言: Java

TSharding-Client 介绍

TSharding 是 应用于蘑菇街交易平台的一个简易 sharding 组件,也是一个 Mybatis 分库分表组件。

TSharding 组件目标:

  • 很少的资源投入即可开发完成

  • 支持交易订单表的Sharding需求,分库又分表

  • 支持数据源路由

  • 支持事务

  • 支持结果集合并

  • 支持读写分离

关键类:

  • 测试用例入口 com.mogujie.service.tsharding.test#TShardingTest

  • 认走 Master 库的前缀命名 com.mogujie.Trade.tsharding.route.orm.base.ReadWriteSplittingContextinitializer.DEFAULT_WRITE_METHOD_NAMES

  • sql增强 com.mogujie.Trade.tsharding.route.orm.MapperResourceEnhancer.enhancedShardingsql

TSharding 组件接入过程:

  • 引入TSharding JAR 包

  • 配置所有分库的 JDBC 连接信息

  • Mybatis Mapper 方法参数增加 ShardingOrderPara/ShardingBuyerPara/ShardingSellerPara 注解

  • 批量查询增加结果集合并逻辑

测试用例:

跑测试用例之前先建库建表结构;理论上是8个库,512张表,每个库64张表。如果仅仅是跑测试用例,执行下面的sql就可以跑通:

create database Trade0000;
create database Trade0001;
create database Trade0002;
create database Trade0003;
create database Trade0004;
create database Trade0005;
create database Trade0006;
create database Trade0007;
create database Trade;
use Trade0001;
CREATE TABLE `TradeOrder0064` (
  `orderId` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '订单ID',
  `buyerUserId` bigint(20) unsigned NOT NULL COMMENT '买家的userId',
  `sellerUserId` bigint(20) unsigned NOT NULL COMMENT '卖家的userId',
  `shipTime` int(11) unsigned DEFAULT '0' COMMENT '发货时间',
  PRIMARY KEY (`orderId`)
) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8mb4 COMMENT='订单信息表';
INSERT INTO `TradeOrder0064` (`orderId`, `buyerUserId`, `sellerUserId`, `shipTime`)
VALUES
    (50000280834672, 1234567, 2345678, 12345678);

TSharding-Client 官网

https://github.com/baihui212/tsharding

相关编程语言

SchemaCrawler提供一组用于增强标准JDBC Metadata的...
ER Master 是一个用于设计ER模型图的Eclipse插件。提...
Eclipse下用于画数据库ER图的插件,主要特性如下: ...
PowerDesigner 是Sybase的企业建模和设计解决方案,...
Mogwai ERDesigner NG是一个实体关系建模工具类似于...
Power*Architect 是一个数据建模工具,主要用在数据...