何时应该在Rails中使用数组列而不是关联?

3
自从Rails 4和Postgres 9之后,引入了数组列。我也尝试使用数组列来存储一些像标签类别这样的东西,这些东西我不经常更改,而且它们被用作搜索的参考/方面。我之前问过另一个关于查询数组列的问题,其中一个答案提到永远不要使用数组来存储数据。然后我就困惑了,如果建议永远不要使用数组,那为什么会创建数组列呢?所以我的问题是:

在Rails中何时认为使用数组列比模型关联更好?

1个回答

9
根据我的经验,从数组列中检索和操作数据的速度较慢。因此,我通常更喜欢使用关联。
以下是具体原因:
  1. 如果您使用数组列,则查询数据库的灵活性不够。

  2. 使用关联批量处理数据时,从数据库中提取数据的速度更快。

  3. 如果您将书籍类别存储为数组并且决定更改一个类别的名称怎么办?

    由于关联到其他实例(例如书籍)的id,只需更改某个类别实例的名称即可。而如果使用数组,则必须迭代整个书籍集合以更新类别的名称。

如果关联过于复杂,则可以使用arrayjsonjsonb列来存储一些元数据。

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