jsonb

jsonb
jsonb以分解的二进制形式存储数据,不是ASCII/UTF-8字符串,而是二进制代码。 这样,由于增加了转换开销,输入速度稍慢,但由于不需要重新解析,处理速度明显加快。
jsonb还支持索引,这是一个很大的优势。
jsonb不保留空白,不保留对象键的顺序,也不保留重复的对象键。 如果输入中指定了重复的键,则只保留最后一个值。
建议应用程序将 "JSON数据存储为 "jsonb,除非有非常特殊的需要,如关于对象键排序的传统假设。
RFC 7159 允许 "JSON字符串包含以 "\uXXXX表示的 Unicode 转义序列。 jsonb的输入函数不允许对非 ASCII 字符(U+007F 以上的字符)进行 Unicode 转义,除非数据库编码为UTF8。 jsonb拒绝 "\u0000. 原因是 "\u0000无法用PostgreSQL's文本类型表示。 jsonb坚持认为,任何使用统一码代理对来指定统一码基本多语言平面之外的字符的做法都是正确的。 有效的 Unicode 转义字符会转换为等效的 ASCII 或UTF8字符进行存储;这包括将代理对折叠为一个字符。
在将文本 "JSON输入转换为 "jsonb时,RFC 7159 描述的原始类型被有效地映射到PostgreSQL的本地类型上。 jsonb会拒绝超出PostgreSQL数值数据类型范围的数字。