您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
ShardingSphere-JDBC内置算法即其他配置
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
ShardingSphere-JDBC内置算法即其他配置
Apache ShardingSphere
2021-01-22
IP归属:未知
67440浏览
# 内置算法 ## 简介 Apache ShardingSphere 通过 SPI 方式允许开发者扩展算法; 与此同时,Apache ShardingSphere 也提供了大量的内置算法以便于开发者使用。 ## 使用方式 内置算法均通过 type 和 props 进行配置,其中 type 由算法定义在 SPI 中,props 用于传递算法的个性化参数配置。 无论使用哪种配置方式,均是将配置完毕的算法命名,并传递至相应的规则配置中。 本章节根据功能区分并罗列 Apache ShardingSphere 全部的内置算法,供开发者参考。 ## 自动分片算法 ### 取模分片算法 类型:MOD 可配置属性: | *属性名称* | *数据类型* | *说明* | | -------------- | --------- | ------- | | sharding-count | int | 分片数量 | ### 哈希取模分片算法 类型:HASH_MOD 可配置属性: | *属性名称* | *数据类型* | *说明* | | -------------- | --------- | ------- | | sharding-count | int | 分片数量 | ### 基于分片容量的范围分片算法 类型:VOLUME_RANGE 可配置属性: | *属性名称* | *数据类型* | *说明* | | --------------- | --------- | -------------------------- | | range-lower | long | 范围下界,超过边界的数据会报错 | | range-upper | long | 范围上界,超过边界的数据会报错 | | sharding-volume | long | 分片容量 | ### 基于分片边界的范围分片算法 类型:BOUNDARY_RANGE 可配置属性: | *属性名称* | *数据类型* | *说明* | | --------------- | --------- | --------------------------------- | | sharding-ranges | String | 分片的范围边界,多个范围边界以逗号分隔 | ### 自动时间段分片算法 类型:AUTO_INTERVAL 可配置属性: | *属性名称* | *数据类型* | *说明* | | ---------------- | --------- | ----------------------------------------------- | | datetime-lower | String | 分片的起始时间范围,时间戳格式:yyyy-MM-dd HH:mm:ss | | datetime-upper | String | 分片的结束时间范围,时间戳格式:yyyy-MM-dd HH:mm:ss | | sharding-seconds | long | 单一分片所能承载的最大时间,单位:秒 | ## 标准分片算法 Apache ShardingSphere 内置的标准分片算法实现类包括: ### 行表达式分片算法 使用 Groovy 的表达式,提供对 SQL 语句中的 `=` 和 `IN` 的分片操作支持,只支持单分片键。 对于简单的分片算法,可以通过简单的配置使用,从而避免繁琐的 Java 代码开发,如: `t_user_$->{u_id % 8}` 表示 `t_user` 表根据 `u_id` 模 8,而分成 8 张表,表名称为 `t_user_0` 到 `t_user_7`。 详情请参见[行表达式]。 类型:INLINE 可配置属性: | *属性名称* | *数据类型* | *说明* | *默认值* | | ----------------------------------------- | --------- | --------------------------------------------------- | ------- | | algorithm-expression | String | 分片算法的行表达式 | - | | allow-range-query-with-inline-sharding (?)| boolean | 是否允许范围查询。注意:范围查询会无视分片策略,进行全路由 | false | ### 时间范围分片算法 类型:INTERVAL 可配置属性: | *属性名称* | *数据类型* | *说明* | *默认值* | | ---------------------------- | --------- | -------------------------------------------------------------------------------- | ------- | | datetime-pattern | String | 分片键的时间戳格式,必须遵循 Java DateTimeFormatter 的格式。例如:yyyy-MM-dd HH:mm:ss | - | | datetime-lower | String | 时间分片下界值,格式与 `datetime-pattern` 定义的时间戳格式一致 | - | | datetime-upper (?) | String | 时间分片上界值,格式与 `datetime-pattern` 定义的时间戳格式一致 | 当前时间 | | sharding-suffix-pattern | String | 分片数据源或真实表的后缀格式,必须遵循 Java DateTimeFormatter 的格式。例如:yyyyMM | - | | datetime-interval-amount (?) | int | 分片键时间间隔,超过该时间间隔将进入下一分片 | 1 | | datetime-interval-unit (?) | String | 分片键时间间隔单位,必须遵循 Java ChronoUnit 的枚举值。例如:MONTHS | DAYS | ## 复合分片算法 ### 复合行表达式分片算法 详情请参见[行表达式]。 类型:COMPLEX_INLINE | *属性名称* | *数据类型* | *说明* | *默认值* | | ----------------------------------------- | --------- | --------------------------------------------------- | ------- | | sharding-columns (?) | String | 分片列名称,多个列用逗号分隔。如不配置无法则不能校验 | - | | algorithm-expression | String | 分片算法的行表达式 | - | | allow-range-query-with-inline-sharding (?)| boolean | 是否允许范围查询。注意:范围查询会无视分片策略,进行全路由 | false | ## Hint 分片算法 ### Hint 行表达式分片算法 详情请参见[行表达式]。 类型:HINT_INLINE | *属性名称* | *数据类型* | *说明* | *默认值* | | ----------------------------------------- | --------- | --------------------------------------------------- | ------- | | algorithm-expression (?) | String | 分片算法的行表达式 | ${value}| ## 自定义类分片算法 通过配置分片策略类型和算法类名,实现自定义扩展。 类型:CLASS_BASED 可配置属性: | *属性名称* | *数据类型* | *说明* | | ------------------ | --------- | -------------------------------------------------- | | strategy | String | 分片策略类型,支持STANDARD、COMPLEX或HINT(不区分大小写) | | algorithmClassName | String | 分片算法全限定名 | ## 轮询算法 类型:ROUND_ROBIN 可配置属性:无 ## 随机访问算法 类型:RANDOM 可配置属性:无 ## MD5 加密算法 类型:MD5 可配置属性:无 ## AES 加密算法 类型:AES 可配置属性: | *名称* | *数据类型* | *说明* | | ------------- | --------- | ------------- | | aes-key-value | String | AES 使用的 KEY | ## RC4 加密算法 类型:RC4 可配置属性: | *名称* | *数据类型* | *说明* | | ------------- | --------- | ------------- | | rc4-key-value | String | RC4 使用的 KEY | # 属性配置 ## 简介 Apache ShardingSphere 提供属性配置的方式配置系统级配置。 ## 配置项说明 | *名称* | *数据类型* | *说明* | *默认值* | | ---------------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | | sql-show (?) | boolean | 是否在日志中打印 SQL。 <br /> 打印 SQL 可以帮助开发者快速定位系统问题。日志内容包含:逻辑 SQL,真实 SQL 和 SQL 解析结果。<br /> 如果开启配置,日志将使用 Topic `ShardingSphere-SQL`,日志级别是 INFO。 | false | | sql-simple (?) | boolean | 是否在日志中打印简单风格的 SQL。 | false | | executor-size (?) | int | 用于设置任务处理线程池的大小。每个 ShardingSphereDataSource 使用一个独立的线程池,同一个 JVM 的不同数据源不共享线程池。 | infinite | | max-connections-size-per-query (?) | int | 一次查询请求在每个数据库实例中所能使用的最大连接数。 | 1 | | check-table-metadata-enabled (?) | boolean | 是否在程序启动和更新时检查分片元数据的结构一致性。 | false | | query-with-cipher-column (?) | boolean | 是否使用加密列进行查询。在有原文列的情况下,可以使用原文列进行查询。 | true | | xa-transaction-manager-type (?) | String | XA 事务管理器类型。列如:Atomikos,Narayana,Bitronix | Atomikos | # 不支持项 ## DataSource 接口 * 不支持 timeout 相关操作 ## Connection 接口 * 不支持存储过程,函数,游标的操作 * 不支持执行 native SQL * 不支持 savepoint 相关操作 * 不支持 Schema/Catalog 的操作 * 不支持自定义类型映射 ## Statement 和 PreparedStatement 接口 * 不支持返回多结果集的语句(即存储过程,非 SELECT 多条数据) * 不支持国际化字符的操作 ## ResultSet 接口 * 不支持对于结果集指针位置判断 * 不支持通过非 next 方法改变结果指针位置 * 不支持修改结果集内容 * 不支持获取国际化字符 * 不支持获取 Array ## JDBC 4.1 * 不支持 JDBC 4.1 接口新功能 查询所有未支持方法,请阅读 `org.apache.shardingsphere.driver.jdbc.unsupported` 包。
原创文章,需联系作者,授权转载
上一篇:CDN中的“状态码304”详解
下一篇:ShardingSphere-JDBC——影子库&&分布式治理配置手册
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
数据库技术的发展与变革方兴未艾,NewSQL的出现,只是将各种所需技术组合在一起,而这些技术组合在一起所实现的核心功能,推动着云原生数据库的发展。 NewSQL的三种分类中,新架构和云数据库涉及了太多与数据库相关的底层实现,为了保证本文的范围不至太过发散,我们重点介绍透明化分片数据库中间件的核心功能与实现原理,另外两种类型的NewSQL在核心功能上类似,但实现原理会有所差别。
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
Apache ShardingSphere针对新业务上线、旧业务改造分别提供了相应的全套脱敏解决方案。
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
ShardingSphere对于XA方案,提供了一套SPI解决方案,对Narayana进行了整合,Narayana初始化流程,开始事务流程,获取连接流程,提交事务流程,回滚事务流程。
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
5.x 是 Apache ShardingSphere从分库分表中间件向分布式数据库生态转化的里程碑,从 4.x 版本后期开始打磨的可插拔架构在 5.x 版本已逐渐成型,项目的设计理念和 API 都进行了大幅提升。欢迎大家测试使用!
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号