ruby-on-rails - 更新用户表上的通知计数或通知表中的 SELECT count(*) 更好?
问题描述
我正在我的 rails 应用程序中创建一个通知系统,我想知道什么会在规模上更好地工作。
我可以为调用的用户创建一个列,notifications_count
每次UPDATE
创建新通知时都会创建一个列,并且UPDATE
每次查看通知以清除计数时都会创建一个列。
我还可以对 Notifications 表进行计数,并通过user_id
和 标志对其进行过滤unread
。
通知将成为此应用程序的一个重要功能,即使对于个人用户,此表的大小也会非常快速地增长。
鉴于该表最终将包含大量数据,哪种方法最好?
是否有另一种可以更好地扩展的解决方案?
解决方案
从关系建模的角度来看,拥有带有计数的额外列将是多余的,因此很糟糕。
但是,它会使查询计数更快,但代价是数据修改期间的额外工作。
我会根据计数查询与数据修改的相对频率来做出决定。如果对计数的查询将成为您非常频繁的查询之一,我会为了性能而牺牲纯度。
该决定主要与数据库大小无关。
推荐阅读
- java - 如何为 modelAttribute 注释函数编写模拟测试
- javascript - 在Javascript中单击同一div中的按钮时输出数据
- mysql - 将 Merge 语句从 teradata 迁移到 MYSQL
- java - 没有找到 Spring Boot Thin Launcher exec jar
- mysql - 当需要几种连接类型时,是否可以抑制 UNION?
- sass - 如何将 '%' 添加到值中?
- opencv - 关于在 Debian 10 arm64 上安装 libgtk-3-dev 的问题
- javascript - 包装一个函数来延迟该函数的调用?(在 React 中删除任务)
- sql - 检索最新日期预言机
- android - 如何通过下拉刷新 Expo Webview 中的页面?