首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将来自jsonb的Postgres FK与Hasura一起使用?

将来自jsonb的Postgres FK与Hasura一起使用是可能的。Hasura是一个开源的自动化GraphQL引擎,它允许快速构建和部署现代应用程序的后端。它与PostgreSQL数据库紧密集成,并提供了强大的实时数据订阅和高性能的查询功能。

当使用PostgreSQL作为数据库引擎时,可以在jsonb列中存储复杂的JSON数据。Hasura支持通过PostgreSQL的外键(FK)功能在jsonb列中创建引用。这样,可以在jsonb列中定义引用的关系,并确保数据的完整性。

使用Hasura,您可以通过以下步骤将来自jsonb的Postgres FK与Hasura一起使用:

  1. 创建数据库表:首先,您需要使用PostgreSQL命令或其他工具创建包含jsonb列的表。例如:
  2. 创建数据库表:首先,您需要使用PostgreSQL命令或其他工具创建包含jsonb列的表。例如:
  3. 添加外键约束:使用PostgreSQL的ALTER TABLE语句,您可以为jsonb列添加外键约束。例如:
  4. 添加外键约束:使用PostgreSQL的ALTER TABLE语句,您可以为jsonb列添加外键约束。例如:
  5. 这里,我们将jsonb列details中的id字段与other_table表中的id字段关联起来。
  6. 使用Hasura定义关系:启动Hasura服务后,您可以使用Hasura的管理界面或Hasura CLI定义jsonb列的关系。您可以指定外键关系,并指定参考表和字段。例如,在Hasura管理界面的“Data”选项卡中,创建一个新的关系,并指定参考表、参考列和引用列。
  7. 使用Hasura查询和订阅:一旦定义了关系,您可以使用Hasura的GraphQL查询和订阅功能进行数据访问。Hasura会自动生成GraphQL模式,并提供API端点供应用程序使用。您可以编写GraphQL查询和订阅来检索和订阅与jsonb列中的外键关联的数据。
  8. 例如,对于上面的示例,您可以使用以下GraphQL查询来检索用户及其关联的其他表数据:
  9. 例如,对于上面的示例,您可以使用以下GraphQL查询来检索用户及其关联的其他表数据:
  10. 这将返回用户的详细信息以及与jsonb列中的外键关联的其他表的数据。

推荐的腾讯云产品:腾讯云数据库PostgreSQL和腾讯云Hasura云托管服务。腾讯云数据库PostgreSQL提供了高性能、高可用的托管PostgreSQL数据库服务,并与Hasura无缝集成。腾讯云Hasura云托管服务提供了一键式的Hasura服务部署和管理,让您可以轻松地将Hasura与PostgreSQL数据库一起使用。

腾讯云数据库PostgreSQL产品介绍链接地址:https://cloud.tencent.com/product/postgres 腾讯云Hasura云托管服务产品介绍链接地址:https://cloud.tencent.com/product/hasura

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在 Kubernetes 上快速测试 Citus 分布式 PostgreSQL 集群(分布式表,共置,引用表,列存储)

event_id) ); -- 事件表分布在本地或工作节点上分片上 SELECT create_distributed_table('events', 'device_id'); 执行此操作后,...默认情况下,分布式表根据分布列类型位于同一位置,但您可以使用 create_distributed_table 中 colocate_with 参数显式定义同一位置。...key, device_name text, device_type_id int ); CREATE INDEX ON devices (device_type_id); -- 将设备表事件表放在一起...压缩了几十倍,效果非常惊人,大大节省了存储空间。 您可以单独使用列存储,也可以在分布式表中使用,以结合压缩和分布式查询引擎优势。...但是,您可以使用分区表,其中较新分区使用基于行存储,而较旧分区使用列存储进行压缩。

2.5K20

利用LLM改进SQL查询技术

对象;PostgresJSONB包含操作符@>无法匹配它们。...简明冗长SQL语法 ChatGPT、Copilot Chat和新来者Unblocked给出初始解决方案使用了各种形式利用Postgresjsonb_array_elements函数进行交叉连接来实现这个策略...,但它们都难以阅读和理解 - 即使对我这种使用Postgres JSONB数据类型和jsonb_array_elements等集合返回函数有一定经验的人来说也是如此。...当你把这些(可能是横向)交叉连接组合使用时,你最终会得到一些简明但不透明且难以调试SQL表达式。 我长期主张查询重构为CTE(公共表表达式)管道,每个CTE执行复杂转换中一步。...来自一个随机生成器非常好建议! 我很成功地要求LLM简明查询展开为更易理解简单CTE管道,我强烈建议你也这样使用它们。但是,如果你想走另一条路,目前看来你只能靠自己了。

