当前位置:网站首页>Apache ShardingSphere 5.1.2 发布|全新驱动 API + 云原生部署,打造高性能数据网关...
Apache ShardingSphere 5.1.2 发布|全新驱动 API + 云原生部署,打造高性能数据网关...
2022-08-02 14:14:00 【[email prote】
在 Apache ShardingSphere 5.1.1 发布后,ShardingSphere 合并了来自全球的团队或个人的累计 1028 个 PR,为大家带来 5.1.2 新版本。该版本在功能、性能、测试、文档、示例等方面均有不少优化。
值得一提的是,本次更新带来了以下全新功能:
ShardingSphere-Proxy Helm Chart
SQL 方言翻译
以 Driver 形式使用 ShardingSphere-JDBC
这些全新的能力让 ShardingSphere 的数据网关能力得到了质的提升,助力 ShardingSphere 在云上部署,优化用户体验。
除了上述新功能,本次更新大量提升了 SQL 解析支持度,内核、运行模式、弹性伸缩都完善了对 PostgreSQL / openGauss schema 的支持,弹性伸缩、事务、DistSQL 在健壮性与用户体验方面也有不少提升。
本篇将给大家介绍 ShardingSphere 5.1.2 版本更新内容。
新功能介绍
- 使用 Helm 部署 ShardingSphere-Proxy
ShardingSphere-Proxy 提供了 Docker 镜像以便于用户容器化部署。不过,对于需要在 Kubernetes 部署 ShardingSphere-Proxy 的用户,还需要自行处理数据库驱动挂载、配置挂载、自定义算法挂载等必要步骤,部署过程相对繁琐,运维成本相对较高。
ShardingSphere 本次更新带来了全新的 ShardingSphere-Proxy Helm Chart。这项新功能由企业级、云原生数据增强计算产品及解决方案提供商 SphereEx 向 Apache ShardingSphere 社区捐赠,推动 Apache ShardingSphere 在云原生方向前进。
ShardingSphere 在集群模式下依赖注册中心存储元数据,ShardingSphere-Proxy 的 Helm Chart 能够自动部署 ZooKeeper 集群,帮助用户快速搭建 ShardingSphere-Proxy 集群。
受限于开源协议,ShardingSphere-Proxy 的二进制发布包、Docker 镜像受限于开源协议,无法打包 MySQL JDBC 驱动,用户需要手动添加 MySQL JDBC 驱动到 classpath 才能使用 MySQL 作为 ShardingSphere 的存储节点。对于这类情况,ShardingSphere-Proxy Helm Chart 能够在 Pod 的 Init 容器自动获取 MySQL JDBC 驱动,降低了用户的部署操作成本。
- 全新 SQL 方言翻译能力
随着数据库碎片化趋势的不可逆转,多种类型数据库的共存已渐成常态。使用一种 SQL 方言访问异构数据库的场景在不断增加。
多样化的数据库的存在,使访问数据库的 SQL 方言难于标准化,工程师需要针对不同种类的数据库使用不同的方言,缺乏统一化的查询平台。
将不同类型的数据库方言自动翻译为后端数据库所使用的方言,让工程师可以使用任意一种数据库方言访问所有的后端异构数据库,可以极大地降低开发和维护成本。
Apache ShardingSphere 5.1.2 在打造极具生产力的数据网关的路途中迈出了重要的一步。本次更新带来了全新的 SQL 方言翻译能力,能够支持主流开源数据库之间的方言转换。例如,用户可以使用 MySQL 客户端连接 ShardingSphere-Proxy 并发送基于 MySQL 方言的 SQL,ShardingSphere 能自动识别用户协议与存储节点类型,自动完成 SQL 方言转换,访问 PostgreSQL 等异构存储节点,反之亦然。
- 以 Driver 的形式使用 ShardingSphere-JDBC
在过去的 ShardingSphere 版本中,ShardingSphere-JDBC 以 DataSource 的形式向用户提供服务。对于不使用 DataSource 的项目或工具,需要进行改造才能引入 ShardingSphere-JDBC,增加了用户的使用成本。
在 Apache ShardingSphere 5.1.2 中,ShardingSphere-JDBC 实现了标准的 JDBC Driver 接口,用户可以通过 Driver 的形式引入 ShardingSphere-JDBC。
用户可以直接通过 DriverManager 获取 Connection:
Class.forName("org.apache.shardingsphere.driver.ShardingSphereDriver");
Connection conn = DriverManager.getConnection("jdbc:shardingsphere:classpath:config.yaml");
也可以使用 DataSource 获取 Connection:
// 以 HikariCP 为例
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName("org.apache.shardingsphere.driver.ShardingSphereDriver");
dataSource.setJdbcUrl("jdbc:shardingsphere:classpath:config.yaml");
Connection conn = dataSource.getConnection();
对已有能力的提升
内核
本次更新,ShardingSphere 合并了大量提升 SQL 解析支持度的 PR,在更新日志中可见 SQL 解析的优化项占了较大篇幅。
ShardingSphere 在 5.1.1 对 PostgreSQL / openGauss 的 schema 提供了初步支持,在本次 5.1.2 更新,内核、集群模式、弹性伸缩对 PostgreSQL / openGauss 的 schema 的支持度也有所提升,例如元数据对增加了对 schema 结构的支持,内核、弹性伸缩支持自定义 schema。
ShardingSphere-Proxy
随着使用 ARM 架构 CPU 的服务器市场渐成气候,ShardingSphere-Proxy 在 Docker 方面也提供了适用于 arm64 架构的镜像。
在 MySQL 方面,ShardingSphere-Proxy 修复了无法接收长度超过 8 MB 数据包的问题,并支持接收总长度超过 16 MB 的数据。
弹性伸缩
弹性伸缩在除了支持 PostgreSQL 自定义 schema 外,也实现了迁移 PostgreSQL 时自动建表的功能,并修复了 PostgreSQL 增量迁移遇到 null
字段值会报错的问题。除功能方面,弹性伸缩还减少了迁移过程中的资源占用,以及对 openGauss 3.0 增量迁移提供了支持。
欢迎大家使用或升级 ShardingSphere 5.1.2,ShardingSphere 社区期待您的反馈!
更新日志
以下为 ShardingSphere 5.1.2 的全部更新日志。需要注意的是,本次更新调整了少量 API,调整项请参考本文更新日志的 API 调整部分。
新特性
内核:支持 MySQL 和 PostgreSQL 的 SQL 方言转换的 alpha 版本
内核:支持 PostgreSQL 和 openGauss 自定义 schema
内核:支持 PostgreSQL 和 openGauss create/alter/drop view 语句
内核:支持 openGauss cursor 语句
内核:支持使用自定义系统库
内核:支持获取 openGauss 和 MySQL 的创建表语句
内核:支持获取 PostgreSQL 的创建表语句
接入端:正式支持使用 Helm 在 Kubernetes 中快速部署一个包含 ZooKeeper 集群的 ShardingSphere-Proxy 集群
接入端:支持 ShardingSphere JDBC Driver
弹性伸缩:支持 PostgreSQL 自动建表
弹性伸缩:支持 PostgreSQL 和 openGauss 自定义 schema 的表迁移
弹性伸缩:支持字符串主键表迁移
运行模式:治理中心支持 PG/openGauss 三级结构
运行模式:治理中心支持 Database 级别的分布式锁
优化
内核:支持 PostgreSQL 和 openGauss copy 语句
内核:支持 PostgreSQL 的 alter/ drop index 语句
内核:支持 MySQL update force index 语句
内核:支持 openGauss create/alter/drop schema 语句
内核:优化 RoundRobinReplicaLoadBalanceAlgorithm 和 RoundRobinTrafficLoadBalanceAlgorithm 算法逻辑
内核:优化在前端驱动数据库类型和后端不一致时元数据加载逻辑
内核:重构元数据加载逻辑
内核:show processlist 语句功能性能优化
内核:提升大量表场景下的加载性能
内核:支持 comment 语句的执行
内核:支持 PostgreSQL 和 openGauss 分片场景下的 view 语句的执行
内核:支持 ORACLE 的 CREATE ROLLBACK SEGMENT 语句
内核:支持解析 openGauss DROP TYPE
内核:支持解析 openGauss ALTER TYPE
内核:支持解析 Oracle DROP DISKGROUP
内核:支持解析 Oracle CREATE DISKGROUP
内核:支持解析 Oracle DROP FLASHBACK ARCHIVE
内核:支持解析 openGauss CHECKPOINT
内核:支持解析 Oracle CREATE FLASHBACK ARCHIVE
内核:支持解析 PostgreSQL Close
内核:支持解析 openGauss DROP CAST
内核:支持解析 openGauss CREATE CAST
内核:支持解析 Oracle CREATE CONTROL FILE
内核:支持解析 openGauss DROP DIRECTORY
内核:支持解析 openGauss ALTER DIRECTORY
内核:支持解析 openGauss CREATE DIRECTORY
内核:支持解析 PostgreSQL Checkpoint
内核:支持解析 openGauss DROP SYNONYM
内核:支持解析 openGauss CREATE SYNONYM
内核:支持解析 openGauss ALTER SYNONYM
内核:支持解析 PostgreSQL CALL Statement
内核:支持解析 Oracle CREATE PFILE
内核:支持解析 Oracle CREATE SPFILE
内核:支持解析 Oracle ALTER SEQUENCE
内核:支持解析 Oracle CREATE CONTEXT
内核:支持解析 Oracle ALTER PACKAGE
内核:支持解析 Oracle CREATE SEQUENCE
内核:支持解析 Oracle ALTER ATTRIBUTE DIMENSION
内核:支持解析 Oracle ALTER ANALYTIC VIEW
内核:使用 ShardingSphere Spi 加载 SQLVisitorFacade
内核:使用 ShardingSphere Spi 加载 DatabaseTypedSQLParserFacade
内核:支持解析 Oracle ALTER OUTLINE
内核:支持解析 Oracle DROP OUTLINE
内核:支持解析 Oracle drop edition
内核:支持解析 SQLServer WITH Common Table Expression
内核:优化 SubquerySegment 在 with 语句中的开始和结束索引
内核:重构 JoinTableSegment
内核:支持解析 Oracle DROP SYNONYM
内核:支持解析 Oracle CREATE DIRECTORY
内核:支持解析 Oracle CREATE SYNONYM
内核:支持解析 SQLServer XmlNamespaces Clause
内核:支持解析 Oracle Alter Database Dictionary
内核:支持解析 SQLServer Clause of SELECT Statement
内核:支持解析 Oracle ALTER DATABASE LINK
内核:支持解析 Oracle CREATE EDITION
内核:支持解析 Oracle ALTER TRIGGER
内核:支持解析 SQLServer REVERT Statement
内核:支持解析 PostgreSQL DROP TEXT SEARCH
内核:支持解析 PostgreSQL drop server
内核:支持解析 Oracle ALTER VIEW
内核:支持解析 PostgreSQL drop access method
内核:支持解析 PostgreSQL DROP ROUTINE
内核:支持解析 SQLServer DROP USER
内核:支持解析 Oracle DROP TRIGGER
内核:支持解析 PostgreSQL Drop subscription
内核:支持解析 PostgreSQL drop operator class
内核:支持解析 PostgreSQL DROP PUBLICATION
内核:支持解析 Oracle DROP VIEW
内核:支持解析 PostgreSQL DROP TRIGGER
内核:支持解析 Oracle DROP DIRECTORY
内核:支持解析 PostgreSQL DROP STATISTICS
内核:支持解析 PostgreSQL drop type
内核:支持解析 PostgreSQL DROP RULE
内核:支持解析 SQLServer ALTER LOGIN
内核:支持解析 PostgreSQL DROP FOREIGN DATA WRAPPER
内核:支持解析 PostgreSQL DROP EVENT TRIGGER statement
接入端:ShardingSphere-Proxy MySQL 支持接收长度超过 16 MB 的请求数据包
接入端:ShardingSphere-Proxy 增加 SO_BACKLOG 配置项
接入端:ShardingSphere-Proxy 默认启用 SO_REUSEADDR
接入端:ShardingSphere-Proxy Docker image 增加 aarch64 支持
接入端:ShardingSphere-Proxy MySQL 支持配置默认 MySQL 版本号
接入端:ShardingSphere-Proxy PostgreSQL / openGauss 支持更多字符集
接入端:ShardingSphere-Proxy 增加默认端口配置项
弹性伸缩:openGauss 3.0 启用 thread_pool 时,Scaling 兼容 HA port 进行数据同步
弹性伸缩:优化 PipelineJobExecutor 中 Zookeeper 事件处理的逻辑,避免 zk 阻塞事件
弹性伸缩:Scaling 数据同步不区分表名大小写
弹性伸缩:改进 PostgreSQL/openGauss 复制槽清理
弹性伸缩:改进准备阶段锁保护
弹性伸缩:改进 PostgreSQL 同一记录删除后重建场景下的数据同步
弹性伸缩:Scaling 创建的数据源在底层不缓存
弹性伸缩:尽量复用数据源,减少数据库连接占用
DistSQL:REFRESH TABLE METADATA 支持指定 PostgreSQL’s schema
DistSQL:ALTER SHARDING TABLE RULE 时增加对绑定表的校验
运行模式:ShardingSphere-JDBC 支持配置数据库连接名
分布式事务:事务中禁止执行 DistSQL
分布式事务:autocommit = 0, DDL 部分 DML 会自动开启事务
问题修复
内核:修复 PostgreSQL 和 openGauss show 语句解析异常
内核:修复 PostgreSQL 和 openGauss time extract function 解析异常
内核:修复 PostgreSQL 和 openGauss select mod fucntion 解析异常
内核:修复读写分离场景下多 schema join 语句的执行异常
内核:修复加密场景下执行 create schema 语句的路由异常
内核:修复 drop schema if exist 语句的异常
内核:修复执行 LAST_INSERT_ID() 路由错误
内核:修复 use database 在无数据源状态下执行异常的问题
内核:修复带有 set var 的 fucntion 创建语句
接入端:修复 ShardingSphere-Proxy PostgreSQL / openGauss Desc
ribe PreparedStatement 因字段大小写不匹配导致的空指针接入端:修复 ShardingSphere-Proxy PostgreSQL / openGauss 执行 schema DDL 后没有返回正确 tag 的问题
弹性伸缩:修复 MySQL unsigned 类型在 Scaling 过程中出错
弹性伸缩:修复一致性检查创建数据源失败时产生连接泄漏的问题
弹性伸缩:修复 ShardingSphereDataSource 初始化忽略分片以外规则的问题
弹性伸缩:支持 job 在准备阶段被关闭
弹性伸缩:修复数据源 url 和 jdbcurl 兼容性问题
弹性伸缩:修复 openGauss 数据复制槽创建时机问题,避免可能的增量数据丢失
弹性伸缩:改进 job 状态持久化,确保特殊情况下不会被覆盖为老状态
弹性伸缩:修复 PostgreSQL 使用 TestDecoder 进行增量迁移时无法正确解析
null
DistSQL:修复单机和内存模式下,SET VARIABLE 修改不生效的问题
DistSQL:修复 SHOW INSTANCE LIST 与实际数据不一致的问题
DistSQL:修复分片规则大小写敏感的问题
运行模式:修复 Scaling 功能更改分表规则后新版本元数据丢失数据
分布式事务:修复根据 catalog 获取 indexinfo 为空问题
重构
弹性伸缩:重构 jobConfig,方便新类型 job 复用及扩展
运行模式:优化注册中心计算节点存储结构
运行模式:使用 uuid 替代 [email protected] 作为实例唯一标识
API 调整
DistSQL:EXPORT SCHEMA CONFIG 调整为 EXPORT DATABASE CONFIG
DistSQL:IMPORT SCHEMA CONFIG 调整为 IMPORT DATABASE CONFIG
运行模式:调整 db-discovery 算法配置
DistSQL:SHOW SCHEMA RESOURCES 调整为 SHOW DATABASE RESOURCES
DistSQL:COUNT SCHEMA RULES 调整为 COUNT DATABASE RULES
权限:权限提供者
ALL_PRIVILEGES_PERMITTED
更新为ALL_PERMITTED
权限:权限提供者
SCHEMA_PRIVILEGES_PERMITTED
更新为DATABASE_PERMITTED
相关链接
下载链接:
https://shardingsphere.apache.org/document/current/cn/downloads/
更新日志:
https://github.com/apache/shardingsphere/blob/master/RELEASE-NOTES.md
项目地址:
https://shardingsphere.apache.org/
社区建设
此次 Apache ShardingSphere 5.1.2 版本的发布,共有 54 位 Contributor 提交了 1028 个 PR,感谢社区伙伴们的大力支持。
作者
吴伟杰,SphereEx 基础设施研发工程师,Apache ShardingSphere PMC。专注于 Apache ShardingSphere 接入端及 ShardingSphere 子项目 ElasticJob 的研发。
欢迎点击链接,了解更多内容:
Apache ShardingSphere 官网:https://shardingsphere.apache.org/
Apache ShardingSphere GitHub 地址:https://github.com/apache/shardingsphere
版权声明
本文为[[email protected]]所创,转载请带上原文链接,感谢
https://blog.csdn.net/wu_weijie/article/details/125479338
边栏推荐
猜你喜欢
随机推荐
线性结构,顺序结构
Unity-PlayMaker
你的站点可能还没有准备好用于Site KitSite Kit 无法访问 WordPress REST API。请确保其已在您的站点上启用。
Detailed introduction to the hierarchical method of binary tree creation
如何编辑VirtualLab Fusion结果的格式
我的2021回忆录
MySQL协议长什么样子
在mininet中测试arp欺骗
Unity Line-Renderer
TCP的三次握手和四次挥手
内存和硬盘、磁盘的区别
Qt | 显示网络图片 QNetworkAccessManager
【进程间通信】消息队列
2342. 数位和相等数对的最大和 哈希优化
【线程安全】用户级,内核级,组合级线程|线程同步的处理(条件变量)|strtok_r(可冲入函数)
数学工具-desmos 图形曲线
创建系统还原点及恢复
指针/【类型】对指针加一能力的影响(&*ip ,*&ipd)
MATLAB drawing command fimplicit detailed introduction to drawing implicit function graphics
深入理解Mysql索引底层数据结构与算法