博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Postgres: hstore与JSON大比拼
阅读量:6937 次
发布时间:2019-06-27

本文共 1450 字,大约阅读时间需要 4 分钟。

hot3.png

Postgres: hstore与json大比拼

和人们谈论Postgres发现了一个问题是hstore与json哪个更好。我该使用了哪个以及在哪种情况下使用。首先,如果你不熟悉,请查看关于它们的一些资料:

如果你已经对它俩很了解了,但是还是迷惑该使用哪个,那我们深入讨论:

hstore

hstore 是键值对直接存储在你的数据中。它是我最爱的而且它已经存在了很长时间了。在处理数据模式(schema)时hstore可以给你很大弹性。如同你不用提前定义模式(models),但是它有两大局限:

1.它只处理文本。 

2. 它不支持全文档存储意味着你不能嵌套对象。

但是hstore主要特性包括可以在其上使用索引,众多操作符强有力支持,显而易见的,对数据的扩张性。一些基本的操作符包括:

返回列foo中关键字bar的值:

foo->"bar"
指定的列foo是否包含了关键字bar:

foo?"bar"
指定的列foo是否包含了键值对bar->baz:
foo@>"bar->baz"
也许hstore最有戏的部分是你可以在其上索引。Postgres特有的gin和gist允许你在hstore中索引所有的关键字和值。一个由Postgres专家Christophe Pettus的演讲指出了 ,其中在某些情况下hstore使用git/gist在性能上完胜mongodb. 

Json

和hstore相比,JSON是全文档数据类型。另外它嵌套对象的特性可以帮助你支持很多不仅仅是文本,还可以读取数字的功能。如你使用json插入到postgres中它会自动保证它是合法的JSON格式,如果不是就会报错。JSON在Postgres 9.3会得到更好的支持,如,但是如果你现在需要更多的函数,你需要查看.

该使用哪个

在你的应用中哪个会是你实际想去使用的呢?如果你已经使用JSON以及简单的想存储在你的数据库中,那么JSON数据类型通常就是正确的选择。然而,如果你想在数据模型中寻找更大的弹性,那么hstore就是你所选之路。hstore会给你很多灵活性以及高性能的查询你的数据。当然在Postgres 9.3中会是全新的改变。

via

究竟什么才是最重要的问题?

Craig Kerstiens给出了两者类型的大概,我想给出一种快速粗糙的图来说明我会使用哪个在开发环境中。首先,hstore几乎在每种情况都比JSON性能上更优秀,但是性能只是当你开发系统所做那些烦人决策点之一如同彩虹中的一种颜色。

所以,我该怎么做?

  • 如果是以JSON格式从外部接受数据,想以分级格式存储它,它就会是一个性能问题因为它会花费一些时间来转换它为hstore格式。
  • 如果是从内部产生数据,而不是从它几乎完成的格式接受,并且分层不是很深,我会使用hstore,就为它更快的性能。
  • 如果保留值的类型是必需的,JSON就是不二选择,因为hstore存储所有的都是字符串格式。
  • 如果在键值对中全文档查询是必需的,当前hstore索引情况比JSON的更优秀。
  • 如果你仅仅查询前几条(1-3)记录,那么在关键字上使用b-tree索引比使用gist或者git索引更好; 在这个方面hstore没有比json更特别优点。

在我看来,随着JSON在PostgreSQL中支持越来越成熟,这种格局会有所改变,而且意义重大。但是这只是9.2情形。

via

转载于:https://my.oschina.net/swuly302/blog/143746

你可能感兴趣的文章
DELL服务器重做RAID
查看>>
DNS主从类型的架设
查看>>
我的友情链接
查看>>
Apache日志配置参数说明
查看>>
4.3 vsftpd文件共享
查看>>
新浪微博oauth2.0弹出验证dialog中输入框被输入法覆盖的解决办法
查看>>
anndroid ndk使用
查看>>
Ajax
查看>>
微服务架构
查看>>
我的友情链接
查看>>
file文件操作
查看>>
实战Jenkins+SVN+tomcat持续集成发布
查看>>
为Nginx制作404 403 500等错误页面
查看>>
ognl 表达式常用表达式语言
查看>>
Nginx/LVS/HAProxy 负载均衡软件的优缺点详解
查看>>
Oracle导表语句
查看>>
ORA-28001: 口令已经失效
查看>>
我的友情链接
查看>>
现代软件工程 结对编程 (I) 三维棋类游戏
查看>>
Provisioning Services 7.6 入门到精通系列之九:创建和配置目标设备
查看>>