Sharding-JDBC实战(一)

本文讲解sharding-jdbc的分库分表功能,基于eclipse开发工具,以maven项目来讲解,jdk是1.7的版本。

sharding-jdbc以jar包形式提供服务,所以要先引入maven依赖。

1.最精简版pom.xml文件:
  4.0.0
  com.hello.dba
  sharding-jdbc-demo
  0.0.1-SNAPSHOT
   
    UTF-8
  
  
  
    io.shardingsphere
    sharding-jdbc-core
    3.1.0

  
   commons-dbcp
    commons-dbcp
    1.4


    mysql
    mysql-connector-java
    5.1.47

  
 
2. 规则配置

配置是整个sharding-jdbc的核心,是sharding-jdbc中唯一与应用开发者打交道的模块。
sharding-jdbc可以通过Java、YAML、Spring命名空间和Spring Boot Starter四种方式配置。本文讲解java的配置方式,代码如下:

 // 配置真实数据源
        Map dataSourceMap = new HashMap<>();
        
        // 配置第一个数据源
           //org.apache.commons.dbcp.BasicDataSource
        BasicDataSource dataSource1 = new BasicDataSource();
        dataSource1.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource1.setUrl("jdbc:mysql://10.0.0.1:3306/ds0");
        dataSource1.setUsername("dba_01");
        dataSource1.setPassword("123456");
        dataSourceMap.put("ds0", dataSource1);
        
        // 配置第二个数据源
            //org.apache.commons.dbcp.BasicDataSource
        BasicDataSource dataSource2 = new BasicDataSource();
        dataSource2.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource2.setUrl("jdbc:mysql://10.0.0.2:3306/ds1");
        dataSource2.setUsername("dba_01");
        dataSource2.setPassword("123456");
        dataSourceMap.put("ds1", dataSource2);
        
        // 配置Order表规则
        TableRuleConfiguration orderTableRuleConfig = new TableRuleConfiguration();
        orderTableRuleConfig.setLogicTable("t_order");
        orderTableRuleConfig.setActualDataNodes("ds${0..1}.t_order${0..1}");
        
        // 配置分库 + 分表策略
        orderTableRuleConfig.setDatabaseShardingStrategyConfig(new InlineShardingStrategyConfiguration("user_id", "ds${user_id % 2}"));
        orderTableRuleConfig.setTableShardingStrategyConfig(new InlineShardingStrategyConfiguration("order_id", "t_order${order_id % 2}"));
        
        // 配置分片规则
        ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
        shardingRuleConfig.getTableRuleConfigs().add(orderTableRuleConfig);
        
        // 获取数据源对象
           //javax.sql.DataSource
        DataSource dataSource = ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, new ConcurrentHashMap(), new Properties());
3.数据库表信息

第一个DB(ds0):


Sharding-JDBC实战(一)_第1张图片
image.png

第二个DB(ds1):


Sharding-JDBC实战(一)_第2张图片
image.png

备注:表结构需要有user_id和order_id字段,一个是分库字段,一个是分表字段

你可能感兴趣的:(Sharding-JDBC实战(一))