当前位置: 首页 > news >正文

Postgresql中json和jsonb类型区别

在我们的业务开发中,可能会因为特殊【历史,偷懒,防止表连接】经常会有JSON或者JSONArray类的数据存储到某列中,这个时候再PG数据库中有两种数据格式可以直接一对多或者一对一的映射对象。所以我们也可能会经常用到这类格式数据;PG数据库存储json类型数据可以有两种数据类型JSON和JSONB

json和jsonb区别

json和jsonb都可以json和jsonArray类型的数据
在这里插入图片描述
实际上主要区别在于写入和查询效率以及数据存储上面

性能

  • json 数据类型存储了输入文本的精确副本,这意味着每次需要访问或修改数据时,数据库都必须重新解析该文本。这会导致在处理大型 JSON 文档或进行频繁的 JSON 操作时性能下降。
  • 相比之下,jsonb 数据类型将 JSON 数据存储为一种分解好的二进制格式。虽然这在输入时会稍微慢一些,因为需要进行额外的转换,但它在处理时要快得多,因为不需要进行解析。

存储方式

  • json 数据类型保留了输入文本的完整结构,包括可能存在的空格、JSON 对象内部键的顺序以及重复的键/值对。这意味着它提供了一种“所见即所得”的存储方式,但也可能导致不必要的空间占用和可能的性能开销。
  • jsonb 数据类型在存储时会删除不必要的空格、不保留对象键的顺序,并且只保留每个键的最后一个值(如果存在重复键)。这种存储方式更加紧凑,并且可以提高查询和处理的效率。

索引支持

  • jsonb 数据类型支持基于 GIN(Generalized Inverted Index)或 B-tree 的索引,这使得基于 JSON 数据的查询可以更加高效。通过索引,您可以快速检索 JSON 文档中的特定元素或值。
  • json 数据类型则不支持这样的索引,这可能会限制其在大型数据集或需要高性能查询的应用中的使用。

所以我们在不同情况下可以选择不同的数据格式【PS:业务系统大概率是进行单条数据新增,批量数据查询和过滤,这些情况选择什么数据格式大家应该都比较清楚了,如果有特殊情况可以特殊考虑处理,其实根本就是空间换时间】

其他

在创建表的时候发现还有一种数据类型jsonpath,这个数据类型可以存储解析json格式的表达式
在这里插入图片描述

SELECT jsonb_path_query(jsonb_1 ,  jsonpath_1) FROM tb_json;

结果如下
在这里插入图片描述
在一般的业务场景下我们的json格式一般都是固定的,但是有一些特殊情况比如我们抓取一些非格式话的数据的时候可以存储下解析规则,然后对规则进行补全,逐步完善我们数据解析的能力

http://www.lryc.cn/news/362902.html

相关文章:

  • 太强了,使用 C# 开发的开源内网穿透工具
  • leetcode及牛客网二叉树相关题、单值二叉树、相同的树、二叉树的前序、中序、后序遍历、另一棵树的子树、二叉树的遍历、 对称二叉树等的介绍
  • Spring (38)Spring Cloud
  • MySQL之数据库相关操作学习笔记(一)
  • 【Node】node的Events模块(事件模块)的介绍和使用
  • C#中字节数组(byte[])末尾继续添加字节的示例
  • Socket编程学习笔记之TCP与UDP
  • JavaScript第九讲BOM编程的练习题
  • JavaScript 中创建函数的多种方式
  • 对称二叉树[简单]
  • 判断GIF类型并使用ImageDecoder解析GIF图
  • 数组对象数据修改后页面没有更新,无法进行编辑,校验失效问题
  • 什么是低代码?有什么特点?
  • Kafka 消息保留时长由 24 小时变更为 72 小时的影响分析
  • MySQL A表的字段值更新为B表的字段值
  • TCP 建链(三次握手)和断链(四次握手)
  • SpringBoot集成JOOQ加Mybatis-plus使用@Slf4j日志
  • 浅谈JavaScript中的对象赋值
  • Java面试题-集合
  • 从当当网批量获取图书信息
  • python爬虫之JS逆向——网页数据解析
  • VL53L4CX TOF开发(2)----修改测距范围及测量频率
  • C++之noexcept
  • Kafka之Broker原理
  • RabbitMQ docker安装及使用
  • 篇3:Mapbox Style Specification
  • C#WPF数字大屏项目实战11--质量控制
  • 第九十七节 Java面向对象设计 - Java Object.Finalize方法
  • 【scikit-learn009】异常检测系列:单类支持向量机(OC-SVM)实战总结(看这篇就够了,已更新)
  • 网络管理与运维