我正在我的rails应用程序内部创建一个通知系统,我想知道什么是更好的规模。
每次创建新通知时,我都可以为用户创建一个名为notifications_count
和UPDATE
的列,并在每次查看通知时清除计数时UPDATE
。
我也可以在Notifications表上运行一个计数,并用user_id
和一个标志unread
过滤它。
通知将成为此应用程序的一大特色,即使对于个人用户,此表的大小也会非常快。
鉴于该表最终将包含大量数据,哪种方法最好?
还有另一种解决方案可以更好地扩展吗?
从关系建模的角度来看,使用带有计数的额外列将是多余的,因此很糟糕。
但是,它会使计数的查询速度更快,而且会以数据修改期间的额外工作为代价。
我会做出决定取决于计数与数据修改的查询的相对频率。如果对计数的查询将是您经常查询的一个,我会牺牲纯度来表现。
该决定主要与数据库大小无关。