learn-tech/专栏/ShardingSphere核心原理精讲-完/20改写引擎:如何理解装饰器模式下的SQL改写实现机制?.md
2024-10-16 06:37:41 +08:00

27 KiB
Raw Blame History

                        因收到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