Java基于ShardingSphere實(shí)現(xiàn)分庫(kù)分表的實(shí)例詳解
一、簡(jiǎn)介
Apache ShardingSphere 是一套開(kāi)源的分布式數(shù)據(jù)庫(kù)解決方案組成的生態(tài)圈,它由 JDBC、Proxy 和 Sidecar(規(guī)劃中)這 3 款既能夠獨(dú)立部署,又支持混合部署配合使用的產(chǎn)品組成。 它們均提供標(biāo)準(zhǔn)化的數(shù)據(jù)水平擴(kuò)展、分布式事務(wù)和分布式治理等功能,可適用于如 Java 同構(gòu)、異構(gòu)語(yǔ)言、云原生等各種多樣化的應(yīng)用場(chǎng)景。
Apache ShardingSphere 旨在充分合理地在分布式的場(chǎng)景下利用關(guān)系型數(shù)據(jù)庫(kù)的計(jì)算和存儲(chǔ)能力,而并非實(shí)現(xiàn)一個(gè)全新的關(guān)系型數(shù)據(jù)庫(kù)。 關(guān)系型數(shù)據(jù)庫(kù)當(dāng)今依然占有巨大市場(chǎng)份額,是企業(yè)核心系統(tǒng)的基石,未來(lái)也難于撼動(dòng),我們更加注重在原有基礎(chǔ)上提供增量,而非顛覆。
Apache ShardingSphere 5.x 版本開(kāi)始致力于可插拔架構(gòu),項(xiàng)目的功能組件能夠靈活的以可插拔的方式進(jìn)行擴(kuò)展。 目前,數(shù)據(jù)分片、讀寫(xiě)分離、數(shù)據(jù)加密、影子庫(kù)壓測(cè)等功能,以及 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 與協(xié)議的支持,均通過(guò)插件的方式織入項(xiàng)目。 開(kāi)發(fā)者能夠像使用積木一樣定制屬于自己的獨(dú)特系統(tǒng)。Apache ShardingSphere 目前已提供數(shù)十個(gè) SPI 作為系統(tǒng)的擴(kuò)展點(diǎn),仍在不斷增加中。
ShardingSphere 已于2020年4月16日成為 Apache 軟件基金會(huì)的頂級(jí)項(xiàng)目。
二、項(xiàng)目使用
1、引入依賴(lài)
<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.0.0-RC2</version> </dependency>
2、數(shù)據(jù)庫(kù)
3、實(shí)體類(lèi)
@Data public class User { private Integer id; private String name; private Integer age; }
4、mapper
這里用的Mybatis-plus 3.4版本。
@Mapper public interface UserMapper extends BaseMapper<User> { }
5、yml配置
spring: shardingsphere: datasource: #數(shù)據(jù)庫(kù)分庫(kù)名 names: ds0,ds1 ds0: #type為數(shù)據(jù)源,如果是Druid數(shù)據(jù)庫(kù)連接池,可以去改 type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/test0?characterEncoding=utf-8&serverTimezone=UTC username: root password: root ds1: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/test1?characterEncoding=utf-8&serverTimezone=UTC username: root password: root # 分片規(guī)則 sharding: default-database-strategy: inline: algorithm-expression: ds$->{id%2} sharding-column: id tables: user: actual-data-nodes: ds${0..1}.user_${0..2} table-strategy: inline: algorithm-expression: user_${age%2} sharding-column: age # 在日志中SQL語(yǔ)句 props: sql: show: true
6、測(cè)試類(lèi)
@SpringBootTest class DemoApplicationTests { @Resource private UserMapper userMapper; @Test void contextLoads() { User user = new User(); user.setId(1); user.setName("666"); user.setAge(16); userMapper.insert(user); } @Test void contextLoads2() { User user = new User(); user.setId(2); user.setName("666"); user.setAge(17); userMapper.insert(user); } }
7、數(shù)據(jù)
到此這篇關(guān)于ShardingSphere實(shí)現(xiàn)分庫(kù)分表的文章就介紹到這了,更多相關(guān)ShardingSphere分庫(kù)分表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何使用Jenkins構(gòu)建GIT+Maven項(xiàng)目
這篇文章主要介紹了如何使用Jenkins構(gòu)建GIT+Maven項(xiàng)目,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09java使用common-fileupload實(shí)現(xiàn)文件上傳
這篇文章主要為大家詳細(xì)介紹了java使用common-fileupload實(shí)現(xiàn)文件上傳的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10@Scheduled fixedDelayString 加載properties配置方式
這篇文章主要介紹了@Scheduled fixedDelayString 加載properties配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10Java實(shí)現(xiàn)手寫(xiě)一個(gè)線程池的示例代碼
線程池技術(shù)想必大家都不陌生把,相信在平時(shí)的工作中沒(méi)有少用,而且這也是面試頻率非常高的一個(gè)知識(shí)點(diǎn),那么大家知道它的實(shí)現(xiàn)原理和細(xì)節(jié)嗎?本文就來(lái)通過(guò)手寫(xiě)一個(gè)簡(jiǎn)單的線程池框架,去掌握線程池的基本原理,感興趣的可以學(xué)習(xí)一下2022-10-10基于java實(shí)現(xiàn)停車(chē)場(chǎng)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了基于java實(shí)現(xiàn)停車(chē)場(chǎng)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11mybatis中oracle實(shí)現(xiàn)分頁(yè)效果實(shí)例代碼
實(shí)現(xiàn)分頁(yè)的方式有很多,但常用的是通過(guò)SQL來(lái)顯示分頁(yè)。這篇文章主要介紹了mybatis中oracle實(shí)現(xiàn)分頁(yè)效果實(shí)例代碼,有興趣的可以了解一下。2017-04-04