商务服务
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/ , 查看更多   
最新文章
5款文案自动生成器,高质量创意文案一键为你生成
  在当今竞争激烈的内容创作领域,每一个字、每一句话都承载着巨大的价值。对于创作者而言,文案自动生成器的出现
SEO搜索引擎优化怎么做?全面指南让你快速上手!
在当今的数字化时代,SEO(搜索引擎优化)已经成为企业和个人提升在线存在感和吸引目标用户的关键手段。无论你是初学者还是有经
Apple 苹果 iPhone 13系列 A2634 5G手机 256GB 绿色
iPhone 13 边缘采用平坦设计、配备独家超瓷晶面板,支持 IP68 抗水性能,拥有绿色、粉色、蓝色、午夜色、星光色和红色可选择。屏
【A6搜狗手机输入法下载】海尔A6搜狗手机输入法12.1.1免费下载
搜狗输入法,拥有超大中文词库,输入更加精准,智能。搜狗智能旺仔带你用表达,斗图,妙语,输入更加有趣。******特色功能******
制氧机十大品牌排行榜:吸氧机技术排名TOP 3
制氧机是一种重要的医疗设备,用于治疗呼吸系统疾病。随着科技的不断发展,市场上出现了众多品牌的制氧机,伴随着人们对健康的重
【瑕疵检测】基于matlab GUI OTSU织物疵点检测【含Matlab源码 860期】
⛳️座右铭:行百里者,半于九十。 更多Matlab图像处理仿真内容点击👇 ①Matlab图像处理(进阶版ÿ
微信公众号文章信息(阅读量、在看、点赞数)获取
  实现这一个功能主要用到了selenium、mitmproxy和wechatarticles,利用selenium可以实现脚本模拟浏览器访问,mit
上海九院口腔科怎么样?医生排名名单、技术特长介绍、真人种牙术后评价~
此价格信息为当地市场参考价,通过用户反馈大数据整理仅供参考!机构实际价格以到院面诊为准!
'智能AI文章生成器:海外脚本与一键创作工具'
在数字化时代的浪潮中人工智能技术正以前所未有的速度改变着咱们的工作和生活途径。智能文章生成器的出现无疑为内容创作者们打开
微信推文重复率
论文免费查重庞大的数据库支持,论文免费查重拥有全球最大的比对库资源。其比对库拥有超过1亿篇的学术期刊和学位论文、1000多家的
相关文章