SchemaCrawler是否支持接入自定义弱关联检测逻辑?
SchemaCrawler 自定义弱关联检测实现方案
SchemaCrawler 原生支持通过SPI插件方式接入自定义弱关联检测逻辑,比你提到的两种替代方案效率高很多:不用手动维护数千条yaml配置,也不需要额外跑预生成脚本的流程,性能和内置检测能力持平。
核心扩展方式
直接实现SchemaCrawler提供的WeakAssociationProvider SPI接口即可,自定义逻辑会在SchemaCrawler加载表元数据的原生流程中被直接调用,没有额外的IO或进程间开销。
你需要的两类关联规则可以直接在这个扩展实现里落地:
- 针对任意表
tablename_id列映射同库tablename.id的数千条通用规则:在扩展逻辑里先遍历已加载的全量表元数据,缓存所有带id主键的表名与主键列引用,再逐表扫描列名符合<目标表名>_id格式的字段,直接构造对应弱关联对象即可,整个过程在内存中完成,数千条关联的识别耗时在毫秒级。 - 针对yml中预定义的10-20条特殊规则:在自定义Provider类的初始化阶段直接读取你的本地yml配置文件,解析配置中定义的表、列映射关系,和上述自动识别的关联结果合并后统一返回即可。
CLI 接入方式
将你编写完成的扩展实现打包为jar包,直接放入SchemaCrawler CLI程序目录下的lib文件夹中,启动时SchemaCrawler会通过SPI机制自动加载你的自定义弱关联逻辑。你可以通过启动参数关闭内置的弱关联检测,避免默认规则产生的错误关联干扰最终结果。
注意:构造弱关联对象时建议明确标注多对一的关联基数(
xxx_id侧为多,主表id侧为一),生成的数据库关系图连线方向会更准确,不会出现关联反向的问题。
内容的提问来源于stack exchange,提问作者Sai Phaninder Reddy J
相关产品推荐
相关产品推荐

