postgresql 中的 jsonb
jsonb 是一种以分解的二进制格式存储的 json 数据。如果你关注 google 趋势或进行一些研究,你会发现 json 在开发领域变得越来越流行。
如今,nosql 默认可以存储 json 数据。因为它使用起来很健壮,我们可以将嵌套对象放在另一个对象中;因此它变得越来越流行。
postgres 允许用户在 sql 类型数据库中创建 json 和 jsonb 数据类型。
在 postgresql 中使用 jsonb 创建表
假设我们要为产品创建一个表。可以有各种类型的产品。
例如,其中一些可以以升为单位,一些以克为单位,或者一些以件为单位。此外,特定产品的某些类型的数据可能与其他产品不同。
在这种情况下,最好使用 json 或 jsonb 来存储这些不熟悉的数据。下面给出了创建具有 jsonb 类型数据的表:
createtableproducts(idserialprimarykey,sellertextnotnull,datajsonbnotnull);
在 postgresql 中插入 jsonb 数据类型
之前,我们创建的表包含一个具有 jsonb
类型数据的列。现在,让我们填充表格。
众所周知,jsonb 以 key-value 格式存储数据,与 python 中的字典相同。让我们用一些数据填充上表。
insertintoproducts(seller,data)values('jones heard','{ "name": "milk shake",
"price": "10$",
"ingredients":
{ "milk":
{ "amount":"250ml","calorie":"100 kcl"},
"coco powder":
{ "amount":"50 gram", "calorie":"100 kcl"}
}
}');
由于我们成功地将 jsonb 数据插入到表中,是时候查看添加的数据了。从上面的 json 中,我们可以注意到我们有嵌套的对象。
在键 data
中,我们有 name
、price
和 ingredient
。在成分
中,我们有成分及其数量和卡路里值。
所以,它是一个嵌套对象。这里的动机是我们不需要复杂的连接来获得这样的嵌套输出。
selectid,seller,jsonb_pretty(data)asproduct_detailsfromproducts;
输出:
id | seller | product_details
---- ------------- ----------------------------------
1 | jones heard | {
| | "name": "milk shake",
| | "price": "10$",
| | "ingredients": {
| | "milk": {
| | "amount": "250ml",
| | "calorie": "100 kcl"
| | },
| | "coco powder": {
| | "amount": "50 gram",
| | "calorie": "100 kcl"
| | }
| | }
| | }
(1 row)
在命令中,我们使用了 jsonb_pretty()
函数。它使用必要的缩进格式化 json 对象。
否则整个 json 会出现在一行中,很难理解对象之间的关系。
postgresql 中 jsonb 的优缺点
虽然 postgres 中有 json 类型,但他们也引入了 jsonb 格式。正如我们所见,声明和其他查询与 json 非常相似。
以下是在 json 上使用 jsonb 的一些好处:
- 比 json 效率更高。
- 它允许更快的处理,因为它是分解的二进制文件。
- 支持索引,json 不支持。
此外,它也有一些缺点。以下是:
- 较慢的输入。
- 它比 json 占用更多的磁盘空间,因为它留下了更多的足迹。
- 在某些情况下,聚合函数会减慢进程。
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
在一个 postgresql 查询中使用多个 with 语句
发布时间:2023/03/20 浏览次数:337 分类:postgresql
-
在本教程中,我们将学习如何使用多个 with 语句在 postgresql 中使用两个临时表执行查询。
发布时间:2023/03/20 浏览次数:185 分类:postgresql
-
本文介绍如何在 ubuntu 上找到 postgresql 数据库的配置文件。
发布时间:2023/03/20 浏览次数:409 分类:数据库
-
本文解释了如何直接从终端/命令行或 psql shell 运行 sql 文件。为此,你需要指定主机名、端口、用户名和数据库名称。
发布时间:2023/03/20 浏览次数:89 分类:postgresql
-
本文展示了如何列出 postgresql 上的活动连接。
发布时间:2023/03/20 浏览次数:966 分类:postgresql
-
在 pl/sql 中,你可能需要在 postgres 中使用循环。我们可以使用 for 和 while 语句来创建循环。
发布时间:2023/03/20 浏览次数:141 分类:postgresql
-
本文介绍如何在 postgresql 中仅使用单个查询来重命名列以及更改其类型。
发布时间:2023/03/20 浏览次数:233 分类:postgresql
-
本文介绍如何在 postgresql 中使用 select 方法连接列。
发布时间:2023/03/20 浏览次数:281 分类:postgresql
-
本文展示了如何使用 case 语句并给出了 postgresql 中的示例。