sharding官網:
環境:jdk8, springboot + jpa + sharding-jdbc 實現分表分庫
導包:
io.shardingsphere
sharding-jdbc-spring-boot-starter
3.1.0
io.shardingsphere
sharding-jdbc-spring-namespace
3.1.0
重要配置:
注意:這裡的sharding.jdbc.datasource.grouptest0.jdbc-url的資料庫名稱是自己命名的,不能是group_test0,sharding框架本身不支援這樣的命名方式,所以 這裡只能grouptest0的格式
sharding.jdbc.datasource.names=grouptest1,grouptest0
# 第乙個資料庫
sharding.jdbc.datasource.grouptest1.type=com.zaxxer.hikari.hikaridatasource
sharding.jdbc.datasource.grouptest1.driver-class-name=com.mysql.jdbc.driver
sharding.jdbc.datasource.grouptest1.jdbc-url=jdbc:mysql://localhost:3306/grouptest1?characterencoding=utf-8
sharding.jdbc.datasource.grouptest1.username=
sharding.jdbc.datasource.grouptest1.password=
# 第二個資料庫
sharding.jdbc.datasource.grouptest0.type=com.zaxxer.hikari.hikaridatasource
sharding.jdbc.datasource.grouptest0.driver-class-name=com.mysql.jdbc.driver
sharding.jdbc.datasource.grouptest0.jdbc-url=jdbc:mysql://localhost:3306/grouptest0?characterencoding=utf-8
sharding.jdbc.datasource.grouptest0.username=
sharding.jdbc.datasource.grouptest0.password=
# 分庫策略 分庫的維度 定義在那張表 的id來進行分庫 例如:tables.t_clientinfo
sharding.jdbc.config.sharding.tables.t_clientinfo.database-strategy.inline.sharding-column=id
sharding.jdbc.config.sharding.tables.t_clientinfo.database-strategy.inline.algorithm-expression=grouptest$->
# 水平拆分的資料庫(表) 配置分庫 + 分表策略 行表示式分片策略
sharding.jdbc.config.sharding.tables.t_clientinfo.actual-data-nodes=grouptest$->.t_clientinfo_$->
sharding.jdbc.config.sharding.tables.t_clientinfo.table-strategy.inline.sharding-column=connected
sharding.jdbc.config.sharding.tables.t_clientinfo.table-strategy.inline.algorithm-expression=t_clientinfo_$->
實體
@entity
@table(name = "t_clientinfo")
public class clientinfo
public void setid(long id)
public integer getconnected()
public void setconnected(integer connected)
public long getmostsignbits()
public void setmostsignbits(long mostsignbits)
public long getleastsignbits()
public void setleastsignbits(long leastsignbits)
public date getlastconnecteddate()
public void setlastconnecteddate(date lastconnecteddate)
}
介面 dao
注意:這裡寫sql 用邏輯表
@repository
public inte***ce clientinfodao extends jparepository
實現介面
@service
public class clientinfoservice
public clientinfo get(long id)
controller層
@controller
public class clientinfocontroller
@responsebody
public clientinfo get(long id)
}
sharding jdbc分庫分表
1.gradle構建方式載入依賴包 compile group io.shardingsphere name sharding jdbc core version 3.0.0 2.testsourceconfiguration檔案類配置資料庫 configuration public class t...
分庫分表和sharding jdbc
關係型資料庫在大於一定資料量的情況下效能會急劇下降。在面對網際網路海量資料的情況時,所有資料都存於一張表,顯然很容易會達到資料表可承受的資料量閾值。單純分表雖然可以解決資料量過大導致檢索變慢的問題,但無法解決高併發情況下訪問同乙個庫,導致資料庫響應變慢的問題。所以通常水平拆分都至少要採用分庫的方式,...
Sharding JDBC分庫分表使用記錄
官網 data source start sharding.jdbc.datasource.names ds sharding.jdbc.datasource.ds.type com.alibaba.druid.pool.druiddatasource sharding.jdbc.datasourc...