成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇學會 Sharding 垂直分庫分表

數據庫 其他數據庫
這種垂直分庫分表,實際上就是通過不同的數據源來進行操作的,而通過給mybatis的mapper配置不同的數據源也是能實現的,但是還是看個人選擇吧。大家學會如何使用 Sharding-JDBC 進行分庫分表了么?

之前的幾篇文章,阿粉已經說了這個SpringBoot整合 Sharding-JDBC 實現了水平的分庫分表,也是我們在日常的業務中最經常用到的,把數據進行水平分庫,比如按照日期分庫,按照奇偶性用戶ID來水平分庫,今天阿粉來說說如何使用 Sharding-JDBC 進行垂直切分表和數據庫。

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

什么是垂直切分,垂直分庫是指按照業務將表進行分類,分布到不同的數據庫上面,每個庫可以放在不同的服務器上,它的核心理念是專庫專用,也就是說,我們需要把不同之間的業務進行分庫,比如,支付業務我們可以創建一個庫,而訂單業務我們可以再用另外的一個庫保存數據,說起來是簡單,實現起來也并沒有想象的那么難辦。我們看看如何實現。

垂直分表

垂直分表就是將一個表細分,且在同一個庫里,正常操作即可。

這種相對來說就壓根沒必要用sharding-sphere,數據一部分在一個表,和數據存儲在另外一個表,那就意味著,這就是兩個表存了不同的數據,比如商品服務,我們把商品基本信息放在一張表,商品詳情放在一張表,這就相當于是垂直分表了,但是看起來總是這么的奇怪,奇怪歸奇怪,他還就是這樣的。而垂直分庫就不是這樣的了。我們來看看如何實現。

垂直分庫

第一步

我們還是需要去創建數據庫

圖片

然后創建我們的指定的表

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&useSSL=false
username: root
password: 123456
db2:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/ordersharding?characterEncoding=UTF-8&useSSL=false
username: root
password: 123456
#配置user的數據源
db3:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/user?characterEncoding=UTF-8&useSSL=false
username: root
password: 123456
## 分庫策略,以user_id為分片鍵,分片策略為user_id % 2 + 1,user_id為偶數操作db1數據源,否則操作db2。
sharding:
tables:
#配置db3的數據節點
users:
actual-data-nodes: db$->{3}.users
table-strategy:
inline:
sharding- column: id
algorithm-expression: users
orderinfo:
actual-data-nodes: db$->{1..2}.orderinfo
key-generator:
column: order_id
type: SNOWFLAKE
database-strategy:
inline:
sharding-column: user_id
algorithm-expression: db$->{user_id % 2 + 1}
props:
sql:
show: true
server:
servlet:
context-path: /sharding-jdbc
mybatis:
configuration:
map-underscore-to-camel-case: true

=接下來就是去寫一組插入語句,然后我們把數據插入到數據庫測試一下。

@RunWith(SpringRunner.class)
@SpringBootTest(classes = RunBoot.class)
public class UsersDaoTest {

@Autowired
UsersDao usersDao;

@Test
public void testInsert(){

for (int i = 0; i < 10; i++) {
Long id = i+100L;
usersDao.insertUser(id,"大佬"+i, "17458236963","1");
}
}
}
  /**
* 新增用戶
* */
@Insert("insert into users(id,username,phone,status) values(#{id},#{username},#{phone},#{status})")
int insertUser(@Param("id") Long id, @Param("username") String username, @Param("phone") String phone,@Param("status") String status);

圖片

看著截圖的樣子,阿粉感覺是沒啥問題,我們再去數據庫驗證一下。

圖片

也確定了數據保存進去了,這就是垂直分庫

俺么我們什么時候垂直分庫呢?答案是根據業務邏輯進行分割。比如我們可以把用戶表和用戶相關的表分配到用戶數據庫中,而把商品表和商品相關的數據分配到商品數據庫中。

阿粉覺得這種垂直分庫分表,實際上就是通過不同的數據源來進行操作的,而通過給mybatis的mapper配置不同的數據源也是能實現的,但是還是看個人選擇吧。

大家學會如何使用 Sharding-JDBC 進行分庫分表了么?

責任編輯:武曉燕 來源: 鴨血粉絲Tang
相關推薦

2020-07-30 17:59:34

分庫分表SQL數據庫

2020-11-18 09:39:02

MySQL數據庫SQL

2021-07-02 09:45:29

MySQL InnoDB數據

2023-07-24 09:00:00

數據庫MyCat

2021-09-07 17:54:04

OpenGauss分區表索引

2022-01-02 08:43:46

Python

2022-02-07 11:01:23

ZooKeeper

2019-03-06 14:42:01

數據庫分庫分表

2022-08-29 08:00:11

哈希表數組存儲桶

2023-12-21 18:11:51

數據庫分庫分表跨庫

2022-12-09 09:21:10

分庫分表算法

2021-07-06 08:59:18

抽象工廠模式

2023-01-03 08:31:54

Spring讀取器配置

2021-07-05 22:11:38

MySQL體系架構

2021-05-11 08:54:59

建造者模式設計

2022-08-26 09:29:01

Kubernetes策略Master

2022-08-23 08:00:59

磁盤性能網絡

2023-11-28 08:29:31

Rust內存布局

2021-09-28 08:59:30

復原IP地址

2021-10-14 10:22:19

逃逸JVM性能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品1区 | 99综合| 在线看片网站 | 一区二区视频在线观看 | 九九亚洲 | 涩涩视频网站在线观看 | 男人的天堂亚洲 | 欧美一级在线视频 | 国产精品日产欧美久久久久 | 欧美黄色一区 | 久久国产精品久久国产精品 | 成人欧美一区二区三区黑人孕妇 | av国产精品 | 伊人久久在线观看 | 中文字幕高清av | 日韩精品一区二区三区四区视频 | 中文字幕国产 | 亚洲视频一区在线播放 | 亚洲精品电影在线观看 | 欧美大片一区二区 | 美女天天操 | 久久激情视频 | 欧美视频三区 | 国产在线1区 | 自拍偷拍在线视频 | 国产精品免费一区二区三区四区 | 国产精品自产拍在线观看蜜 | 国产精品久久一区二区三区 | .国产精品成人自产拍在线观看6 | 女人夜夜春 | 91性高湖久久久久久久久_久久99 | 国产色爽| 美女在线视频一区二区三区 | 欧美激情国产日韩精品一区18 | 国产精品欧美一区二区三区不卡 | 欧美大片在线观看 | 美女爽到呻吟久久久久 | 久久久久成人精品亚洲国产 | 国产精品视频久久 | 国产清纯白嫩初高生视频在线观看 | 免费国产视频在线观看 |