您将如何建模读/跟系统?

时间:2013-03-06 15:40:15

标签: oop model domain-driven-design

所以我有以下域名模型:

Article这基本上是一篇博文,目前是一个实体。

现在,我想添加以下功能:

  • 当用户查看文章(在其浏览器中)时,会发出api调用以“标记”正在阅读的博客文章。
  

现在,如果我做一些计算,我应该能够确定哪些文章尚未被阅读。

  • 当用户向某篇文章发表评论时,会调用api来“标记”该博客帖子。
  

现在,如果我做一些计算,我应该能够确定自最新用户的评论帖以来是否有一些新发布的评论。

基本上,这两个功能(阅读和跟随)共享属性,文章ID,用户ID和阅读/操作日期。

请注意,如果遵循文章,然后阅读,则应使用阅读日期。

因此,我可以使用相同的对象并添加额外的属性来标记它。

你有任何设计理念吗?

请注意,有很多文章&用户,我使用的是Doctrine2和MySQL,但这适用于任何语言。

1 个答案:

答案 0 :(得分:1)

为确保您的应用程序能够很好地扩展,我会在触发事件时在本地进行计算。即有人添加评论,它会导致系统检查谁对该新评论进行了投资。否则,您最终会得到一个计划任务处理所有数据,这些数据最初会正常运行,但随着用户,文章和评论之间的关系增加,工作量将呈指数级增长。

您还可以考虑使用Map / Reduce模式,Ayende有一篇很好的介绍文章,它几乎与您描述的应用程序域相同(文章,评论等)。

对于标记特定用户阅读的文章或评论的事件,这既不是文章也不是用户的事情。如果您正在使用文档数据库并希望将这些数据存储在用户中,那么它可能会随着时间的推移积累相当多的数据,我更倾向于将数据存储在新实体中或者存储在文章中(从理论上讲,这将有一个初步的兴趣,他们的兴趣在一个代表它的受欢迎程度的水平。

希望其中一些可能会有所帮助。

相关问题