商务服务
ShardingSphere 5.3.0 发布 | 支持加密列模糊查询、数据源级别异构、数据校验断点续传...
2024-11-19 03:06

ShardingSphere 5.3.0 发布 | 支持加密列模糊查询、数据源级别异构、数据校验断点续传...

ShardingSphere 5.3.0 发布 | 支持加密列模糊查询、数据源级别异构、数据校验断点续传...

Apache ShardingSphere 本周迎来了 5.3.0 版本的发布,该版本历时一个半月,共合并了来自全球的团队和个人累计 687 个 PR,新版本在功能、性能、测试、文档、示例等方面都进行了大量的优化。

ShardingSphere 5.3.0 发布 | 支持加密列模糊查询、数据源级别异构、数据校验断点续传...

本次 5.3.0 版本带来了如下亮点功能

  • 加密列支持模糊查询‍

  • 支持数据源级别的异构数据库‍

  • 数据一致性校验支持断点续传‍

  • 跨多个分片执行 DML 语句支持隐式开启分布式事务‍

同时,5.3.0 在以下方面进行了重大调整,分别是:移除 Spring 配置方式、DistSQL 语法系统性重构、ShardingSphere-Proxy 配置格式重构。接下来,将会给大家详细介绍 ShardingSphere 5.3.0 版本的更新内容。

新亮点介绍

在此前的版本,ShardingSphere 的 Encrypt 功能不支持在 SQL 中使用 LIKE 运算符。一直以来,用户对 Encrypt 功能支持加密 LIKE 运算都有很强烈的诉求,通常加密的字段都是字符串类型为主,而字符串类型执行 LIKE 又是一种很常见的业务场景。

为了降低用户接入 Encrypt 功能的改造成本,ShardingSphere 社区发起了关于加密 LIKE 实现的讨论。讨论发起后,除了收到很多社区同学的积极反馈外,还有社区同学在充分调研了行业常规方案后,贡献了其原创的支持模糊搜索的加密算法实现。

相关 issue

https://github.com/apache/shardingsphere/issues/20435

算法设计方案,可参考 issue 中的附件: ‍

https://github.com/apache/shardingsphere/files/9684570/default.pdf

社区同学贡献的【单字符摘要算法】,在 ShardingSphere 加密算法 SPI 中对应实现为 CHAR_DIGEST_LIKE,欢迎大家使用。后续也会有文章对该功能进行详细解读,敬请期待

ShardingSphere 具备一定的数据网关能力。不过,在之前的版本中,ShardingSphere 的异构能力级别为逻辑库,即一个逻辑库下的所有数据源必须为相同的数据库类型。

本次更新,ShardingSphere 在内核层面支持了数据源级别的异构数据库,即一个逻辑库下的数据源可以是不同类型的数据库,允许用户混合使用不同的数据库存储数据。结合 ShardingSphere 已有的 SQL 方言转换能力,这一特性让 ShardingSphere 在异构数据网关方面的能力更进一步。

数据一致性校验是数据迁移后期的一个步骤。在过去的版本,数据一致性校验支持通过 DistSQL 触发、停止。当迁移数据量较大时,如果用户因某些原因中止了数据一致性校验,再次启动数据一致性校验则需要从头开始校验,影响用户体验。

ShardingSphere 5.3.0 的数据一致性校验支持进度存储,允许从断点处继续执行数据一致性校验。比如当前数据迁移正在进行数据校验,用户因某些原因停止校验,此时校验进度 (finished_percentage) 为 5%

 
  
 

此时,用户重新开启数据校验,数据校验无须从头开始,校验进度 (finished_percentage) 仍然为 5%,从上次停止的地方继续进行数据校验

 
  
 

使用限制:CRC32_MATCH 校验算法会一次性计算所有数据,暂不支持断点续传。

在过去的版本中,即使在 ShardingSphere 配置了 XA 等分布式事务,如果用户没有显式开启事务,ShardingSphere 无法保证路由到多分片的 DML 语句的原子性。考虑以下 SQL

