您好,歡迎來到賦能網(wǎng)!

JAVA數(shù)據(jù)庫怎么分模塊?JAVA數(shù)據(jù)庫分庫實例

賦能網(wǎng) 2023-05-09 92

在進(jìn)行java開發(fā)的時候,有很多應(yīng)用是離不開數(shù)據(jù)庫的,隨著時間的推移,數(shù)據(jù)庫的數(shù)據(jù)越來越多,開發(fā)人員需要做分表分庫的操作,那JAVA數(shù)據(jù)庫怎么分模塊?下面來我們就來給大家講解一下。

1.示例數(shù)據(jù)庫準(zhǔn)備

為了說清楚如何用Java語言和相關(guān)框架實現(xiàn)業(yè)務(wù)表的分庫和分表處理。這里首先用MySQL數(shù)據(jù)庫中創(chuàng)建兩個獨立的數(shù)據(jù)庫實例,名字為mydb和mydb2,此可演示分庫操作。另外在每個數(shù)據(jù)庫實例中,創(chuàng)建12個業(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)建時間
    , 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)建時間
    , 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)建時間
    , PRIMARY KEY(`order_id`) USING BTREE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;

成功執(zhí)行腳本后,在MySQL管理工具中可以看到如下的示例界面:

2.分庫分表實現(xiàn)

在Java語言下的框架中,有眾多的開源框架,其中關(guān)于分庫分表的框架,可以選擇Apache ShardingSphere,其官網(wǎng)介紹說:ShardingSphere 是一套開源的分布式數(shù)據(jù)庫解決方案組成的生態(tài)圈,它由 JDBC、Proxy 和 Sidecar(規(guī)劃中)這 3 款既能夠獨立部署,又支持混合部署配合使用的產(chǎn)品組成。 它們均提供標(biāo)準(zhǔn)化的數(shù)據(jù)水平擴展、分布式事務(wù)和分布式治理等功能,可適用于如 Java 同構(gòu)、異構(gòu)語言、云原生等各種多樣化的應(yīng)用場景。Apache ShardingSphere 5.x 版本開始致力于可插拔架構(gòu)。 目前,數(shù)據(jù)分片、讀寫分離、數(shù)據(jù)加密、影子庫壓測等功能,以及 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 與協(xié)議的支持,均通過插件的方式織入項目。官網(wǎng)地址為: https://shardingsphere.apache.org/index_zh.html 。

下面的示例采用Spring Boot框架來實現(xiàn),相關(guān)的庫通過Maven進(jìn)行管理。首先給出pom.xml配置文件的定義: