存储键值映射的最佳PostgreSQL数据类型是什么?

15

我想在我的PostgreSQL表中将键值字符串的简单映射存储为字段。我打算把整个映射作为一个整体来处理;即始终选择整个映射,并且从不按其键或值进行查询。

我已经阅读了比较hstore、json和jsonb之间的文章,但这些文章并没有帮助我选择最适合我的要求的数据类型,这些要求是:

  • 只有键-值,不需要嵌套。
  • 仅限字符串,没有其他类型或null。
  • 存储效率,给定我的字段预期用途。
  • 查询映射的解析速度快。

哪种数据类型最适合我的用例?


2
绝对是 hstore - user330315
如果我没记错的话,jsonb 是作为嵌套的 hstore 实现的,所以那也应该可以工作。 - jmelesky
@a_horse_with_no_name 如果您能详细说明一下,我会很感激 :) - Eyal Roth
1个回答

5
你可以使用键值对映射的hstore,但我个人更喜欢使用jsonb。虽然有点过头了,但大多数语言都能本地转换json,无需自己解码。
在json中,我只会存储一个简单的对象或数组来存储你想要存储的信息。
两者都支持索引,并且存储效率高。
文本格式的hstore是一种自定义类型格式,你的语言可能不知道它,因此需要处理数据以插入或查询。

1
根据编程语言的不同,“hstore”不需要任何“转换”。例如,JDBC驱动程序只需返回“hstore”列内容的“Map”。 - user330315

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接