分表分库方案的相关技术文档

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
<property name="minConnectionsPerPartition" value="5" /> <property name="partitionCount" value="2" /> <property name="acquireIncrement" value="5" /> <property name="statementsCacheSize" value="150" /> <property name="releaseHelperThreads" value="8" /> <property name="connectionTestStatement" value="select 1 from dual" /> </bean> <bean id="demoSqlSessionFactory" class="org.summercool.mybatis.spring.support.SqlSessionFactoryBean" > <property name="mainDataSource" ref="dataSourceMaster" /> <property name="shardDataSourceList" > <util:list> <ref bean="dataSourceSlave" /> </util:list> </property> <property name="mapperLocations" > <array> <value>classpath:mybatis/user-mapper.xml</value> </array> </property> <property name="shardStrategy" > <map> <entry key="Shard-User" > <value>org.summercool.mybatis.demo.shard.UserShardStrategy</value> </entry> </map> </property> </bean> <bean id="userDao" class="org.summercool.mybatis.demo.dao.impl.UserDaoImpl" > <property name="sqlSessionFactory" ref="demoSqlSessionFactory"/> </bean>
2.准备 Sql 映射文件
Xml 代码
Βιβλιοθήκη Baidu
1. <?xml version="1.0" encoding="UTF-8" ?> 2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" " > 3. <mapper namespace="NS-User" > 4. ty" > 5. 6. 7. 8. 9. 10. 11. 12. ) </insert> insert into $[user]$( id, name ) values ( #{id}, #{name} <insert id="insertUser" parameterType="org.summercool.mybatis.demo.dao.entity.UserEnti
简介:轻量封装 Ibatis3 因为本人在国内最大的电子商务公司工作期间,深感一个好的分表分库框架可以大大提高系统的承载能力及系统的 灵活性,而一个不好的分表分库方案,则让系统在大数据量处理的时候非常郁闷。所以, 在根据笔者在从事电子商务开发 的这几年中,对各个应用场景而开发的一个轻量封装 Ibatis3 的一个分表分库框架。 笔者工作的这几年之中,总结并开发了如下几个框架: summercool(Web 框架,已经应用于某国内大型网络公 司的等重要应用) 、 summercool-hsf (基于 Netty 实现的 RPC 框架, 已经应用国内某移动互联网公司) 、 summercool-ddl (基于 Mybaits 的分表分库框架,已经应用国内某移动互联网公司) ;相继缓存方案、和消息系统解决方案也会慢慢开源。 Summercool 框架做为笔者的第一个开源框架 框架地址:http://summercool-ddl.googlecode.com/svn/trunk 我的官方微博:www.weibo.com/vanwelldotcn 我的官方扣群:102934900
13. </mapper>
注意此处,对于需要分表或分库的表,使用“$[table name]$”这种方式表示。
3.Spring 配置
Xml 代码
1. <?xml version="1.0" encoding="UTF-8" ?> 2. <beans xmlns="http://www.springframework.org/schema/beans" 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. <bean id="dataSourceSlave" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close" > <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" > <value>${demo.datasource.slave.jdbcUrl}</value> </property> <property name="username" value="${demo.datasource.slave.username}" /> <property name="password" value="${demo.datasource.slave.password}" /> <property name="idleConnectionTestPeriodInMinutes" value="5" /> <property name="idleMaxAgeInMinutes" value="30" /> <property name="maxConnectionsPerPartition" value="30" /> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springfr xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springfra http://www.springframework.org/schema/util http://www.springframework.org/schema/u default-autowire="byName" > <bean id="dataSourceMaster" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close" > <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" > <value>${demo.datasource.master.jdbcUrl}</value> </property> <property name="username" value="${demo.datasource.master.username}" /> <property name="password" value="${demo.datasource.master.password}" /> <property name="idleConnectionTestPeriodInMinutes" value="5" /> <property name="idleMaxAgeInMinutes" value="30" /> <property name="maxConnectionsPerPartition" value="30" /> <property name="minConnectionsPerPartition" value="5" /> <property name="partitionCount" value="2" /> <property name="acquireIncrement" value="5" /> <property name="statementsCacheSize" value="150" /> <property name="releaseHelperThreads" value="8" /> <property name="connectionTestStatement" value="select 1 from dual" /> </bean> amework.org/schema/util" mework.org/schema/beans/spring-beans-3.0.xsd til/spring-util-3.0.xsd"
4.分表策略的实现
Java 代码
1. package org.summercool.mybatis.demo.shard;
2. import java.util.Map; 3. import javax.sql.DataSource; 4. import org.summercool.mybatis.ShardParam; 5. import org.summercool.mybatis.strategy.ShardStrategy; 6. /** 7. 8. 9. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. }
1.依赖
Xml 代码
1. <dependency> 2. 3. 4. <groupId>org.summercool</groupId> <artifactId>summercool-ddl</artifactId> <version>1.0 </version>
5. </dependency>
源码 svn 地址:http://summercool-ddl.googlecode.com/svn/trunk
68. </beans>
从上面的配置文件中,可以看到,注入了两个 DataSource,分别代表两个物理库。 然后再添加类型为 org.summercool.mybatis.spring.support.SqlSessionFactoryBean 的 bean 描述,并将两个 DataSource 关 联到该 bean 的主库和备库(备库可以有多个)字段。 同时,需要设置分表策略字段 shardStrategy,该字段的类型是 Map,添加分表策略时,Key 即为分表策略的名称,Value 则为 具体的分表策略实现。如上,注册了一个名称为"fr"的分表策略实现类 com.gexin.contact.utils.shard.ContactShardStrategy。
相关文档
最新文档