所以我有以下域名模型:
Article
这基本上是一篇博文,目前是一个实体。
现在,我想添加以下功能:
现在,如果我做一些计算,我应该能够确定哪些文章尚未被阅读。
现在,如果我做一些计算,我应该能够确定自最新用户的评论帖以来是否有一些新发布的评论。
基本上,这两个功能(阅读和跟随)共享属性,文章ID,用户ID和阅读/操作日期。
请注意,如果遵循文章,然后阅读,则应使用阅读日期。
因此,我可以使用相同的对象并添加额外的属性来标记它。
你有任何设计理念吗?
请注意,有很多文章&用户,我使用的是Doctrine2和MySQL,但这适用于任何语言。
答案 0 :(得分:1)
为确保您的应用程序能够很好地扩展,我会在触发事件时在本地进行计算。即有人添加评论,它会导致系统检查谁对该新评论进行了投资。否则,您最终会得到一个计划任务处理所有数据,这些数据最初会正常运行,但随着用户,文章和评论之间的关系增加,工作量将呈指数级增长。
您还可以考虑使用Map / Reduce模式,Ayende有一篇很好的介绍文章,它几乎与您描述的应用程序域相同(文章,评论等)。
对于标记特定用户阅读的文章或评论的事件,这既不是文章也不是用户的事情。如果您正在使用文档数据库并希望将这些数据存储在用户中,那么它可能会随着时间的推移积累相当多的数据,我更倾向于将数据存储在新实体中或者存储在文章中(从理论上讲,这将有一个初步的兴趣,他们的兴趣在一个代表它的受欢迎程度的水平。
希望其中一些可能会有所帮助。