项目作者: kris-liu

项目描述 :
分库分表工具
高级语言: Java
项目地址: git://github.com/kris-liu/Sharding-DB.git
创建时间: 2019-05-03T13:32:22Z
项目社区:https://github.com/kris-liu/Sharding-DB

开源协议:

下载


Sharding-DB

分库分表工具

分表功能:

  1. 引入分表配置启动类

    1. <dependency>
    2. <groupId>cn.blogxin.sharding</groupId>
    3. <artifactId>sharding-db-spring-boot-starter</artifactId>
    4. <version>${project.parent.version}</version>
    5. </dependency>
  2. 添加数据库连接配置,该配置与正常DB连接池配置相同

    1. spring.datasource.driverClassName=com.mysql.jdbc.Driver
    2. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
    3. spring.datasource.username=root
    4. spring.datasource.password=
  3. 在mybatis的mapper接口上添加@Sharding注解并配置各项属性,包括库名,表名,分表策略,分表数

    1. @Sharding(sharding = true, databaseName = "test", tableName = "order_info", strategy = "cn.blogxin.sharding.plugin.strategy.HashShardingStrategyWithDataBase", count = 10)

分库分表功能:

  1. 引入分库配置启动类,该启动类包括了分表配置启动类

    1. <dependency>
    2. <groupId>cn.blogxin.sharding</groupId>
    3. <artifactId>sharding-db-spring-boot-starter</artifactId>
    4. <version>${project.parent.version}</version>
    5. </dependency>
  2. application.properties配置文件添加该配置用于启动分库能力

    1. sharding.databases=enable
  3. 添加数据库连接配置,配置库名,分库策略,分库数量,主库从库,每个数据库的连接池配置

    1. sharding.databases.test.shardingStrategy=cn.blogxin.sharding.plugin.strategy.database.DefaultShardingDataBaseStrategy
    2. sharding.databases.test.shardingCount=2
    3. sharding.databases.test.dataSource.master.0.driverClassName=com.mysql.jdbc.Driver
    4. sharding.databases.test.dataSource.master.0.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
    5. sharding.databases.test.dataSource.master.0.username=root
    6. sharding.databases.test.dataSource.master.0.password=
    7. sharding.databases.test.dataSource.master.1.driverClassName=com.mysql.jdbc.Driver
    8. sharding.databases.test.dataSource.master.1.url=jdbc:mysql://127.0.0.1:3306/test1?useUnicode=true&characterEncoding=utf-8
    9. sharding.databases.test.dataSource.master.1.username=root
    10. sharding.databases.test.dataSource.master.1.password=
    11. sharding.databases.test.dataSource.slave.0.driverClassName=com.mysql.jdbc.Driver
    12. sharding.databases.test.dataSource.slave.0.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
    13. sharding.databases.test.dataSource.slave.0.username=root
    14. sharding.databases.test.dataSource.slave.0.password=
    15. sharding.databases.test.dataSource.slave.1.driverClassName=com.mysql.jdbc.Driver
    16. sharding.databases.test.dataSource.slave.1.url=jdbc:mysql://127.0.0.1:3306/test1?useUnicode=true&characterEncoding=utf-8
    17. sharding.databases.test.dataSource.slave.1.username=root
    18. sharding.databases.test.dataSource.slave.1.password=
  4. 在mybatis的mapper接口上添加@Sharding注解并配置各项属性,包括库名,表名,分表策略,分表数

    1. @Sharding(sharding = true, databaseName = "test", tableName = "order_info", strategy = "cn.blogxin.sharding.plugin.strategy.HashShardingStrategyWithDataBase", count = 10)

示例

参见该项目的demo模块,该例子中,test库分两个库,每个库中各5张order_info表和order_ext表,总共分了10张表