迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > PostgreSQL >

PostgreSQL 中的 JSONB

作者:迹忆客 最近更新:2023/03/20 浏览次数:

JSONB 是一种以分解的二进制格式存储的 JSON 数据。如果你关注 Google 趋势或进行一些研究,你会发现 JSON 在开发领域变得越来越流行。

如今,NoSQL 默认可以存储 JSON 数据。因为它使用起来很健壮,我们可以将嵌套对象放在另一个对象中;因此它变得越来越流行。

Postgres 允许用户在 SQL 类型数据库中创建 JSON 和 JSONB 数据类型。

在 PostgreSQL 中使用 JSONB 创建表

假设我们要为产品创建一个表。可以有各种类型的产品。

例如,其中一些可以以升为单位,一些以克为单位,或者一些以件为单位。此外,特定产品的某些类型的数据可能与其他产品不同。

在这种情况下,最好使用 JSON 或 JSONB 来存储这些不熟悉的数据。下面给出了创建具有 JSONB 类型数据的表:

CREATE TABLE Products(
    id SERIAL PRIMARY KEY,
    seller TEXT NOT NULL,
    data JSONb NOT NULL
);

在 PostgreSQL 中插入 JSONB 数据类型

之前,我们创建的表包含一个具有 JSONb 类型数据的列。现在,让我们填充表格。

众所周知,JSONB 以 key-value 格式存储数据,与 Python 中的字典相同。让我们用一些数据填充上表。

INSERT INTO Products(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 中,我们有 namepriceingredient。在成分中,我们有成分及其数量和卡路里值。

所以,它是一个嵌套对象。这里的动机是我们不需要复杂的连接来获得这样的嵌套输出。

SELECT id ,seller, jsonb_pretty(data) as Product_Details
FROM products;

输出:

 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 的一些好处:

  1. 比 JSON 效率更高。
  2. 它允许更快的处理,因为它是分解的二进制文件。
  3. 支持索引,JSON 不支持。

此外,它也有一些缺点。以下是:

  1. 较慢的输入。
  2. 它比 JSON 占用更多的磁盘空间,因为它留下了更多的足迹。
  3. 在某些情况下,聚合函数会减慢进程。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 PSQL 中运行 SQL 文件

发布时间:2023/03/20 浏览次数:178 分类:数据库

本文解释了如何直接从终端/命令行或 psql shell 运行 SQL 文件。为此,你需要指定主机名、端口、用户名和数据库名称。

在 PostgreSQL 中使用循环

发布时间:2023/03/20 浏览次数:124 分类:PostgreSQL

在 PL/SQL 中,你可能需要在 Postgres 中使用循环。我们可以使用 FOR 和 WHILE 语句来创建循环。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便