在進(jìn)行java開(kāi)發(fā)的時(shí)候,有很多應(yīng)用是離不開(kāi)數(shù)據(jù)庫(kù)的,隨著時(shí)間的推移,數(shù)據(jù)庫(kù)的數(shù)據(jù)越來(lái)越多,開(kāi)發(fā)人員需要做分表分庫(kù)的操作,那JAVA數(shù)據(jù)庫(kù)怎么分模塊?下面來(lái)我們就來(lái)給大家講解一下。
1.示例數(shù)據(jù)庫(kù)準(zhǔn)備
為了說(shuō)清楚如何用Java語(yǔ)言和相關(guān)框架實(shí)現(xiàn)業(yè)務(wù)表的分庫(kù)和分表處理。這里首先用MySQL數(shù)據(jù)庫(kù)中創(chuàng)建兩個(gè)獨(dú)立的數(shù)據(jù)庫(kù)實(shí)例,名字為mydb和mydb2,此可演示分庫(kù)操作。另外在每個(gè)數(shù)據(jù)庫(kù)實(shí)例中,創(chuàng)建12個(gè)業(yè)務(wù)表,按年月進(jìn)行數(shù)據(jù)拆分。具體的創(chuàng)建表腳本如下:
CREATE TABLE `t_bill_2021_1`( `order_id` bigint(20) NOT NULL COMMENT 訂單id , `user_id` int(20) NOT NULL COMMENT 用戶id , `address_id` bigint(20) NOT NULL COMMENT 地址id , `status` char(1) DEFAULT NULL COMMENT 訂單狀態(tài) , `create_time` datetime DEFAULT NULL COMMENT 創(chuàng)建時(shí)間 , PRIMARY KEY(`order_id`) USING BTREE ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci; CREATE TABLE `t_bill_2021_2`( `order_id` bigint(20) NOT NULL COMMENT 訂單id , `user_id` int(20) NOT NULL COMMENT 用戶id , `address_id` bigint(20) NOT NULL COMMENT 地址id , `status` char(1) DEFAULT NULL COMMENT 訂單狀態(tài) , `create_time` datetime DEFAULT NULL COMMENT 創(chuàng)建時(shí)間 , PRIMARY KEY(`order_id`) USING BTREE ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci; --省略.... CREATE TABLE `t_bill_2021_12`( `order_id` bigint(20) NOT NULL COMMENT 訂單id , `user_id` int(20) NOT NULL COMMENT 用戶id , `address_id` bigint(20) NOT NULL COMMENT 地址id , `status` char(1) DEFAULT NULL COMMENT 訂單狀態(tài) , `create_time` datetime DEFAULT NULL COMMENT 創(chuàng)建時(shí)間 , PRIMARY KEY(`order_id`) USING BTREE ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
成功執(zhí)行腳本后,在MySQL管理工具中可以看到如下的示例界面:
2.分庫(kù)分表實(shí)現(xiàn)
在Java語(yǔ)言下的框架中,有眾多的開(kāi)源框架,其中關(guān)于分庫(kù)分表的框架,可以選擇Apache ShardingSphere,其官網(wǎng)介紹說(shuō):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 5.x 版本開(kāi)始致力于可插拔架構(gòu)。 目前,數(shù)據(jù)分片、讀寫(xiě)分離、數(shù)據(jù)加密、影子庫(kù)壓測(cè)等功能,以及 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 與協(xié)議的支持,均通過(guò)插件的方式織入項(xiàng)目。官網(wǎng)地址為: https://shardingsphere.apache.org/index_zh.html 。
下面的示例采用Spring Boot框架來(lái)實(shí)現(xiàn),相關(guān)的庫(kù)通過(guò)Maven進(jìn)行管理。首先給出pom.xml配置文件的定義: