com*_*mte 13 arrays postgresql database-design jsonb postgresql-9.4
假设您要在对象上存储"标签"(例如,帖子).在9.4版本中,您有3个主要选择:
在许多情况下,第3个将是不可能的,因为它不允许查询条件为"标签"值.在我目前的开发中,我不需要这样的查询,标签只在帖子列表中显示,而不是过滤帖子.
所以,选择主要是在text[]和之间jsonb.两者都可以查询.
你会用什么?为什么?
在大多数情况下,我会在表格中使用规范化的架构,以option_tag实现表格option和之间的多对多关系tag。参考实现在这里:
它可能并不是在所有方面都最快的选项,但是它提供了全部的DB功能,包括引用完整性,约束,数据类型的全部范围,所有索引选项和廉价的更新。
为了完整性,请添加到您的选项列表中:
hstore (不错的选择)xml比hstoreor 更为冗长和复杂jsonb,因此我只会在与XML一起使用时使用它。如果该列表仅用于显示并且很少更新,那么我将考虑一个普通数组,该数组通常较小,并且在性能上要优于其余数组。
阅读Josh Berkus @a_horse在其评论中链接的博客条目。但是请注意,它只针对选定的案例。乔希承认:
我意识到我没有测试比较写入速度。
这就是归一化方法大获成功的地方,尤其是当您在并发负载下大量更改单个标签时。
jsonb 如果您仍要使用JSON进行操作,并且仅能“按原样”存储和检索JSON,则最好是一个好选择。
| 归档时间: |
|
| 查看次数: |
4224 次 |
| 最近记录: |