Hasura v1与v2共用业务库可行性及非元数据库hdb_catalog作用咨询
问题1:Hasura v1与v2同时对接同一业务数据库的可行性
默认配置下无法直接实现,原因是两个版本默认都会在业务数据库中创建名为hdb_catalog的系统Schema,结构存在细微差异会互相覆盖、引发运行异常。
可通过以下两种方案实现共存:
- 若仅需在v2中使用查询能力,可将v2对接的业务数据源设置为只读源(read_only_source),配置后v2不会在业务库中创建任何系统Schema,完全依赖独立元数据库存储配置,此时v2不支持事件触发、数据突变等写入类功能。
- 若需v2使用完整能力,可在对接业务数据源时为v2指定自定义的系统Schema名称,比如设置为
hdb_catalog_v2,与v1默认的hdb_catalog完全隔离,两个版本的系统Schema互不干扰即可同时运行。
问题2:Hasura v2在业务库中创建hdb_catalog的作用
该Schema存储与当前对接数据源绑定的专属配置与运行时数据,和全局元数据数据库的存储内容完全分开,核心作用包括:
- 存储数据源专属的功能配置:包括该数据源下的事件触发器规则、Cron任务配置、表级权限的关联规则等
- 运行时状态持久化:事件触发的执行队列、重试记录、订阅状态、异步任务日志等数据都存储在该Schema中,避免全局元数据库的读写压力
- 一致性校验:每次Hasura v2启动时会对比全局元数据库的配置与业务库
hdb_catalog的内容,确保数据源的配置没有被外部篡改,保障运行一致性 - 扩展能力支持:数据源级的自定义函数、逻辑视图、远程关联的辅助映射数据都会存储在该位置,提升跨数据源操作的执行效率
附:两个版本hdb_catalog结构对比
- v1版本hdb_catalog结构:

- v2版本hdb_catalog结构:

内容的提问来源于stack exchange,提问作者dmi3y
相关产品推荐
相关产品推荐

