微信号:infoqchina

介绍:有内容的技术社区媒体

PostgreSQL带来更好的NoSQL功能

2014-06-02 20:06 InfoQ

PostgreSQL 9.4测试版带来了备受期待的“二进制JSON”类型JSONB。这种面向文档数据的新的存储格式性能更优,而且带来了索引和用于操作JSON数据的函数和操作符。


JSONB类型融合了HStoreJSON两个项目。JSONB拥有JSON的一切,但它由于采用二进制表示而存储更高效,由于索引而速度更快。当前所有的HStoreJSON用户预计最终都将转到JSONB


既然PostgreSQL的传统客户群一直是需要可靠的关系功能的开发人员,或者是从像Oracle这样的企业数据库切换过来的用户,那么为什么NoSQL功能对它而言如此重要?Josh Berkus是团队的核心成员之一,他分享了一些看法:

虽然Oracle的市场目前很大,但根本就不增长。Oracle用户中会转向PostgreSQL的人实际数目比那个更少。不管我们增加多少功能,我们永远都无法成为Oracle,也无法比Oracle做的更好。


创新技术之所以会成功是因为他们获得了新用户并扩大了市场。


另外,同一话题中的其它评论明确指出,若干将PostgreSQLNodePythonGo或者Ruby技术一起使用的创业公司是如何期待着使用快速JSON支持。


考虑到这些问题,很明显,对JSON提供一流的性能支持,而又无损于其传统强项,如可靠性,可以帮助PostgreSQL增加新的应用场景。


也有一些领域,使用其它的NoSQL数据库可能更合适——比如,EnterpriseDB的核心团队成员和高级数据库架构师Bruce Momijan就建议(通过邮件)——

即使PostgreSQL扩展了功能和性能,也仍然有一些边缘情况,NoSQL解决方案可能更适合。对于有大量重复的非结构化数据,如日志文件,列存储的Cassandra就很好,它添加新节点更方便。不过,Postgres将准备好用于既能从NoSQL功能受益又需要符合ACID的应用程序。


EnterpriseDB的主要贡献者和高级数据库架构师RobertHaas补充道——

一个例子就是,如果你正将MapReduce用于高度并发的查询处理,那么,在那种情况下,用像Hadoop那样的东西可能更好。另一个例子就是,如果你的数据模型需要对JSON大对象做大量小的更改,那么也许有若干NoSQL解决方案都能更高效地处理这种情况。


不过,除了特定的应用场景外,对于那些需要在同一个应用程序中针对不同的数据类型灵活地选用无模式存储或关系型存储以及需要保证ACID的开发人员而言,Postgres就开始能够做出令人信服的案例了。


请注意,JSONB并不是9.4中引入的唯一的主要功能,还有其它几项:

  • “数据更改流APIData Change Streaming API)”允许对复制流进行解码和转换。这为支持高速和更灵活复制的新复制工具和扩展解决方案奠定了基础。

  • 带有“refresh concurrently”选项的物化视图

  • ALTER SYSTEM SET允许从SQL命令行和远程客户端修改postgresql.conf,使管理更简单。


另外,它还包含若干小的功能——

  • “动态的后台工作进程(Dynamic Background Workers)”

  • “复制槽(Replication Slots)”

  • 改进了写可扩展性

  • 多项性能改进,如聚合、更小的GIN索引、减少了预写日志的量

  • 可更新的安全屏障视图

  • 新的数组操作函数和表函数

  • 时滞备用服务器

  • 更新MVCC系统目录

  • 降低部分ALTER TABLE命令的锁级别

  • 备份节流

  • WITHIN GROUP


读者可以从发布说明中查看完整的更新列表。


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************


 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 Emacs:最好的Python编辑器? 流量加密奈我何? 单例在Swift中的正确实现方式 2015年出现的十大流行Python库 关于 Android N 那些你不知道的事儿