当这条 SQL 被按照 id mod 2 分片时,ShardingSphere 内核层面会自动将 SQL 拆分为以下两条 SQL,并分别路由到不同的分片执行

 
  
 

如果用户没有显式开启事务,且其中某一分片 SQL 执行失败,此时由于无法回滚成功的操作,原子性无法保证。ShardingSphere 5.3.0 在分布式事务方面进行了一定的优化。如果用户为 ShardingSphere 配置了分布式事务,在执行路由到多分片的 DML 语句时,能够自动开启分布式事务,以确保 DML 语句执行的原子性。

 5.3.0 重大调整

在较早的 ShardingSphere 版本,ShardingSphere-JDBC 以 DataSource 的形式对外提供服务,如果要在 Spring / Spring Boot 项目中不修改代码的情况下引入 ShardingSphere-JDBC,则需要使用 ShardingSphere 提供的 Spring / Spring Boot Starter 等模块。

ShardingSphere 在支持多种配置方式的同时,也存在以下问题

  1. API 变化时,需要调整多种配置文件,工作量大

  1. 社区需要维护多种配置文档

  1. Spring bean 生命周期管理容易受项目的其他依赖影响,如 PostProcessor 不能正常执行

  1. Spring Boot Starter 和 Spring NameSpace 受 Spring 影响,配置风格与 YAML 差异较大

  1. Spring Boot Starter 和 Spring NameSpace 受 Spring 版本影响,用户接入时可能出现配置不识别、依赖冲突等情况,如 Spring Boot 1.x 与 2.x 版本配置风格不同。

ShardingSphere 自 5.1.2 起开始支持以 JDBC Driver 的形式引入 ShardingSphere-JDBC。这意味着应用要接入 ShardingSphere-JDBC,只须在 JDBC URL 上配置 ShardingSphere 提供的 Driver 即可。

移除 Spring 配置方式,简化并统一 ShardingSphere 的配置方式,既能够减少用户在配置 ShardingSphere 时使用不同配置方式所产生的疑问,也能够减少 ShardingSphere 社区的代码、文档维护成本。

灵活的规则配置资源管控能力是 Apache ShardingSphere 的特点之一。

DistSQL(Distributed SQL)是 Apache ShardingSphere 特有的操作语言。 它与标准 SQL 的使用方式完全一致,用于提供增量功能的 SQL 级别操作能力。

ShardingSphere 5.3.0 对 DistSQL 进行了系统性的重构,在对 DistSQL 的语法、语义、操作流程等方面进行了详细的斟酌后,设计出了更符合 Apache ShardingSphere 设计哲学、更专注于用户体验的 DistSQL 语法、流程。

详细的 DistSQL 语法可以参考最新的 ShardingSphere 官方文档,后续还将会有更直观的 DistSQL 铁路图,欢迎大家使用、反馈。

本次更新,ShardingSphere-Proxy 调整了配置格式,并减少了启动所需的各项配置文件。

server.yaml 重构前

 
  
 

server.yaml 重构后

 
  
 

在 ShardingSphere 5.3.0 中,server.yaml 不再是启动 Proxy 必须的文件,如果默认没有任何配置文件提供,Proxy 提供了默认账号 root/root。

ShardingSphere 云原生化是大势所趋。借助 DistSQL,ShardingSphere-Proxy 的配置文件得以进一步简化,对容器化部署等场景更加友好。

 更新日志

