【问题标题】:Difference between JSON and JSONB in Postgres [duplicate]Postgres中JSON和JSONB之间的区别[重复]
【发布时间】:2016-09-22 11:08:39
【问题描述】:

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

  1. 什么时候应该使用特定的?
  2. 相对于其他有什么好处或坏处?

【问题讨论】:

  • PostgreSQL 文档定义的数据类型 json 和 jsonb 几乎相同;关键区别在于 json 数据存储为 JSON 输入文本的精确副本,而 jsonb 以分解的二进制形式存储数据;也就是说,不是作为 ASCII/UTF-8 字符串,而是作为二进制代码。
  • 已经在别处回答了,但是这个条目的标题最好找到我的解决方案!

标签: json postgresql sqldatatypes jsonb


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这是解释: 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
    

    【讨论】:

      猜你喜欢
      • 2018-09-20
      • 2016-04-02
      • 2011-12-26
      • 2015-12-16
      • 2014-08-16
      • 2011-04-08
      • 2012-11-24
      • 2013-06-05
      • 2021-09-29
      相关资源
      最近更新 更多