我试图弄清楚如何设置数据库和/或模型以处理各种徽章。让我们堆叠溢出 徽章 举个例子。每个规则都有不同的规则,有些可能只是一个不同的变量(例如10条评论与100条评论)。

我的问题是如何在应用程序中设置此类型验证/检查?每个徽章都应该有自己的方法吗?

有帮助吗?

解决方案

因此,SQL Server代理作业可以定期运行以制定统计信息。满足条件时,工作中的存储过程将插入徽章/etc表中。

触发器将是另一个选择,但是对于多个用户的范围,他们的执行不能延迟。

其他提示

如果需要的话,我将如何实施它:

我将设置一些队列管理器(有很多这样的软件)并编写经纪人,可以处理队列中的消息。

每次发生任何事件时,例如:您查看了一个主题,您对评论进行了编辑,编辑了答案,您编辑了另一个人的答案,投票等等 - 您收集了更多消息,并带有事件描述。是的,会 真的 那里大量消息。

收集大量消息后 - 您可以启动一个经纪人,该代理将按计划或实时处理消息。

使用此模式,您可以根据需要将经纪人扩展到复杂的徽章。

我想象有些是实时计算的,而另一些是在间歇性运行的过程中计算的。

例如,对于当您的答案获得10次投票时出现的徽章,可以实时计算实时,而性能很少。

另一方面,对于检查您是否达到每日声誉x X次数的次数的徽章,您可能只想在每天结束时检查一下。

关键的问题是使事情快速运行。 Stack Overflow每天都会收到数千个问题(也许是数以万计的)问题,可能会有数十万条评论。任何不小的计算的东西都应在单独的过程中运行。它可以使核心功能紧密,有限和干净,从而可以高性能。在核心发布系统之外的过程中运行复杂的计算可以使您这样做,而不会影响用户使用该站点的能力。如果任务足够复杂,则可以通过在多个计算机上运行相同的进程来水平扩展。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top