您好,歡迎來到賦能網!

JAVA數據庫怎么分模塊?JAVA數據庫分庫實例

賦能網 2023-05-09 92

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

1.示例數據庫準備

為了說清楚如何用Java語言和相關框架實現業(yè)務表的分庫和分表處理。這里首先用MySQL數據庫中創(chuàng)建兩個獨立的數據庫實例,名字為mydb和mydb2,此可演示分庫操作。另外在每個數據庫實例中,創(chuàng)建12個業(yè)務表,按年月進行數據拆分。具體的創(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.分庫分表實現

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

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