gpt4 book ai didi

arrays - JSONB 会使 PostgreSQL 数组变得无用吗?

转载 作者:行者123 更新时间:2023-11-29 11:13:18 25 4
gpt4 key购买 nike

假设你想在你的对象上存储“标签”(比如,一篇文章)。对于 9.4 版,您有 3 个主要选择:

  • 标记为文本[]
  • 标记为jsonb
  • 标记为文本(并且您将 JSON 字符串存储为文本)

在许多情况下,3rd 是不可能的,因为它不允许对“标签”值进行条件查询。在我目前的开发中,我不需要这样的查询,标签只用于显示在帖子列表中,而不是用于过滤帖子。

因此,选择主要在 text[]jsonb 之间。两者都可以查询。
你会用什么?为什么?

最佳答案

在大多数情况下,我会使用 normalized schema使用表 option_tag 实现表 optiontag 之间的多对多关系。此处引用实现:

它可能不是在每个方面都是最快的选择,但它提供了完整的数据库功能,包括参照完整性、约束、完整的数据类型、所有索引选项和廉价更新。

为了完整起见,添加到您的选项列表中:

  • hstore (不错的选择)
  • xmlhstorejsonb 更冗长和更复杂,所以我只会在使用 XML 操作时使用它。
  • “逗号分隔值字符串”(非常简单,主要是错误的选择)
  • EAV(实体-属性-值)或“名称-值对”(主要是错误的选择)
    dba.SE 上此相关问题下的详细信息:

如果列表仅用于显示且很少更新,我会考虑一个普通数组,它通常比其他数组更小且性能更好。

阅读blog entry by Josh Berkus @a_horse 在他的评论中链接到。但请注意,它侧重于选定的阅读案例。乔希承认:

I realize that I did not test comparative write speeds.

这就是规范化方法大获全胜的地方,尤其是当您在并发负载下大量更改单个标签时。

jsonb 是一个不错的选择,如果您无论如何都要使用 JSON,并且可以“按原样”存储和检索 JSON。

关于arrays - JSONB 会使 PostgreSQL 数组变得无用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28929834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com