27 KiB
27 KiB
因收到Google相关通知,网站将会择期关闭。相关通知内容
20 改写引擎:如何理解装饰器模式下的 SQL 改写实现机制?
回想在“17 | 路由引擎:如何理解分片路由核心类 ShardingRouter 的运作机制?”课时中,我们在 BaseShardingEngine 的 Shard 方法中看到了 ShardingSphere 中另一个重要的概念,即 SQL 改写(Rewrite)。
SQL 改写在分库分表框架中通常位于路由之后,也是整个 SQL 执行流程中的重要环节,因为开发人员是面向逻辑库与逻辑表所书写的 SQL,并不能够直接在真实的数据库中执行,SQL 改写,用于将逻辑 SQL 改写为在真实数据库中可以正确执行的 SQL。
事实上,我们已经在前面的案例中看到了 SQL 改写的应用场景,这个场景就是分布式主键的自动生成过程。在关系型数据库中,自增主键是常见的功能特性,而对于 ShardingSphere 而言,这也是 SQL 改写的典型应用场景。
今天,我们就将基于自增主键这一场景来探讨 ShardingSphere 中 SQL 改写的实现过程。
ShardingSphere 改写引擎基本结构
让我们先来看一下 BaseShardingEngine 中,用于执行改写逻辑的 rewriteAndConvert 方法:
private Collection rewriteAndConvert(final String sql, final List