gpt4 book ai didi

json - 何时在 postgres 中对数十亿行的键/值表使用 Json

转载 作者:行者123 更新时间:2023-11-29 11:46:53 26 4
gpt4 key购买 nike

我正在做一个项目,我需要在 sql 数据库 (postgres) 中存储数十亿行非结构化 history_data 2-3 年。数据/列可能每天都在变化。

例如,第一天用户可能会保存 {“user_id”:”2223”, “website”:”www.mywebsite.org”, “webpage”:”mysubpageName”}。

第二天 {“name”:”username”, “user_id”: “2223”, “bookclub_id”:”1” }。

我之前一直在做一个项目,我们使用经典的实体键/值表模型来解决这个问题。我们可能保存了多达 30 个键/值 pr 实体。但是当超过 70-100 行时,查询开始运行得越来越慢(内部连接太多)。

因此我想知道我是否应该更改在 postgres 中使用 Json 模型。在网上搜索和阅读博客后,我真的很困惑。在 postgres 中将其更改为 json 的优缺点是什么?

最佳答案

您可以从查询复杂度的角度考虑这一点。如果您有 json 文档的索引(可能是 user_id),您可以进行简单的索引扫描以非常快速地访问整个 json 字符串。

然后你必须在客户端剖析它,或者你可以将它传递给 postgres 中的函数,例如您只想提取特定值的数据。

在处理 json 时,postgres 最重要的特性之一是具有功能索引。与索引列值的“普通”索引相比,函数索引将函数应用于一个(或更多)列值的值并索引返回值。我不知道提取 json 字符串值的函数,但考虑到您想要 bookclub_id = 1 的用户。您可以创建一个索引,例如

create index idx_bookblub_id on mytable using getJsonValue("bookclub_id",mytable.jsonvalue)

之后查询如

select * from mytable where getJsonValue("bookclub_id",mytable.jsonvalue) = 1

快如闪电。

关于json - 何时在 postgres 中对数十亿行的键/值表使用 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46510723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com