存储徽章标准的最佳方法是什么?

时间:2009-02-07 01:53:37

标签: architecture badge

我一直在考虑如何在新网站上实现类似于SO的徽章功能。存储徽章标准的最佳方法是什么?

两个想法:

  • 所有代码
  • '第二系统' - 创建用于定义徽章及其标准的元架构。将一些信息存储在数据库中,并让代码查询它以找出徽章及其标准。

有更好的方法吗?

2 个答案:

答案 0 :(得分:37)

规则。

您可以在系统中创建事件,并在事件流处理器中使用规则。

具体来说,假设您有一个“10个帖子”的徽章。您不会为每个帖子运行“select count(*)from posts where user =:user”。相反,你有一个简单的规则来监视每个帖子,并“计算它们”,将规则状态存储在用户配置文件中。

这样“制作10个帖子”就像“制作1,000,000”帖子一样便宜。

这也使系统更具可扩展性。

答案 1 :(得分:18)

我同意Will的意见。

在页面上创建“事件”,以便每次事件发生时,即。如果用户删除帖子,它将使用该事件查询事件模块,例如EVENT_USER_DELETE_POST,然后您可以选择该事件并基于它构建查询。然后,您可以决定是否颁发徽章。

这将保持两个逻辑分离并保持模块化设计。以这种方式实现起来应该很容易。

唯一的缺点是,如果事件没有被“捕获”,那么用户可能已经获得了徽章标准,但尚未获得奖励。但是,这绝不会发生。我能想到的唯一情况是手动操作数据库。