Postgres中JSON和JSONB之间的区别

Som*_*luk 13 postgresql json sqldatatypes jsonb

PosgresSQL中JSON和JSONB数据类型有什么区别?

  1. 什么时候应该使用具体的?
  2. 对其他人有什么好处或坏处?

red*_*neb 22

json基本上是一个以原始格式存储JSON数据的blob,甚至可以保留空白,对象中键的顺序,甚至是对象中的重复键等无关紧要的事物.它确实提供了执行一些基本JSON操作的能力,例如提取与对象中的某个键相关联的值,尽管它很慢,因为它每次都必须解析JSON blob.它还验证每个值以检查它是否是有效的JSON.jsonb另一方面,JSON数据以自定义格式存储,该格式针对某些操作进行了优化,例如提取与对象中某些键相关联的值(即,它不会重新分析JSON,也不会线性搜索).此外,jsonb支持更多操作,就像对象的串联或在对象内部设置值一样.

一般情况下,我json只有在知道自己不会进行任何JSON操作或偶尔进行JSON操作时才会使用.对于我使用的所有其他情况jsonb.请注意,对于前一种情况,text它也是一个完全有效的选项,特别是如果您对验证不感兴趣json(例如,因为您信任数据源).


Pio*_*r R 9

这是解释:https: //www.citusdata.com/blog/2016/07/14/choosing-nosql-hstore-json-jsonb/

在大多数情况下,JSONB很可能是您在寻找NoSQL,无架构数据类型时所需要的.Hstore和JSON也可以占有一席之地,但它并不常见.更广泛地说,JSONB并不总是适合每种数据模型.您可以规范化的地方有好处,但是如果您的模式具有大量可选列(例如使用事件数据),或者模式根据租户ID而不同,则JSONB非常适合.一般来说你想要:

JSONB - In most cases
JSON - If you’re just processing logs, don’t often need to query, and use as more of an audit trail
hstore - Can work fine for text based key-value looks, but in general JSONB can still work great here
Run Code Online (Sandbox Code Playgroud)