ShardingSphere 5.3.0 完整更新日志如下

  • DistSQL:语法 API 系统性重构,请参考用户手册

  • Proxy:global rule 配置方式变化,移除叹号

  • Proxy:允许零配置启动,无 Authority 配置时启用默认账户 root/root

  • Proxy:移除默认的 logback.xml 配置,使用 API 初始化

  • JDBC:移除 Spring 配置方式,使用  Driver + YAML 配置代替

  • DistSQL:新增语法 REFRESH DATAbase metaDATA,刷新逻辑库元数据

  • 支持 DistSQL REFRESH DATAbase metaDATA 从治理中心拉取配置并重新构建 metaDataContext

  • PostgreSQL/openGauss 支持设置隔离级别

  • 优化全量迁移进度展示

  • DATA_MATCH 一致性校验支持断点续传

  • 一致性校验作业支持 drop

  • 优化 job 列表里的 sharding_total_count 列名,避免和 sharding 混淆

  • 优化增量迁移:SQL 条件带上分片键避免广播路由

  • 允许更新分片键

  • 为 DATA_MATCH 校验算法优化列读取器,确保列取值类型一致

  • DistSQL:Encrypt DistSQL 语法优化,支持 like query 算法

  • DistSQL:注册存储节点时增加 properties 值校验

  • DistSQL:DROP RULE 时同步移除无用的算法

  • DistSQL:EXPORT DATAbase ConFIGURATION 支持广播表

  • DistSQL:REGISTER STORAGE UNIT 支持异构数据源

  • 支持 Encrypt LIKE 功能

  • 跨多个分片执行 DML 语句支持隐式开启分布式事务

  • 支持 PostgreSQL 和 openGauss d 查询

  • 支持不同数据库包含 null 值的字段排序和分组功能

  • 支持解析 PostgreSQL/openGauss INSERT RETURNING clause

  • SQL HINT 性能优化

  • 支持 MySQL CASE WHEN THEN 语句解析

  • 支持数据源级别的异构数据库

  • 【实验功能】增加数据分片缓存插件

  • PostgreSQL / openGauss 日期时间增加更多格式支持

  • MySQL Proxy 支持 COM_RESET_ConNECTION 命令

  • 优化 MySQLBinlogEventType.valueOf:兼容未知类型事件解析

  • 增加 federation 引擎对 case when 语句的支持

  • 修复 barrier 节点在 job 删除之后被创建导致 job 结构被破坏的问题

  • 修复 DATA_MATCH 可能忽略部分字段比较的问题

  • 修复数据迁移一致性校验源端dataSource没替换jdbcUrl参数问题

  • 修复 tables sharding algorithm type INLINE 区分大小写问题

  • 修复 MySQL 增量迁移时候,登陆时候需要 MySQL 系统库的权限问题

  • Proxy:修复无存储节点时,执行 select SQL 发生 NPE 的问题

  • Proxy:支持 Unicast 场景下 DATAbase_PERMITTED 权限校验

  • 修复查看计算节点列表为展示正确的 worker-id 问题

  • 修复 Weight 算法可读数据源和权重配置数量不相等下出现的路由异常

  • 修复分片+读写分离结合使用,两组读写分离引用相同的负载均衡器,负载均衡未起作用问题

  • 修复无法熔断和恢复 Proxy 实例问题

  • 修复 ShardingSphereDriver 集群模式下启动数据源被关闭问题

  • 修复绑定表规则中部分逻辑表和真实表不一致情况下的改写 bug

  • 修复 SpringBoot 接入方式不配置 rules 属性启动报错

  • 修复 Encrypt value 为 null 时空指针异常

  • 修复 parser 解析 Oracle varchar2 类型异常

  • 修复 serial 标识事务内判断错误问题

  • 修复因 wasNull 改动引起的 cursor fetch 报错

  • 修复 transaction rule 刷新元数据异常

  • 修复 Encrypt 场景下执行 call procedure 语句出现的 EncryptRule 转换 TransparentRule 异常

  • 修复 * 查询中包含 expressionProjection 时导致的结果集遍历异常

  • 修复 PostgreSQL Proxy int2 负数解码错误的问题

  • 修复 PostgreSQL Proxy Describe 协议不正确的问题

  • 修复 gsql 3.0 客户度连接 openGauss Proxy 交互式输入密码会卡死的问题

  • 修复 Proxy Prepared Statement SQL 审计没有传递实际参数的问题

  • 修复 MySQL Proxy 无法编码超长数据的问题

  • 修复 Oracle 注释中不含空格的解析异常

  • 修复 Encrypt 表的 show create table 语句展示异常问题

  • 修复 Encrypt 场景下同时配置加密列、辅助查询列或 like 查询列时 INSERT 语句 Token 生成异常

  • 扩展各个数据库类型实现,配置数据库专用保留字,仅转义保留字

  • 重构 PipelineTask.start;优化增量任务线程失败处理

  • 治理中心节点调整,将驼峰统一为下划线分割

