微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