云数据库 GAUSSDB-JSON/JSONB类型:JSONB高级特性

时间:2024-11-02 18:52:56

JSONB高级特性

  • 注意事项
    • 不支持列存。
    • 不支持作为分区键。
    • 不支持外表、mot。

​JSON和JSONB的主要差异在于存储方式上的不同,JSONB存储的是解析后的二进制,能够体现JSON的层次结构,更方便直接访问等,因此JSONB会有很多JSON所不具有的高级特性。

  • 格式归一化
    • 对于输入的object-json字符串,解析成jsonb二进制后,会天然的丢弃语义上无关紧要的细节,比如空格:
      openGauss=# select '   [1, " a ", {"a"   :1    }]  '::jsonb;
              jsonb
      ----------------------
       [1, " a ", {"a": 1}]
      (1 row)
    • 对于object-json,会删除重复的键值,只保留最后一个出现的,如:
      openGauss=# select '{"a" : 1, "a" : 2}'::jsonb;
        jsonb
      ----------
       {"a": 2}
      (1 row)
    • 对于object-json,键值会重新进行排序,排序规则:长度长的在后、长度相等则ascii码大的在后,如:
      openGauss=# select '{"aa" : 1, "b" : 2, "a" : 3}'::jsonb;
                 jsonb
      --------------------------- 
      {"a": 3, "b": 2, "aa": 1}
      (1 row)
support.huaweicloud.com/centralized-devg-v2-gaussdb/devg_03_0371.html