您的位置:首页 > 其它

sharding-jdbc使用

2018-03-06 16:39 204 查看
示例代码
    https://gitee.com/chenfei01/my-zb/tree/master/learn-sharding-jdbc

简介
    sharding-jdbc是当当提供的开源的分库分表,读写分离工具,已jar包形式提供服务,不需要中间层,不需要部署

    功能简介:

        分库分表

        读写分离

        分布式主键(64位   一位符号为 0  + 41位时间 + 10工作进程 + 12位序列)

        多样化配置(编码+spring命名空间+yaml配置)

    官方地址  http://shardingjdbc.io/index_zh.html
使用
    1、maven依赖

            <sharding.jdbc.version>1.5.4</sharding.jdbc.version>
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>sharding-jdbc-core</artifactId>
<version>${sharding.jdbc.version}</version>
</dependency>
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>sharding-jdbc-config-spring</artifactId>
<version>${sharding.jdbc.version}</version>
</dependency>
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>sharding-jdbc-config-yaml</artifactId>
<version>${sharding.jdbc.version}</version>
</dependency>
    2、数据源配置
        分库策略,对customer_id取模   algorithm-class对应策略实现类<rdb:strategy id="couponStrategy" sharding-columns="customer_id" algorithm-class="com.zb.qjs.market.config.shard.DatabaseShardingAlgorithm" />        配置数据源:
          


        主从配置,读写分离数据源

<rdb:master-slave-data-source id="sharding_0"
master-data-source-ref="master_0"
slave-data-sources-ref="master_0_slave" />

<rdb:master-slave-data-source id="sharding_1"
master-data-source-ref="master_1"
slave-data-sources-ref="master_1_slave" />        分库数据源配置 <rdb:data-source id="shardingDataSource">
<rdb:sharding-rule data-sources="sharding_0,sharding_1,master_slave">
<rdb:table-rules>
<!-- 不需要分表,table-strategy不需要配置 -->
<rdb:table-rule logic-table="ganjs_market_coupon" database-strategy="couponStrategy"
data-source-names="sharding_0,sharding_1" />

<rdb:table-rule logic-table="ganjs_market_coupon_sync_log" database-strategy="syncLogStrategy"
data-source-names="sharding_0,sharding_1" />

<!-- 不需要分库分表,database-strategy和table-strategy都不需要配置 -->
<rdb:table-rule logic-table="ganjs_market_coupon_sync_error" data-source-names="master_slave" />
</rdb:table-rules>

<rdb:default-database-strategy sharding-columns="none"
algorithm-class="com.dangdang.ddframe.rdb.sharding.api.strategy.database.NoneDatabaseShardingAlgorithm"/>
<rdb:default-table-strategy sharding-columns="none"
algorithm-class="com.dangdang.ddframe.rdb.sharding.api.strategy.table.NoneTableShardingAlgorithm" />
</rdb:sharding-rule>
<rdb:props>
<prop key="sql.show">${datasource.sql.show}</prop>
</rdb:props>
</rdb:data-source>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="shardingDataSource" />
<property name="mapperLocations" value="classpath*:sqlmap/*.xml" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>            分表配置,同上,如图


        使用如上配置后,请求先根据customer_id取模获取对应数据库数据源,根据读写使用主从数据库,写是主库,读为从库

注意事项:
    

SQL语句限制

有限支持子查询

不支持HAVING

不支持OR,UNION 和 UNION ALL

不支持特殊INSERT

每条INSERT语句只能插入一条数据,不支持VALUES后有多行数据的语句

不支持DISTINCT聚合

不支持dual虚拟表

不支持SELECT LAST_INSERT_ID()

不支持CASE WHEN

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: