我想存储一个大的json哈希(或内容,按你想要的方式调用)和#34; big"我的意思是超过1000个键值对,我不想在json字段上进行任何搜索,我只是想从数据库中检索它并将其传递给javascript来解析它并构造一个可视化结果。
在Postgresql上有一个json
类型和jsonb
类型(也许我可以使用text
字段来存储json)。我只想为此目的做出正确的选择,所以我希望有经验的人提供一些建议。
答案 0 :(得分:21)
假设您正在谈论实际的,严格的JSON(没有诸如不带引号的密钥之类的怪癖)......
json
与text
没有什么不同。除了验证JSON 之外没什么用。
jsonb
是一个不同的野兽:它是一个成熟的数据结构,具有自己的内部格式,在搜索中有更多的操作可用。例如,json
没有适用的=
(相等运算符)。 jsonb
有。 (text
也有,即使它在语义上不同。)
索引更加明智,但它必须在读写期间来回转换。
鉴于此,jsonb
在这里看起来不是一个合理的选择。
......所以只剩下一个决定:
您是否要确保数据库中只包含有效的JSON值?在数据库级别?或者您是否相信该数据库的每个客户端(通常是服务器应用程序)只提供有效数据?
json
无论哪种方式都是相对安全的选择。使用text
理论上可以在没有验证的情况下以微不足道的差距提高性能,但是您只能获得具体的通过基准测试的数字。但它不能防止非JSON值,并且客户端中的意外错误可能会被忽视。负责任地测试!