ShardingJDBC介绍.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ShardingJDBC介绍

;Sharding-JDBC功能灵活且全面: 分片策略灵活,可支持=,BETWEEN,IN等多维度分片,也可支持多分片键共用。 SQL解析功能完善,支持聚合,分组,排序,Limit,OR等查询,并且支持Binding Table以及笛卡尔积的表查询。 支持柔性事务(目前仅最大努力送达型)。 支持读写分离。 支持分布式生成全局主键。 Sharding-JDBC配置多样: 可支持YAML和Spring命名空间配置 灵活多样的inline方式 ;Sharding-JDBC使用示例;可以使用两种方式引入依赖: 第一种:引入maven依赖,创建一个maven项目,在pom文件中添加如下配置: !-- 引入sharding-jdbc核心模块 -- dependency groupIdcom.dangdang/groupId artifactIdsharding-jdbc-core/artifactId version${latest.release.version}/version /dependency 第二种:导入jar包 下载核心jar包:sharding-jdbc-core-x.x.x.jar,并引入到项目中。;第一步:创建真实的数据源 可以使用任意一种数据库连接池:;第三步:配置规则 创建分库分表逻辑; 在第三步配置规则中,首先要创建需要分表的数据表的TableRule,这个对象绑定了逻辑表与实际表之间的关系。而后要创建一个ShardingRule对象,这个对象包含了所有的分库分表规则,我们需要用它来创建数据源。 在创建ShardingRule对象时,需要创建两个新的对象作为参数传递,这两个对象分别为分库策略对象和分表策略对象。这两个类有相同的父类:ShardingStrategy,构造方法都有两个参数,一个为String类型的分片键(sex、tea_id),一个为自定义分片策略对象,需要注意的是虽然两者传入的自定义分片策略对象是不同(分为库和表),但是这两个不同的分片策略对象却有着相同的父类,这两个类是我们可以自定义的,用来自定义分库和分表的策略,我们只需要实现相应的接口就可以了。 ;分片键算法接口有四种,这里我们取单分片表分片算法做示例接口定义如下图:; 上述接口中有三个方法,我们自定义的分片策略类要实现这三个方法,方法的实现就是我们自定义的分片策略。如下是一个余2的算法示例:; 由于SQL语法灵活复杂,分布式数据库和单机数据库的查询场景又不完全相同,难免有和单机数据库不兼容的SQL出现,所以说Sharding-JDBC并不是支持所有的SQL操作的,在其官方文档里详细介绍了它的SQL支持情况。 地址:http://dangdangdotcom.github.io/sharding-jdbc/post/sql_supported/; Sharding-JDBC对于连接查询不是不支持,而是部分支持,在官方文档的详细功能列表说到:支持多表笛卡尔积查询。这里要注意它说的是多表,而没有说多库, Sharding-JDBC并不支持多库的连接查询,只支持分表的多表连接查询,但是我们使用多库的连接查询时并不会抛出异常,只是查询结果会缺少数据,因为不同库中数据没法做到连接查询,所以有些数据查不到。如下例子: 系统中有A、B两个逻辑表,其中A表可以通过一个字段关联到B表。现在对这两个表做分库存储,分作两个库D1和D2,那么如果存在一条数据存储在D1库中的A表,而与之关联B表中的数据存储在D2库的B表中,此时使用左连接A left join B,无法获取到相应的B表的数据。;Sharding-JDBC无法完成子查询,如果子查询from的表也是一个分库分表的逻辑表时,程序无法识别会抛出异常。如下例: 如下语句:select * from A where colum1 = (select column1 from B where column2=’XXX’) 这样一个子查询语句,如果A表做了分表,B表也做了分表,那么这个查询语句将会报错,抛出异常:数据库中不存在B表。 这是因为分表之后A、B都是逻辑表名,在数据库中不存在,在SQL执行时,系统对于A表会做处理去查询它的多个实际表,而对于子查询的表B却未做处理直接在数据库中查询表B,所以会抛该异常。 ;Sharding-JDBC的GitHub地址如下: /dangdangdotcom/sharding-jdbc/tree/master 包含Sharding-JDBC的所有核心源码和示例源码,以及所有文档。 分库分表相关概念博客: /zhongxinWang/p

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档