【问题标题】:Hasura GraphQL `hdb_catalog` v1 vs v2Hasura GraphQL `hdb_catalog` v1 vs v2
【发布时间】:2021-12-28 19:04:09
【问题描述】:

我正在使用 Hasura v2 引擎(自托管),它能够连接多个数据库。我希望能够通过为 v2 使用单独的元数据 DB 来连接 v2 并保持 v1 与同一个 DB 的连接。

但经过一番尝试后,我无法做到这一点,因为 Hasura v2 显然仍在连接的数据库上使用 hdb_catalog 以及元数据数据库上的 hdb_catalog

我发现连接的 DB hdb_catalog v2 vs v1 的使用最少。

v1

v2

有谁知道这是否可以归档以运行连接到同一个数据库的 v1 和 v2 Hasura 引擎,而 v2 将元数据存储在单独的数据库上,以及在 v2 的非元数据连接的数据库上 hdb_catalog 的用途是什么?

谢谢!

【问题讨论】:

    标签: graphql hasura


    【解决方案1】:

    Hasura V2 仍然使用连接的 DB 上的 hdb_catalog 来运行其事件触发系统,因为它依赖于在 DB 本身上定义的数据库触发器来运行。因此,您看到的与事件触发器相关的表仍在连接数据库的hdb_catalog 中,而其余元数据存储在元数据数据库的hdb_catalog 中。话虽如此,Hasura V2 仅在定义事件触发器或根本不与之交互的情况下使用连接 DB 的 hdb_catalog,从而允许 Hasura V1 实例与同一个 DB 一起工作。

    总而言之,从 Hasura v2.1.0 (撰写本文时的最新 Hasura 版本)开始,可以同时运行 Hasura V2 实例(具有自己的专用元数据数据库) Hasura V1 实例都连接到同一个数据库仅当 Hasura V2 实例没有配置事件触发器。

    【讨论】:

    • 谢谢@Rikin,这证实了我的想法。
    【解决方案2】:

    我应该提到的几件事:

    • 如果您将 v2 连接到已连接 v1 的 db,v2 将升级 hdb_version,这将阻止 v1 启动。运行版本的 v1 仍然会出现一堆控制台错误,这主要是由于事件日志表被更改。
    • V2 正在更改事件日志表的结构,因此它可能与 v1 不兼容。
    • 如果您将 v1 连接到具有 v2 连接的 db,则由于上述事件日志表不兼容,它将无法启动。

    所以总的来说,虽然将 v1 和 v2 连接到同一个数据库在技术上是“可能的”,但除了纯粹的好奇心探索之外,还有很多缺点使得这种解决方案不可行。

    但不代表以后不会变。

    希望这有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-22
      • 2010-12-07
      • 2019-07-25
      • 1970-01-01
      相关资源
      最近更新 更多