Postgresql刚刚引入了
JSONB,它已经在
hacker news趋势。如果有人可以解释它与Hstore和JSON之前在Postgresql中有什么不同,这将是巨大的。它有什么优点和局限性,什么时候应该有人考虑使用它?
首先,
原文链接:https://www.f2er.com/postgresql/193960.htmlhstore
是一个contrib模块,它只允许你存储key =>值对,其中键和值只能是文本(但值也可以是sql NULL)。
json& jsonb允许您存储有效的JSON值(在其spec中定义)。
F.ex.这些是有效的JSON表示:null,true,[1,false,“string”,{“foo”:“bar”}],{“foo”:“bar”,“baz”:[null]} – hstore只是一个小的子集相比,JSON能够(但如果你只需要这个子集,这是很好)。
json& jsonb是他们的存储:
> json以纯文本格式存储,而
> jsonb存储在一些二进制表示中
这有3个主要后果:
> jsonb通常需要比json更多的磁盘空间来存储(有时不是)
> jsonb从它的输入表示比json需要更多的时间来构建
> json操作比jsonb花费更多的时间(每次在json类型的值上进行一些操作时,也需要进行解析)
当jsonb将提供一个稳定的版本,将有两个主要的用例,当你可以轻松地在它们之间选择:
>如果你只使用你的应用程序中的JSON表示,Postgresql只用于存储&检索这个表示,你应该使用json。>如果你对Postgresql中的JSON值做了很多操作,或者在一些JSON字段上使用索引,你应该使用jsonb。