sharding-jdbc 分库分表(二)

本文详细介绍了Sharding-JDBC,一种轻量级Java框架,用于实现数据分片和读写分离。文章讲解了分库分表的目的、Sharding-JDBC的核心功能,以及如何使用InlineShardingStrategy和StandardShardingStrategy进行数据离散存储的配置和实践。通过实例展示了分库分表的配置步骤,包括POM依赖、数据库准备、YML配置和代码实现。
摘要由CSDN通过智能技术生成

一,什么是Sharding-JDBC

Sharding-JDBC是当当网研发的开源分布式数据库中间件,从3.0开始Sharding-JDBC被包含在Sharding-Sphere中,4.0版本之后的版本为Apache版本。

ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar这三款相互独立的产品组成,他们均提供标准化的数据分片、分布式事务和数据库治理能力。

Sharding-JDBC,它定位为轻量级Java框架,在Java的JDBC层提供额外服务,它使用客户端直连数据库,以JAR包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。

Sharding-JDBC的核心功能为数据分片和读写分离,通过Sharding-JDBC,应用可以透明的使用JDBC访问已经分库分表、读写分离的各个数据源,而不用关心数据源的数量以及数据如何分布。

在这里插入图片描述

二、分库分表

分库分表主要是为了解决互联网应用的大数据量存储问题,分表通常分为:垂直划分、水平划分;垂直划分通常是根据业务场景将一个多字段大表拆分成多个多个少字段小表,水平划分就是数据的离散存储根据某个分片策略将同一个表的数据分开存到多个相同结构表中。
在这里插入图片描述

三,sharding提供的分片算法有哪些?

`StandardShardingStrategy`         标准分片策略。
`InlineShardingStrategy`           Inline表达式分片策略。使用Groovy的Inline表达式。
`HintShardingStrategy`             通过Hint而非SQL解析的方式分片的策略。
`NoneShardingStrategy`             不分片的策略。

四,如何使用sharding-jdbc对数据离散存储呢?

InlineShardingStrategy 分片策列的使用;

第一步:引入相关pom依赖

<dependency>
	<groupId>io.shardingsphere</groupId>
	<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
	<version>3.1.0</version>
</dependency>

<dependency>
	<groupId>io.shardingsphere</groupId>
	<artifactId>sharding-jdbc-spring-namespace</artifactId>
	<version>3.1.0</version>
</dependency>

第二步,准备两个数据库,db0和db1下面各有两张表,他们的结构是一样的只是名字不一样
在这里插入图片描述

第三步,配置yml文件,在yml文件sharding. jdbc.datasource:下配置连接两个库数据源,如果分库分了更多个,那么配置的连接也可以增加 ,然后sharding.default-database-strategy: 下配置分库分表的策略,这里分库分表的策列是采用的Groovy 行表达式,Inline表达式分片策略。使用Groovy的Inline表达式,提供对SQL语句中的=和IN的分片操作支持

app:
  id: zt-frank-shardingSphere-service-9960
  name: zt-frank-shardingSphere-service-9960
server:
  port: 9960
spring:
  application:
    name: zt-frank-shardingSphere-service-9960  #Ribbon 做负载均衡 需要7001 7002,7003的spring.application.name 的名称一致
  main:
    allow-bean-definition-overriding: true #允许Bean重复注入,后者覆盖前者
#开始配置连接数据库
sharding:
  jdbc:
    datasource:
      names: db0,db1
      db0:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        jdbc-url: jdbc:mysql:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值