一篇学会 Sharding 垂直分库分表

之前的几篇文章,阿粉已经说了这个SpringBoot整合 Sharding-JDBC 实现了水平的分库分表,也是我们在日常的业务中最经常用到的,把数据进行水平分库,比如按照日期分库,按照奇偶性用户ID来水平分库,今天阿粉来说说如何使用 Sharding-JDBC 进行垂直切分表和数据库。

前情回顾之什么是垂直切分

什么是垂直切分,垂直分库是指按照业务将表进行分类,分布到不同的数据库上面,每个库可以放在不同的服务器上,它的核心理念是专库专用,也就是说,我们需要把不同之间的业务进行分库,比如,支付业务我们可以创建一个库,而订单业务我们可以再用另外的一个库保存数据,说起来是简单,实现起来也并没有想象的那么难办。我们看看如何实现。

垂直分表

垂直分表就是将一个表细分,且在同一个库里,正常操作即可。

这种相对来说就压根没必要用sharding-sphere,数据一部分在一个表,和数据存储在另外一个表,那就意味着,这就是两个表存了不同的数据,比如商品服务,我们把商品基本信息放在一张表,商品详情放在一张表,这就相当于是垂直分表了,但是看起来总是这么的奇怪,奇怪归奇怪,他还就是这样的。而垂直分库就不是这样的了。我们来看看如何实现。

垂直分库

第一步

我们还是需要去创建数据库

一篇学会 Sharding 垂直分库分表插图亿华云

然后创建我们的指定的表

DROP TABLE IF EXISTS users;

CREATE TABLE users (

id BIGINT(20) PRIMARY KEY,

username VARCHAR(20) ,

phone VARCHAR(11),

STATUS VARCHAR(11) );第二步

接下来我们就要和之前一样了,开始配置我们的配置数据。

spring:

application:

name: sharding-jdbc-simple

http:

encoding:

enabled: true

charset: UTF-8

force: true

main:

allow-bean-definition-overriding: true

#定义数据源

shardingsphere:

datasource:

names: db1,db2,db3

db1:

type: com.alibaba.druid.pool.DruidDataSource

driver-class-name: com.mysql.jdbc.Driver

url: jdbc:mysql://localhost:3306/order?characterEncoding=UTF-8

THE END
Copyright © 2024 亿华云