分庫分表重點還是在於數據一致性,主從複製和庫表管理底層原理,本質上根據配置文件入不同庫,入不同表還是很簡單的。
學習鏈接:https://www.bilibili.com/video/BV1LK411s7RX?p=23&vd_source=510ec700814c4e5dc4c4fda8f06c10e8
🔥1. 基本概念
1.1. 基本名詞
1.1.1 ShardingSphere
分佈式數據庫中間件
1.1.2 產生場景
由於數據量不斷增大,原始可以使用硬件優化,現在需要增加分庫分表
分庫分表分爲垂直切分和水平切分
1. 垂直切分
1. 垂直分表:同一張表拆分字段存入不同表
2. 垂直分庫: 不同業務表存入不同業務的數據庫
2. 水平切分
1. 水平分表:可以根據id拆分表數據導不同表中
2. 水平分庫:表數據水平存到不同數據庫中,避免請求打到同一個庫中。不同庫中庫表結構都是一樣的
1.1.3 場景變遷
1. 數據庫設計的時候考慮垂直分庫、垂直分表
1. 數據量增加,優先考慮緩存、讀寫分離、索引、數據庫硬件、數據庫選擇等方式解決,實在解決不了了再考慮水平分庫分表
但存儲幾個問題:不同服務器數據庫之間如何管理
1.2 基本使用
1.2.1 Sharding-JDBC
用於數據分片和讀寫分離,操作不同數據庫的表,並不是分庫分表
1.2.1.1 水平分表
-
導入shardingshpere、druid依賴包
-
把原始spring.datasource刪除,使用sharding-datasource的properties配置文件
-
配置bean的覆蓋策略
spring.main.allow-bean-definition-overriding=true
-
後續就能實現原始代碼也能正常CRUD,course_1, course_2的插入和查詢採用分片策略進行查詢與插入
1.2.1.2 垂直分庫、公共表(略)
1.2.1.3 讀寫分離(略)
就是主寫從讀,從數據庫通過讀取binlog實時把數據拉取過來
1.2.2 Sharding-Proxy
數據庫代理端