PostgreSQL何以支持丰富的NoSQL特性?
副标题[/!--empirenews.page--]
【新品产上线啦】51CTO播客,随时随地,碎片化学习
作者介绍 谭峰,网名francs,中国开源软件推进联盟PostgreSQL分会特聘专家,《PostgreSQL实战》作者之一,《PostgreSQL 9 Administration Cookbook》译者之一。现就职于浙江移动负责应用上云架构管控以及私有云建设工作。 张文升,中国开源软件推进联盟PostgreSQL分会核心成员之一,《PostgreSQL实战》作者之一,活跃于PostgreSQL、MySQL、Redis等开源技术社区,致力于推动PostgreSQL在互联网企业的应用及企业PostgreSQL培训与技术支持。 在上一篇文章《PostgreSQL用户应掌握的高级SQL特性》我们介绍了PostgreSQL的典型高级SQL特性。PostgreSQL不仅是关系型数据库,同时支持丰富的NoSQL特性,所以本文将介绍PostgreSQL的NoSQL特性,分以下三部分来介绍:
一、JSON和JSONB数据类型 PostgreSQL支持非关系数据类型json (JavaScript Object Notation),本节介绍json类型、json与jsonb差异、json与jsonb操作符和函数以及jsonb键值的追加、删除、更新。 1、JSON类型简介 PotgreSQL早在9.2版本已经提供了json类型,并且随着大版本的演进,PostgreSQL对json的支持趋于完善,例如提供更多的json函数和操作符方便应用开发,一个简单的json类型例子如下:
为了更好演示json类型,接下来创建一张表,如下所示:
以上示例定义字段name为json类型,插入表数据,如下所示:
查询表test_json1数据:
2、查询JSON数据 通过->操作符可以查询json数据的键值,如下所示:
如果想以文本格式返回json字段键值可以使用->>符,如下所示:
3、JSONB与JSON差异 PostgreSQL支持两种JSON数据类型:json和jsonb,两种类型在使用上几乎完全相同,主要区别如下: json存储格式为文本,而jsonb存储格式为二进制 ,由于存储格式的不同使得两种json数据类型的处理效率不一样,json类型以文本存储并且存储的内容和输入数据一样,当检索json数据时必须重新解析,而jsonb以二进制形式存储已解析好的数据,当检索jsonb数据时不需要重新解析,因此json写入比jsonb快,但检索比jsonb慢,后面会通过测试验证两者读写性能差异。 除了上述介绍的区别之外,json与jsonb在使用过程中还存在差异,例如jsonb输出的键的顺序和输入不一样,如下所示:
而json的输出键的顺序和输入完全一样,如下所示:
(编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |