JSON和JSONB在Postgresql中的区别

4
我正在阅读PostgreSql文档https://www.postgresql.org/docs/13/datatype-json.html,了解JSON和JSONB数据类型之间的区别。
其中有这样一句话:
“json数据类型存储输入文本的精确副本,处理函数必须在每次执行时重新解析;而jsonb数据以分解的二进制格式存储,由于增加了转换开销,因此输入速度略慢,但处理速度显着更快,因为无需重新解析。”
我不理解存储为文本和存储为二进制格式之间的区别是什么,字符串本身将被存储为0和1的序列。
请问有人能解释一下吗?此外,它们之间会有大小差异吗?

1
只需遵循该页面上的建议:“*一般来说,大多数应用程序应该优先将JSON数据存储为jsonb*”。 - user330315
这个回答解决了你的问题吗?Postgres中JSON和JSONB的区别以及PostgreSQL引入JSONB的解释 - Bergi
2个回答

10
"

json本质上是以文本形式存储的,每次操作时都需要解析它。这意味着它会保留空格格式,并允许对象中存在重复的属性键。

jsonb是一种优化的二进制格式,表示嵌套数组和对象的树状结构,存储时可能稍微大一些但访问和操作速度更快。

"

0

正如文档所述,它更快,因为它是针对JSON进行优化的格式。

根据PostgreSQL文档定义,数据类型json和jsonb几乎相同;主要区别在于json数据存储为JSON输入文本的精确副本,而jsonb以分解的二进制形式存储数据;也就是说,不是作为ASCII/UTF-8字符串,而是作为二进制代码。

请阅读:https://www.compose.com/articles/faster-operations-with-the-jsonb-data-type-in-postgresql/


很遗憾,给出的链接已经失效了。但是内容仍然可以在https://web.archive.org/web/20230521160456/https://www.compose.com/articles/faster-operations-with-the-jsonb-data-type-in-postgresql/找到。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接