我相信你们所有人都曾在某个网站上看到过一些消息 - 即你登录后发现了“太平洋标准时间周二下午5点将有计划的维护停机时间”。然后你有消息的刻度线。当您单击它时,您不会再显示该消息。
现在,我的问题是如何在数据库中处理这个问题。即如果你有1M个注册用户并且你决定为每个用户存储这个“看到”的记录,你最终会得到一个1M表,必须在每次有人登录时读取。另一方面,如果你有10条消息那样 - 当然你的桌子增长得更快。最后,可能会有“Johnny,Harry,Diane和其他5位朋友更新了他们的个人资料。”
你可能每天都有10-50条消息。我想要考虑的是最好的方法。我过去实施了很多解决方案,但我正在重新思考,并且想知道社区中的其他人是如何处理这样的问题的!
编辑: @hakre 感谢您的评论。实际上,我确实描述了我在问题本身中处理它的一种方式。不要误解我,但如果我提出解决方案,答案往往会讨论那些我不喜欢的解决方案。
答案 0 :(得分:1)
你手上有NoSQL吗?
我使用redis,我会创建一个包含所有用户ID的集合作为集合的成员(如果用户应标记为已显示,则添加id)...检查用户是否看到了消息简单SISMEMBER
就足够了,而且是O(1)......
另外,seen
字段不需要任何db查询或alter table。