专栏首页专注于主流技术和业务ShardingSphere之Sharding-JDBC与SpringBoot的集成

ShardingSphere之Sharding-JDBC与SpringBoot的集成

ShardingSphere简介

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

SpringBoot配置

<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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Web3j使用教程

    web3j 是一个针对java的开发工具。web3j command line 可以用来创建钱包、转账、查询余额以及包括智能合约编译、根据智能合约生成对应的ja...

    飞狗
  • Sping框架:BeanFactory与FactoryBean的区别

    BeanFactory 和 FactoryBean 都是spring-beans-*.*.*.jar里面的接口。

    飞狗
  • WebStorage是什么?

    使用HTML5可以在本地存储用户的浏览数据。早些时候,本地存储使用的是 cookie。但是Web 存储需要更加的安全与快速,这些数据不会被保存在服务器上,但是这...

    飞狗
  • Spring boot项目集成Sharding Jdbc

    jdk:1.8 framework: spring boot, sharding jdbc database: MySQL

    Dylan Liu
  • Spring Boot中整合Sharding-JDBC读写分离示例

    在我《Spring Cloud微服务-全栈技术与案例解析》书中,第18章节分库分表解决方案里有对Sharding-JDBC的使用进行详细的讲解。

    猿天地
  • JDBC和数据库连接池

    JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

    宋先生
  • Spring配置DBCP连接池

    爱撒谎的男孩
  • NSTimer类的使用

    用户1941540
  • Cypress学习5-table表格元素(别名使用Aliasing)

    页面上有些元素定位路径比较复杂,可以先定位到该元素使用别名,通过这个别名去操作元素,这样看起来简洁一些。

    上海-悠悠
  • ReactNative For Android 框架启动核心路径剖析

    前面给大家分析过 ReactNative For Android (RN4A) 的通信机制,这次我们从源码出发,分析下RN4A的启动过程。启动过程基于通信机制,...

    QQ空间开发团队

扫码关注云+社区

领取腾讯云代金券