前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ShardingSphere之Sharding-JDBC与SpringBoot的集成

ShardingSphere之Sharding-JDBC与SpringBoot的集成

作者头像
飞狗
发布2019-05-14 16:18:47
5.3K0
发布2019-05-14 16:18:47
举报

ShardingSphere简介

  • Apache ShardingSphere(Incubator) 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(规划中)这3款相互独立,却又能够混合部署配合使用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。
  • ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。它通过关注不变,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。

SpringBoot配置

代码语言:javascript
复制
<dependency>
    <groupId>io.shardingsphere</groupId>
    <artifactId>sharding-jdbc-core</artifactId>
    <version>3.1.0</version>
</dependency>
<dependency>
    <groupId>io.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
    <version>3.1.0</version>
</dependency>

SpringBoot工程目录结构

目录结构

application.properties

代码语言:javascript
复制
server.port=8082


spring.profiles.active=sharding-tables
#spring.profiles.active=master-slave

mybatis.mapper-locations=classpath:mapping/*.xml
mybatis.type-aliases-package=com.lx.model

#pagehelper分页插件

pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql

application-sharding-tables.properties

代码语言:javascript
复制
sharding.jdbc.datasource.names=ds

sharding.jdbc.datasource.ds.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.ds.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.ds.url=jdbc:mysql://127.0.0.1:3306/ds0
sharding.jdbc.datasource.ds.username=root
sharding.jdbc.datasource.ds.password=root

sharding.jdbc.config.sharding.tables.note.actual-data-nodes=ds.note$->{0..1}
sharding.jdbc.config.sharding.tables.note.table-strategy.inline.sharding-column=id
sharding.jdbc.config.sharding.tables.note.table-strategy.inline.algorithm-expression=note$->{id % 2}
sharding.jdbc.config.sharding.tables.note.key-generator-column-name=id

分库分表中间件对比

  • sharing-jdbc是客户端产品,对于Java来说只要引入jar包就可以使用了;Mycat是服务端产品,需要单独的部署服务;
  • sharing-jdbc和Mycat社区都比较活跃;
  • sharing-jdbc只是针对java语言;Mycat没有语言的限制;
  • sharing-jdbc支持二维路由,Mycat不支持二维路由,仅支持单库多表或多库单表;
  • sharing-jdbc目前支持XA分布式事务,4.x版本预计支持柔性事务;Mycat支持XA分布式事务;
  • sharing-jdbc和Mycat都是开源产品;
  • Mycat分片规则更丰富一些;
  • sharing-jdbc路由至多数据节点以及非MySQL,不支持冗余括号、CASE WHEN、HAVING、UNION (ALL),有限支持子查询;
  • Mycat除了分片规则相同、ER 分片、全局表、以及SharedJoin,其他表之间的Join 问题目前还没有很好的解决,需要自己编写Catlet 来处理;

附录

  1. ShardingSphere首页
  2. ShardingSphere3.x版本文档
  3. ShardingSphere4.x版本文档
  4. ShardingSphere例子
  5. Mycat权威指南
  6. Mycat
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.05.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ShardingSphere简介
  • SpringBoot配置
  • SpringBoot工程目录结构
  • application.properties
  • application-sharding-tables.properties
  • 分库分表中间件对比
  • 附录
相关产品与服务
关系型数据库
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档