gpt4 book ai didi

ruby-on-rails - 在数据库中存储项目的 "likes"?

转载 作者:太空狗 更新时间:2023-10-30 02:01:08 25 4
gpt4 key购买 nike

我正在通过 Heroku 在 Postgres 上运行 Rails 应用。

我想在我的网站上为各种项目(例如用户评论)实现类似于 Facebook 的“点赞”。将这些内容存储在我的数据库中的最明智的方法是什么,既高效又快速?

最明显的是在用户和项目之间有一个类似的连接表,像这样:

user_id int
item_id int
item_type string
created_at datettime

但是,在显示时,这意味着每次我拉取一个项目时,我都必须在整个 like 表中拉一个连接,这可能会变得非常大。

对此的明显 react 是在项目中存储一个计数器,用于持续的点赞数。但是,这行不通,因为喜欢某个项目的人很重要,无论是显示在项目旁边,还是隐藏用户已经喜欢的东西的点赞按钮。

我的计划是向所有可爱的项目添加一个文本字段,我将在其中存储一个序列化数组。这样一来,每次拉取一个项目都会附带一份喜欢它的人的完整列表。是否有更好的方法来执行此操作,或者这是推荐的方法?

最佳答案

您是否有理由相信您的数据集会变得如此之大以至于连接的成本太高? Postgres 虽然不如目前最快的 RDBMS 快,但现在已经相当快了。我曾经经营一个网站,每天有数百万的综合浏览量,并且需要一些非常复杂的查询来生成每个页面。通过做一些简单的缓存,我们能够在非常普通的硬件上运行它。

当您进行非规范化时,您将放弃使用 RDBMS 的许多好处。只有当我知道我必须这样做时,我才会这样做。如果是这种情况,我会考虑为该数据使用其他东西,比如简单的键/值数据库。但我认为,只有当您的数据非常糟糕时,您才有可能遇到这种情况。

关于ruby-on-rails - 在数据库中存储项目的 "likes"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326609/

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