ruby-on-rails - 表中的多个数据库记录与数据库查询?什么是最好的性能?

标签 ruby-on-rails postgresql ruby-on-rails-4

应用运行于:ruby 2.0rails 4postgresql

1.多表的故事 - 现在如何运作:

一个项目有很多用户,作为成员

此外 project 有许多 posts,当创建一个 post 时,为每个 创建一个 notification >项目用户

假设如果项目 A100 个用户,我们将在数据库中有 100 个通知,这将加载数据库很多重复项。

但是用户可以删除自己的通知,可以查看它,我们可以用用户特定的数据更新他的通知。我们将使用 rake 任务 删除比特定时间间隔早的通知。

<强>2。多个数据库查询 - 我们想要做什么:

有一个想法,即为一个事件创建一个通知,并使用一个名为notifications_users 的表,我们在其中使用多对多关系如果当前用户阅读了通知,如果该用户从他的通知选项卡中删除了该通知等,则会保留有关通知的信息。

我认为这样做的缺点是多个数据库查询,因为当我们需要查找有关通知和用户的信息时,我们将不得不查找 notification_users 表以获取需要的信息。

另外,通过这种方式建立关系,将更难从旧通知中清理数据库,因为我们不知道该通知是否已被某些用户读取。

谢谢。

最佳答案

选项 (1.) 似乎很合理,如果您可以保持通知模型精简 — 例如 user_id、activity_id、时间戳,以及可能还有几个标志,那么就不会期望不合理的性能损失,因为它看起来像非常普通的关系模型,我希望数据库能够轻松处理它。

如果您让通知过期时间紧迫,这意味着通知不应增长,或者如果它增长,例如当用户刚刚放弃帐户时,我会寻找针对问题的具体解决方案,如出现的那样。

Assembla.com我们通过电子邮件进行通知,这对我们来说效果很好,我想说。因此,也许在某个时候,您可能也想考虑这个选项。

在我看来,(2.) 不能满足业务需求,如果您不考虑它们,那么可能也不值得考虑这个选项。

关于ruby-on-rails - 表中的多个数据库记录与数据库查询?什么是最好的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17789134/

相关文章:

ruby-on-rails - 如何从句子中删除单词数组?

postgresql - PostgreSQL 中 UUID 的校验和

ruby-on-rails-4 - 在发送 rails 4 之前保存每封电子邮件

sql - 获取 PostgreSQL 中两个列表之间的差异

select - 找不到名称关联-Nested Form Rails 4

javascript - 无法让 Masonry-Rails Gem 在我的应用程序中工作

ruby-on-rails - Rspec:验证失败:名称已被占用

ruby-on-rails - 如果我已经有一个没有任何测试的大型代码库,如何开始编写测试?

ruby-on-rails - 指定gem安装目录

sql - 有没有办法根据 Max(date) 在 postgres 中获取组的第一行