ShardingSphere 5.3.2 发布 | Driver 接入配置中心,数据迁移/加密功能增强

Apache ShardingSphere 本周迎来了 5.3.2 版本的发布,该版本历时两个月,共合并了来自全球的团队和个人累计 797个 PR,新版本在功能、性能、测试、文档、示例等方面都进行了大量的优化。本次更新包含了不少能够提升用户体验、解决用户痛点的内容,本文与大家一起快速预览:

  • ShardingSphere Driver 支持 Apollo

  • 数据迁移支持迁移任意索引结构的表(包括无索引的表)

  • 数据加密模糊查询功能支持 concat 函数

功能预览‍‍‍‍

ShardingSphere Driver 支持 Apollo

ShardingSphere 自 5.3.0 起移除了 Spring Boot Starter 等模块,统一使用标准的 JDBC Driver 形式指定配置文件。起初的 ShardingSphereDriver 只能从文件系统中读取配置,在使用配置中心统一管理配置的场景下存在一定局限。ShardingSphere 5.3.2 将 Driver 的配置读取调整为 SPI 接口,并新增了从 Apollo 配置中心读取配置的实现。

JDBC URL 的写法如下:

# absolutepath 绝对路径读取配置
jdbc:shardingsphere:absolutepath:/path/to/config.yml

# classpath 从类路径读取配置
jdbc:shardingsphere:classpath:config/shardingsphere/config.yml

# apollo 从 Apollo 读取配置
jdbc:shardingsphere:apollo:apollo.meta?appid=ss-test&namespace=config

当然,提供 SPI 接口意味着,开发者可以按照自己的场景定制配置读取逻辑,例如实现从其他注册中心读取配置等。同时,ShardingSphere 社区也欢迎各位开发者贡献通用的配置实现。

数据迁移支持迁移任意索引结构的表(包括无索引的表)

ShardingSphere 的用户众多,应用场景复杂多样,其中有一部分就体现在表结构设计上。例如,有些表使用了复合主键,有些表没有主键但有复合唯一索引,有些表上没有任何主键/索引……

ShardingSphere 自 5.3.2 起,对上述场景均进行了一定的支持与提升,目前数据迁移的支持情况如下表:

[1] 分表之间可以并发,单表内数据分段不支持并发。

[2] 不支持 DATA_MATCH 一致性校验,CRC32_MATCH 仅支持 MySQL。

[3] 以首字段进行断点续传。

[4] 部分字段类型的主键表目前无法聚合排序,所以不支持 DATA_MATCH 一致性校验。例如 MySQL 的 VARBINARY 类型。

数据加密模糊查询功能支持 concat 函数

自 ShardingSphere 5.3.0 支持加密列模糊查询起,ShardingSphere 社区收到了不少用户关于该功能的反馈。模糊查询 like 运算符经常与通配符 % 搭配使用,社区有用户反馈,ShardingSphere 不支持 SQL 通过 CONCAT 函数拼接的通配符的查询,只能自行在参数值上完成通配符拼接。

自 ShardingSphere 5.3.2 起,加密功能对函数的支持进一步提升,例如模糊查询的通配符可以直接使用以下形式的 SQL:

select * from t where user_name like CONCAT('%', ?, '%')

对于其他函数的支持,ShardingSphere 仍在进一步完善中,也欢迎有兴趣的开发者参与到 Apache ShardingSphere 社区,共同打磨更完美的 ShardingSphere。

更新日志

ShardingSphere 5.3.2 完整更新日志如下:

API 调整

  • Proxy:新增 system-log-level 配置项,支持动态调整日志级别
  • DistSQL:移除 Hint 相关 DistSQL,用户可使用 SQL Hint 代替

新功能

  • Scaling:pipeline job 支持任意索引结构的表

