Hasura GraphQL `hdb_catalog` v1 与 v2
Hasura GraphQL `hdb_catalog` v1 vs v2
我正在使用 Hasura v2 引擎(自托管),它能够连接多个数据库。我希望能够通过为 v2 使用单独的元数据数据库来连接 v2 并保持 v1 与同一数据库的连接。
但在尝试了一下之后我无法做到这一点,因为显然 Hasura v2 仍在连接的数据库上使用 hdb_catalog
以及在元数据数据库上使用 hdb_catalog
。
我看到连接的数据库很少使用 hdb_catalog
v2 vs v1。
v1
v2
有谁知道这是否甚至可以存档到 运行 v1 和 v2 Hasura 引擎连接到同一个数据库,v2 将元数据存储在单独的数据库上,以及 hdb_catalog
在非元数据上的用途是什么v2 的已连接数据库?
谢谢!
Hasura V2 仍然在连接的数据库上使用 hdb_catalog
到 运行 其事件触发系统,因为它依赖于数据库本身定义的数据库触发器来运行。因此,您会看到与事件触发器相关的表仍在连接的数据库的 hdb_catalog
中,而其余元数据存储在元数据数据库的 hdb_catalog
中。话虽如此,Hasura V2 仅在定义事件触发器的情况下使用连接的数据库的 hdb_catalog
,否则它根本不与之交互,从而允许 Hasura V1 实例与同一数据库一起工作。
总而言之,从 Hasura v2.1.0 (撰写本文时的最新 Hasura 版本) 可以 运行 Hasura V2 实例(有自己的专用元数据数据库)和一个 Hasura V1 实例都连接到同一个数据库 仅当 Hasura V2 实例没有配置事件触发器时。
有几件事我要提一下:
- 如果将 v2 连接到已连接 v1 的数据库,v2 将升级 hdb_version,这将阻止 v1 启动。 运行 v1 版本仍会出现一堆控制台错误,主要是由于事件日志表被更改。
- V2 正在更改事件日志表的结构,因此它可能与 v1 不兼容。
- 如果将 v1 连接到具有 v2 连接的数据库,由于上述事件日志表不兼容,它将无法启动。
所以总的来说,虽然将 v1 和 v2 连接到同一个数据库在技术上是“可能的”,但存在很多缺点,这使得除了纯粹的好奇探索之外这个解决方案不可行。
但不代表以后不会改变。
希望对您有所帮助。
我正在使用 Hasura v2 引擎(自托管),它能够连接多个数据库。我希望能够通过为 v2 使用单独的元数据数据库来连接 v2 并保持 v1 与同一数据库的连接。
但在尝试了一下之后我无法做到这一点,因为显然 Hasura v2 仍在连接的数据库上使用 hdb_catalog
以及在元数据数据库上使用 hdb_catalog
。
我看到连接的数据库很少使用 hdb_catalog
v2 vs v1。
v1
v2
有谁知道这是否甚至可以存档到 运行 v1 和 v2 Hasura 引擎连接到同一个数据库,v2 将元数据存储在单独的数据库上,以及 hdb_catalog
在非元数据上的用途是什么v2 的已连接数据库?
谢谢!
Hasura V2 仍然在连接的数据库上使用 hdb_catalog
到 运行 其事件触发系统,因为它依赖于数据库本身定义的数据库触发器来运行。因此,您会看到与事件触发器相关的表仍在连接的数据库的 hdb_catalog
中,而其余元数据存储在元数据数据库的 hdb_catalog
中。话虽如此,Hasura V2 仅在定义事件触发器的情况下使用连接的数据库的 hdb_catalog
,否则它根本不与之交互,从而允许 Hasura V1 实例与同一数据库一起工作。
总而言之,从 Hasura v2.1.0 (撰写本文时的最新 Hasura 版本) 可以 运行 Hasura V2 实例(有自己的专用元数据数据库)和一个 Hasura V1 实例都连接到同一个数据库 仅当 Hasura V2 实例没有配置事件触发器时。
有几件事我要提一下:
- 如果将 v2 连接到已连接 v1 的数据库,v2 将升级 hdb_version,这将阻止 v1 启动。 运行 v1 版本仍会出现一堆控制台错误,主要是由于事件日志表被更改。
- V2 正在更改事件日志表的结构,因此它可能与 v1 不兼容。
- 如果将 v1 连接到具有 v2 连接的数据库,由于上述事件日志表不兼容,它将无法启动。
所以总的来说,虽然将 v1 和 v2 连接到同一个数据库在技术上是“可能的”,但存在很多缺点,这使得除了纯粹的好奇探索之外这个解决方案不可行。
但不代表以后不会改变。
希望对您有所帮助。