13710
  • 什么是JSON PATH?

    什么是JSON PATH在一般编程语言中,JSON对象中,深层次对象和属性访问,使用一种链式标识方式,例如对于下面这个对象(来自PG官方技术文档):js 代码解读复制代码{ "track":...但在PostgresSQL语言中,由于语法限制,可能需要使用"->"引用操作符,也是链式访问,如下:sql 代码解读复制代码 with D (data) as (values ('{ "track...在路径字符串中,还可以定义参数,并可以使用在vars对象中值来替换(也就是说path也可以是参数化);silent参数为true时,函数抑制@?...也就是说,这些方法基本功能都是和前面的方法差不多,但如果包括时间相关处理的话,都要考虑时区信息。小结本文讨论了Postgres JSON功能一个扩展性特性,就是JSON Path。...表述了笔者对其理解,应用方式和场合,以及Postgres中,相关操作符和函数,和使用方式等等内容。

    8210

    MySQLPostgreSQL对比

    它支持索引,这意味着你可以不使用指定索引就能查询任何路径。 当我们比较写入数据速度时,由于数据存储方式原因,jsonb会比json稍微慢一点。...FDW提供了一个SQL接口,用于访问远程数据存储中远程大数据对象,使DBA可以整合来自不相关数据源数据,将它们存入Postgres数据库中一个公共模型。...例如,使用FDW for MongoDB,数据库管理员可以查询来自文档数据库数据,并使用SQL将它与来自本地Postgres数据相关联。...借助这种方法,用户可以数据作为行、列或JSON文档进行查看、排序和分组。他们甚至可以直接从Postgres向源文档数据库写入(插入、更细或删除)数据,就像一个一体无缝部署。...而且使用子查询SQL语句使用带条件多表连接相比具有更高程序可读性。几乎任何数据库子查询 (subquery) 性能都比 MySQL 好。

    9K10

    Citus 分布式 PostgreSQL 集群 - SQL Reference(创建和修改分布式表 DDL)

    , repo jsonb, actor jsonb, org jsonb, created_at timestamp ); 接下来,您可以使用 create_distributed_table...在 worker 上创建 shard 副本 coordinator 上表具有相同表 schema、索引和约束定义。创建副本后,此函数所有分布式元数据保存在协调器上。...(在某些情况下,为了减少迁移工作,用户甚至可以选择从租户关联但当前缺少租户 ID 表中创建引用表。) 需要跨多个列唯一约束并且足够小表。...co-location 组提高分片再平衡性能,因为同一组中分片必须一起移动。...删除表 您可以使用标准 PostgreSQL DROP TABLE 命令来删除您分布式表。常规表一样,DROP TABLE 删除目标表存在任何索引、规则、触发器和约束。

    2.8K20

    SQL未来:会话式解决问题

    JSON 函数(如 Postgres jsonb_array_elements,它会将 JSON 列表转换成一组行),并且如果您能够想象这种转换如何连接进行交互,您可以非常简洁地编写强大查询,如示例...在这种情况中,您不仅仅需要 Postgres 知识:您还需要了解 AWS 策略构建方式,然后您需要弄清楚如何使用 Postgres 联合和 JSONB 运算符对其进行查询。...在我对最新 GPT 一次测试中,我想到了 Postgres 惯用法翻译成 SQLite。Postgres 和 SQLite JSON 模式截然不同。...以下是 ChatGPT 解释: json_each:这是 SQLite 中 jsonb_array_elements 等效元素,但它功能略有不同。...它必须在 FROM 子句中使用,并且通常直接从中提取数据表结合使用,因为 SQLite 查询计划程序对于复杂 JSON 操作而言灵活性较低。 这是否完全准确?

    9710

    使用数据库编程在PostgreSQL上构建石头剪刀布游戏

    为了维护正确性,请确保数据库写入仅来自应用程序(包括可能没有审计逻辑旧版本)。其次,为了确保一致性,请确保写入审计表始终写入主实体表在同一个事务中完成。...Hasura 是一款实时 GraphQL 引擎,它可以立即在新或现有的 Postgres 数据库上为您提供 GraphQL API。...数据库模式即代码:数据库代码需要合适工具 回顾一下反对业务逻辑推送到数据库论点,其中许多论点归结为缺乏足够工具和既定策略,将它们现代软件工程实践(如自动化测试、CI/CD 等)集成。...)当前状态(一个空 Postgres)进行比较,并发出一个计划: -- Planned Changes: -- Create enum type "move" CREATE TYPE "move"...然后,使用来自 for_each 用例值执行动态填充 SQL 语句,并验证输出是否符合预期。

    11410

    受不了 Rust 这些问题,我后端切换到了 Go

    该项目是 Hasura 一个简单后端 webhook 服务。你可能不了解 Hasura,那是一个 Postgres 数据库封装器,可以即时提供 GraphQL API。...当需要一些比较复杂逻辑时,它就不那么有效了——为此,Hasura 允许你 GQL 请求映射到自定义 webhook。举例来说,我就是用这种方法进行 S3 文件上传或身份验证。...结构转换为 trait;开心。 心满意足地依赖注入。 使用 mockall crate 自动生成 mock。非常非常开心! 做一个异步 http 调用。 需要用一个特殊宏实现异步 trait。...意识到这个宏无法很好地 Mockall 一起工作。 难过。 事后来看,这个问题是有办法解决。...如果我正在编写本地辅助库、性能敏感代码、任何不需要在容器中运行后端服务……那么,Rust 会是我第一选择。特别是如果我不需要说服其他任何人使用它。

    64510

    Postgres 10 开发者新特性

    这意味着创建分区表变得更简单,并且从开发者角度来看,现在从分区数据表中进行查询和插入在非分区数据表进行这些操作是完全一致。...通过把来自不同列数据关联起来,查询规划器(query planner)现在可以避免一些边缘情况,在那些边缘情况下,之前Postgres版本会认为WHERE语句更强选择性,并且会导致选择了错误计划从而拖慢执行时间...(adsbygoogle = window.adsbygoogle || []).push({}); Postgres 10另一个重要新特性是支持JSON和JSONB类型列全文搜索。...在JSON列上全文索引与其他列是类似的,因此我们查询需要使用to_tsquery函数和to_tsvector函数文本搜索语法。...最重要是,使用Postgres 10时,我们在从一个不同id重启时,不再需要修改序列(alter sequences)了,但是我们可以对这一列进行修改(alter),Postgres就会将这一列识别为一个序列

    1.9K20

    GraphQL REST 双重赋能:Hasura 帮你给数据库添加接口 | 开源日报 No.75

    picture hasura/graphql-engine[1] Stars: 30.3k License: Apache-2.0 picture Hasura GraphQL Engine 是一个开源产品...它具有以下主要功能和核心优势: 内建强大查询:支持过滤、分页、模式搜索等功能 现有数据库兼容:将其指向现有数据库即可立即获得可用 GraphQL API 实时性能:可以使用订阅任何 GraphQL...查询转换为实时查询 合并远程架构:通过单个 GraphQL 引擎端点访问自定义业务逻辑自定义 GraphQL 架构 使用 Actions 扩展功能:编写 REST API 以在 Hasura 模式中添加自定义业务逻辑...此外,该项目还包括触发 Webhooks 或无服务器函数 (基于 Postgres 插入/更新/删除事件)、定期触发器 (根据特定时间点执行自定义业务逻辑) 和细粒度访问控制等其他关键特征。...多渠道搜索:使用两种技术手段寻找每个 CVE 对应 PoCs,一方面根据参考文献中是否存在指向 PoC 网址进行检查;另一方面在 GitHub 上搜索 CVE ID 相关联且提到了漏洞利用代码库。

    51450

    PostgreSQL基础(六):PostgreSQL基本操作(二)

    完整函数介绍可查看下面链接: http://www.postgres.cn/docs/12/functions-string.html二、日期类型在PGSQL中,核心时间类型,就三个。...PGSQL支持JSON类型以及JSONB类型。JSON和JSONB使用基本没区别。...:http://www.postgres.cn/docs/12/functions-json.html六、复合类型复合类型就好像Java中一个对象,Java中有一个User,User和表做了一个映射,...[]);-- 构建表指定数组长度后,并不是说数组内容只有2长度,可以插入更多数据-- 甚至在你插入数据,如果二维数组结构数组扔到一维数组上,也可以存储。...-- 用双引号数组数据包起来~select ('{"how,are"}'::varchar[])[2];-- 如果存储数组中值,有双引号怎么办?-- 如果要添加双引号,记得转义。

    20010

    分布式 PostgreSQL 集群(Citus)官方示例 - 时间序列数据

    数据存储在多个物理表中会加快数据过期速度。在一个大表中,删除行需要扫描以找到要删除行,然后清空空空间。另一方面,删除分区是一种数据大小无关快速操作。...扩展 Citus 上时间序列数据 我们可以单节点表分区技术 Citus 分布式分片相结合,形成一个可扩展时间序列数据库。这是两全其美的。...请注意,Postgres原生分区仍然很新,并且有一些怪癖。对分区表维护操作获取可能会短暂停止查询激进锁。...在这种情况下,我们可以分区列式表存储(在 Citus 10 中引入)结合起来压缩磁盘上历史分区。...在 timestamp key 上使用范围分区时,我们可以最新分区制作成行表,并定期最新分区滚动到另一个历史列式分区中。 让我们看一个例子,再次使用 GitHub 事件。

    2.1K30

    PostgreSQL 14及更高版本改进

    6) 使用postgres_fdw模块,Truncate可以在外表上执行 7) 改进了下标 扩展和内置数据类型可以完成下标。...例如,jsonb可以使用下标: 早期: SELECT jsonb_column->'key' FROM table; UPDATE table SET jsonb_column = jsonb_set(...3) 使用现有统计信息,可以加快有很多表databasevacuum Benchmark显示20000个表,10个autovacuum进程并发执行,可以性能提高三倍以上。...,而是生成一个SELECT计划完成相同单个子计划,然后在其上添加ModifyTable。...性能:性能提升来自于压缩页面的算法优化,我们需要在大更新后使用它 12) 改进了并行顺序扫描 I/O 性能:以组形式块分配给并发进程,从而提升性能。

    7.7K40

    隐藏云 API 细节,SQL 让这一切变简单

    SQL 查询 aws_ec2_instance public_ip_address 列 shodan_host ip 列连接起来。...有了这个 SDK,插件开发者可以精力放在核心任务上,也就是 API 结果映射到数据库表。 这些映射可以是一对一。例如,aws_ec2_instance 表底层 REST API 相匹配。...它工作原理 AWS 一样:调用 API,结果放入 外部数据库表 中,这样你就可以精力放在解决方案逻辑上。 只是此时逻辑略有不同。...->>操作符用于定位它第 0 个元素。JSON 是数据库一等公民,关系型风格和对象风格可以很好地混合在一起。这在返回 JSON 数据 API 映射到数据库表时就非常有用。...插件开发者可以一些 API 数据移到普通列中,另一些移到 JSONB 列中。如何决定哪些数据移到什么类型列中?这需要巧妙地平衡各种关注点,你只需要知道现代 SQL 支持灵活数据建模。

    4.1K30

    我们在未来会怎样构建Web应用程序?

    不管怎样,它们通常是客户端非常紧密地耦合。为什么我们不能直接数据库暴露给客户端呢?  F. 权限 好吧,我们不这样做原因是我们需要确保权限正确设置。例如,你应该只能看到你好友帖子。...大多数项目都处于边缘场景——它们不是你日常应对那种类型。这意味着原型制作阶段哪怕只多了几分钟,也可能会让我们淘汰很多项目。 简化这一步骤大大增加我们可以使用应用程序数量。...像 Hasura 这样服务可以使用Postgres 这样数据库,并做一些聪明事情,比如给你一个 GraphQL API。 Hasura 很适合读取数据。...5未来 现在问题是:这些工具会演变成什么样子? 在某些层面,未来已经到来了。例如,我认为 Figma 就是一款来自未来应用:它可以出色地处理离线模式、撤消 / 重做和多人关系。...大家可以和 InfoQ 读者一起畅所欲言,和编辑们零距离接触,超值技术礼包等你领取,还有超值活动等你参加,快来加入我们吧! 点个在看少个 bug

    10K30

    【DB宝92】PG高可用之Citus分布式集群搭建及使用

    Citus集群简介 Citus是Postgres开源扩展,Postgres转换成一个分布式数据库,在集群多个节点上分发数据和查询,具有像分片、分布式SQL引擎、复制表和分布式表等特性。...因为Citus是Postgres扩展(而不是一个独立代码分支),所以当你使用Citus时,你也在使用Postgres,可以利用最新Postgres特性、工具和生态系统。...相比单机PostgreSQL,Citus可以使用更多CPU核心,更多内存数量,保存更多数据。通过向集群添加节点,可以轻松扩展数据库。...Citus可以用很小代价和更快速度紧跟PostgreSQL版本演进;同时又能最大程度保证数据库稳定性和兼容性。 Citus支持新版本PostgreSQL特性,并保持现有工具兼容。...Citus使用分片和复制在多台机器上横向扩展PostgreSQL。它查询引擎将在这些服务器上执行SQL进行并行化查询,以便在大型数据集上实现实时(不到一秒)响应。

    3.8K20

    分布式 PostgreSQL 集群(Citus)官方示例 - 实时仪表盘

    目录 数据模型 汇总 过期旧数据 近似不同计数 使用 JSONB 非结构化数据 更多 Citus 提供对大型数据集实时查询。...postgresql-hll https://github.com/aggregateknowledge/postgresql-hll 使用 JSONB 非结构化数据 Citus Postgres...为了证明这一点,让我们跟踪来自每个国家/地区访客数量。使用半结构数据类型可以让您不必为每个国家添加一列,并最终得到具有数百个稀疏填充列行。我们有一篇博文解释了半结构化数据使用哪种格式。...这篇文章推荐使用 JSONB,在这里我们演示如何 JSONB 列合并到您数据模型中。...博文 https://www.citusdata.com/blog/2016/07/14/choosing-nosql-hstore-json-jsonb 首先,新列添加到我们汇总表中: ALTER

    1.7K30
    领券