Sharding JDBC 實現垂直分庫水平分表

2022-08-13 14:33:15 字數 2047 閱讀 5987

1、需求分析

2、建立資料庫和表

`user_id` bigint(20) not null,

`username` varchar(50) null,

`ustatus` varchar(50) null,

primary key (`user_id`)

);create table `user_db`.`t_user_1` (

`user_id` bigint(20) not null,

`username` varchar(50) null,

`ustatus` varchar(50) null,

primary key (`user_id`)

);import com.baomidou.mybatisplus.annotation.tablename;

import lombok.data;

@data

@tablename(value = "t_user")

public class user

import com.weianlai.shardingjdbc.entity.user;

}

(2)配置垂直分庫策略

spring.shardingsphere.datasource.names=m0

# 乙個實體類對應兩張表,覆蓋

spring.main.allow-bean-definition-overriding=true

#配置資料來源

spring.shardingsphere.datasource.m0.type=com.alibaba.druid.pool.druiddatasource

spring.shardingsphere.datasource.m0.driver-class-name=com.mysql.cj.jdbc.driver

spring.shardingsphere.datasource.m0.url=jdbc:mysql://localhost:3306/user_db?servertimezone=gmt%2b8

spring.shardingsphere.datasource.m0.username=root

spring.shardingsphere.datasource.m0.password=root

# 配置 user_db 資料庫裡面 t_user 專庫專表

spring.shardingsphere.sharding.tables.t_user.actual-data-nodes=m$->.t_user_$->

# 指定 course 表裡面主鍵 cid 生成策略 snowflake

spring.shardingsphere.sharding.tables.t_user.key-generator.column=user_id

spring.shardingsphere.sharding.tables.t_user.key-generator.type=snowflake

# 指定表分片策略 約定 cid 值偶數新增到 course_1 表,如果 cid 是奇數新增到course_2 表

spring.shardingsphere.sharding.tables.t_user.table-strategy.inline.sharding-column=user_id

spring.shardingsphere.sharding.tables.t_user.table-strategy.inline.algorithm-expression=t_user_$->

# 開啟 sql 輸出日誌

spring.shardingsphere.props.sql.show=true

(3)編寫測試**

@test

public void adduserdb()

}

sharding jdbc分表分庫實現和配置

1.註冊sharding管理的資料庫名稱 sharding.jdbc.datasource.names ds0 2.配置資料庫 sharding.jdbc.datasource.ds0.type org.apache.commons.dbcp.basicdatasource sharding.jdb...

Sharding JDBC 實現水平分庫分表

1 需求分析 cid bigint 20 not null,cname varchar 50 null,user id bigint 20 null,cstatus varchar 10 null,primary key cid create table edu db 1 course 2 cid ...

Sharding JDBC 核心概念

即使你的真實表的表名變化了也能自動根據邏輯表的名字去生成真實表的名字,比如說你是根據月份分片的,你的真實錶帶個日期,我們應用在使用的時候依然只需要邏輯表的原名就行,sharing jdbc會自動組裝出來真實表的表名.水平拆分的資料庫 表 的相同邏輯和資料結構表的總稱。例 訂單資料根據主鍵尾數拆分為1...