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>
分库策略,对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取模获取对应数据库数据源,根据读写使用主从数据库,写是主库,读为从库
注意事项:
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
相关文章推荐
- sharding-jdbc使用
- 在springboot项目中使用mybatis 集成 Sharding-JDBC
- sharding-jdbc 使用,进行分库分表以及多数据库间的事物验证
- 分库分表框架Sharding-jdbc以及分布式worker:Elastic-job的使用与踩坑
- Sharding-JDBC使用限制
- sharding-jdbc 使用,进行分库分表以及多数据库间的事物验证
- sharding-jdbc使用限制
- Mysql系列八:Mycat和Sharding-jdbc的区别、Mycat分片join、Mycat分页中的坑、Mycat注解、Catlet使用
- sharding-jdbc使用限制
- JSP 使用 JDBC连接SQL Server
- jdbc02.使用jdbc连接mysql数据库
- 使用JDBC的三种连接方式查表
- 此驱动程序不支持 Java Runtime Environment (JRE) 1.8 版。请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库。
- 使用jdbc和setvlet实现登陆验证
- 使用Spring对JDBC的Dao的支持类操作数据库
- 在JSP中使用JDBC报错,没有说明错误类型,只报错误行数
- c3p0、dbcp、tomcat jdbc pool 连接池区别(推荐使用jdbc pool)
- Android使用Jdbc连接远程数据库
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 路由(一)分库分表配置
- 深入体验JavaWeb开发内幕——使用元数据简化JDBC代码