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

我正通过Heroku在Postgres上运行Rails应用程序.

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

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

user_id int
item_id int
item_type string
created_at datettime

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

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

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

解决方法

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

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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...