Apache ShardingSphere 是一个强大的分布式数据库,最近发布了一个重大更新,以优化和增强其功能、性能、测试、文档和示例。简而言之,该项目继续努力开发,以便您更轻松地管理组织的数据。
1. 用于数据分片的 SQL 审计
问题:当用户在大型数据分片场景中执行 SQL 查询而没有分片功能时,SQL 查询将路由到底层数据库执行。因此,会占用大量数据库连接,业务会受到超时或其他问题的严重影响。更糟糕的是,如果用户执行 UPDATE/DELETE 操作,则可能会错误地更新或删除大量数据。
ShardingSphere 的解决方案:从 5.2.0 版本开始,ShardingSphere 提供了用于数据分片的 SQL 审计功能,并允许用户配置审计策略。该策略指定了多种审计算法,用户可以决定是否应禁用审计规则。如果任何审计算法未能通过,则严格禁止 SQL 执行。
以下是用于数据分片的 SQL 审计的配置
rules:
- !SHARDING
tables:
t_order:
actualDataNodes: ds_${0..1}.t_order_${0..1}
tableStrategy:
standard:
shardingColumn: order_id
shardingAlgorithmName: t_order_inline
auditStrategy:
auditorNames:
- sharding_key_required_auditor
allowHintDisable: true
defaultAuditStrategy:
auditorNames:
- sharding_key_required_auditor
allowHintDisable: true auditors:
sharding_key_required_auditor:
type: DML_SHARDING_CONDITIONS
考虑到复杂的业务场景,这项新功能允许您使用 SQL 提示动态禁用审计算法,以便可以执行部分业务 SQL 操作。
ShardingSphere 具有内置的 DML 禁用全路由审计 算法。您还可以实现 ShardingAuditAlgorithm 接口以获得高级 SQL 审计功能
/* ShardingSphere hint: disableAuditNames=sharding_key_required_auditor */ SELECT * FROM t_order;
2. SQL 执行过程管理
ShardingSphere MySQL 数据库提供了 SHOW PROCESSLIST 语句,允许您查看当前正在运行的线程。您可以使用 KILL 语句终止执行时间过长的 SQL 线程。

(Duan Zhengqiang,CC BY-SA 4.0)
SHOW PROCESSLIST 和 KILL 语句广泛用于日常操作和维护管理。为了增强您管理 ShardingSphere 的能力,5.2.0 版本支持 MySQL SHOW PROCESSLIST 和 KILL 语句。当您通过 ShardingSphere 执行 DDL/DML 语句时,ShardingSphere 会自动生成唯一的 UUID 标识符,并将 SQL 执行信息存储在每个实例中。
当您执行 SHOW PROCESSLIST 语句时,ShardingSphere 会根据当前运行模式处理 SQL 执行信息。
如果当前模式为集群模式,ShardingSphere 会通过治理中心收集和同步每个计算节点的 SQL 执行信息,然后将摘要返回给用户。如果当前模式为独立模式,则 ShardingSphere 仅返回当前计算节点中的 SQL 执行信息。
您可以根据 SHOW PROCESSLIST 返回的结果确定是否执行 KILL 语句,ShardingSphere 会根据 KILL 语句中的 ID 取消正在执行的 SQL。
3. Shardingsphere-on-cloud
Shardingsphere-on-cloud 是 Apache ShardingSphere 的一个项目,提供面向云的解决方案。0.1.0 版本已发布,并已正式投票成为 Apache ShardingSphere 的子项目。
Shardinsphere-on-cloud 将继续发布用于云上 ShardingSphere 的配置模板、部署脚本和其他自动化工具。
它还将完善高可用性、数据迁移、可观察性、影子数据库、安全性以及审计方面的工程实践,优化 Helm Charts 的交付模式,并通过 Kubernetes Operator 继续增强其云原生管理能力。项目仓库中已经有入门问题,以帮助那些对快速启动并运行 Go、数据库和云感兴趣的人。
4. 访问端口
在 5.2.0 版本中,ShardingSphere-Proxy 可以监视指定的 IP 地址,并默认集成 openGauss 数据库驱动程序。ShardingSphere-JDBC 支持 c3p0 数据源,并且 Connection.prepareStatement 可以指定列。
5. 分布式事务
最初的逻辑数据库级事务管理器已调整为全局管理器,支持跨多个逻辑数据库的分布式事务。XA 事务现在由 ShardingSphere 自动管理,这消除了 XA 语句控制分布式事务的能力。
使用 ShardingSphere 进行分布式数据处理
ShardingSphere 支持多种数据库,并且每次改进都为您减轻了更多工作负担。shardingsphere-on-cloud 子项目的建立表明了 ShardingSphere 致力于成为云原生的决心。更庞大的 ShardingSphere 社区欢迎任何对 Go、数据库和云感兴趣的人加入 shardingsphere-on-cloud 子项目!
本文最初发表于 Medium.com,并已获得许可转载。
评论已关闭。