致谢

此次 Apache ShardingSphere 5.3.0 版本的发布,共有 49 位 Contributor 提交了 687 个 PR,感谢社区伙伴们的大力支持!‍

ShardingSphere 5.3.0 发布 | 支持加密列模糊查询、数据源级别异构、数据校验断点续传...

🔗 下载链接

 https://shardingsphere.apache.org/document/current/cn/downloads/

🔗 更新日志

 https://github.com/apache/shardingsphere/blob/master/RELEASE-NOTES.md

🔗 项目地址

 https://shardingsphere.apache.org/

🔗 Cloud 子项目地址

    以上就是本篇文章【ShardingSphere 5.3.0 发布 | 支持加密列模糊查询、数据源级别异构、数据校验断点续传...】的全部内容了,欢迎阅览 ! 文章地址:http://keair.bhha.com.cn/news/1075.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 康宝晨移动站 http://keair.bhha.com.cn/mobile/ , 查看更多   
最新文章
首部法律LLM全景综述发布!双重视角分类法、技术进展与伦理治理
编辑:LRST【新智元导读】研究人员首次系统综述了大型语言模型(LLM)在法律领域的应用,提出创新的双重视角分类法,融合法律推
万亿产业即将起飞!国版星链能否赶超?| 产业链
最近有些消息,说下半年低轨卫星的发射即将加速。不管是政策层面还是资金层面,都有一些向好的变化。今天盘面上,西侧测试作为制
“布鞋首富”的身后事:娃哈哈案背后的法律暗礁与人性博弈
每一份看似固若金汤的财富版图,都可能因为一份被忽略的文件、一个被遗忘的名字,而在一夜之间分崩离析。这不是危言耸听,而是正
《恋人》要来了?集数从24集变更成14集,这部剧能播就是奇迹
娱乐圈又地震了!近日,赵露思突然现身微博喊话银河酷娱,与公司正面开撕。随后,关于她解约赔偿、被公司压榨、背刺等一系列消息
专为星粉打造 三星Galaxy Buds3 FE将高品质音频体验普惠更多消费者
2025年8月18日,三星电子宣布推出新款智能耳机三星GalaxyBuds3 FE,成为三星GalaxyBuds系列新成员。新品致力于以亲民价格提供高
女子买八元的蜜雪冰城喝出异物,老板:刚开始说喝出来一个籽,到工商局就说是老鼠屎
蜜雪冰城杭州拱墅区舟山东路59号店 老板:她也说她出车时间比较长,再一个她也是她们团队里收入最高的,这个东西确实也说过。但
腾讯云数据库AI服务首家通过信通院权威认证,用智能体打造数据库自治运维
Agent 正在深入企业核心场景,加速推动智能化运营。近日,中国信息通信研究院(信通院)公布了上半年“可信数据库”评估结果。腾
2025必看!3个高端普洱茶牌子解析指南,避坑省钱秘籍大!
遇到买错高端普洱茶?90%的人都做错了,
PayPal即将推出“加密支付”功能,支持商家接受100多种加密货币
财联社7月28日讯(编辑 牛占林)金融科技巨头将在不久后推出一项新的支付功能,允许商家在结账时接受超过一百种加密货币。美股周
锋线强援来了!特劳雷加盟北京女足
7月25日晚,北京京坛足球俱乐部在官方微信公众号宣布,马里前锋萨拉图·特劳雷加盟北京京坛东方雨虹女足。特劳雷出生于2002年9月