运维开发网

ruby-on-rails – 在数据库中存储项目的“喜欢”?

运维开发网 https://www.qedev.com 2020-08-11 14:56 出处:网络 作者:运维开发网整理
我正通过Heroku在Postgres上运行Rails应用程序. 我想在我的网站上实现类似Facebook“喜欢”的各种项目,例如用户评论.将这些存储在我的数据库中的最有效和快速的最聪明的方法是什么? 显而易见的是在用户和项目之间有一个类似的连接表,如下所示: user_id int item_id int item_type string created_at datettime 但是,当显示时
我正通过Heroku在Postgres上运行Rails应用程序.

我想在我的网站上实现类似Facebook“喜欢”的各种项目,例如用户评论.将这些存储在我的数据库中的最有效和快速的最聪明的方法是什么?

显而易见的是在用户和项目之间有一个类似的连接表,如下所示:

user_id int
item_id int
item_type string
created_at datettime

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

对此的明显反应是在项目中存储计数器,用于持续计数.但是,这不起作用,因为谁喜欢一个项目很重要,既可以显示在项目旁边,也可以隐藏用户已经喜欢的东西的类似按钮.

我的计划是在所有可爱的项目中添加一个文本字段,我将在其中存储一个序列化数组.这样,项目的每一次拉动都会附带一个喜欢它的完整列表.有没有更好的方法来做到这一点,还是这是推荐的方法?

您是否有理由相信您的数据集将会如此之大以至于加入太昂贵了? Postgres虽然没有最快的RDBMS那么快,但现在相当快.我曾经运行过一个每天都有数百万次网页浏览的网站,并且需要一些非常复杂的查询来生成每个页面.通过一些简单的缓存,我们能够在非常适度的硬件上运行它.

当你进行非规范化时,你会放弃使用RDBMS的许多好处.如果我知道必须,我只会这样做.如果是这种情况,我会考虑使用其他东西,比如简单的键/值数据库,用于该数据.但我认为,如果您拥有大量数据,情况可能就是这种情况.

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号