功能增强

  • Scaling:全量导出和一致性校验使用 JDBC 流式模式配置
  • Scaling:pipeline job 兼容 MySQL 二进制类型字段主键的表
  • Scaling:迁移等作业实现改为阻塞式,便于 ejob 获取作业真实的生命周期,支持故障转移
  • Scaling:优化大表记录数估算
  • Scaling:支持 proxy 没有分片规则的迁移:包括迁移到单表或者纯加密
  • Scaling:关闭 useServerPrepStmts,避免 MySQL 服务端预编译语句超出限制影响业务
  • Scaling:MySQL binlog 在解析时间类型的时候返回准确的类型,而不是字符串
  • Scaling:pipeline prepare 阶段,新增全局标记
  • Scaling:新增 netTimeoutForStreamingResults 参数,避免MySQL 流式读取数据消费太慢导致连接被服务端关闭
  • Authority:支持指定密码认证方式
  • Authority:openGauss 支持 md5 认证
  • Agent:为 JDBC 添加更多监控指标
  • Kernel:ShardingSphere Driver 配置读取 SPI 化并支持 Apollo
  • Kernel:调整 SKIP_ENCRYPT_REWRITE SQL Hint 为 SKIP_SQL_REWRITE 以支持更多场景
  • Kernel:支持解析 openGauss EXPLAIN PERFORMANCE 语法
  • Encrypt:LIKE 功能支持 concat 函数

问题修复

  • Scaling:修复 TestDecodingPlugin 解析 unicode 字符错误
  • Scaling:PostgreSQL 迁移支持 json 相关的字段
  • DistSQL:CREATE SHARDING TABLE RULE 支持 NONE 策略
  • Kernel:修复空数据源时使用系统库报错问题
  • Kernel:修复单机模式下配置雪花算法 worker-id 不生效问题
  • Kernel:删除读写分离和数据库发现规则时清理存储节点信息
  • Kernel:修复单表复杂查询 Column index out of range 异常问题
  • Kernel:修复 PostgreSQL like 小写查询时异常的问题
  • Kernel:修复前后端数据库类型不一致时,内置元数据库数据收集的异常
  • Kernel:修复特殊表名路由报错的问题
  • Kernel:修复 MySQL 创建存储过程语法报错
  • Kernel:修复 union 表名提取异常造成的 NPE
  • Kernel:修复大写表名约束未改写的异常
  • Kernel:修复 PostgreSQL/openGauss SQL 包含 money 类型解析报错的问题
  • Kernel:修复 PostgreSQL/openGauss 占位符与类型转换同时使用导致 SQL 解析报错的问题
  • Kernel:修复 PostgreSQL/openGauss 解析常量类型转换语法报错的问题
  • Kernel:修复联邦查询引擎 SQL 包含汉字导致的编码异常
  • Kernel:修复 JDBC 接入端 set variable 语句执行 IndexOutOfBoundsException
  • Kernel:修复执行 Drop index 语句出现的 index does not exist 异常
  • Proxy:修复 MySQL Proxy Binary 协议无法正确处理数值符号的问题
  • Proxy:修复 PostgreSQL/openGauss Proxy 协议处理 bytea 类型数据报错的问题
  • Proxy:修复 PostgreSQL/openGauss Proxy 解析包含微秒的 time 类型数据报错的问题
  • Proxy:修复 PostgreSQL/openGauss Proxy 二进制格式 date 类型编解码报错的问题
  • Proxy:修复 PostgreSQL/openGauss Proxy int2 格式编码可能发生 CCE 的问题
  • Proxy:修复 PostgreSQL/openGauss Proxy 连接建立过程中传递的携带引号的字符集会报错的问题

相关链接

🔗 下载链接https://shardingsphere.apache.org/document/current/cn/downloads/🔗 更新日志https://github.com/apache/shardingsphere/blob/master/RELEASE-NOTES.md🔗 项目地址https://shardingsphere.apache.org/🔗 Cloud 子项目地址https://github.com/apache/shardingsphere-on-cloud

社区建设

此次 Apache ShardingSphere 5.3.2 版本的发布,共有 37 位 Contributor 提交了 797 个 PR,非常感谢社区伙伴们的大力支持,也欢迎越来越多的开发者积极参与 Apache ShardingSphere 社区建设、在纯粹的技术氛围中,提升个人技能、收获自我成长!:clap:

京ICP备2021015875号