以 SO 为例,假设某个问题的question
oranswer
被删除,但在被删除之前获得了一些赞成票。我想这些积分仍然授予作者(如果不是,让我们假设他们是),那么 SO 如何保持准确的声誉总数?
问题/答案是否实际上并未从数据库本身中删除,并且可能具有已处理并决定问题或答案是否可见的状态字段?
或者,它们实际上已被删除,并且声誉依赖于系统在计算每张选票时持续准确,并且不一定有它的历史记录(例如记录投票的问题)
以 SO 为例,假设某个问题的question
oranswer
被删除,但在被删除之前获得了一些赞成票。我想这些积分仍然授予作者(如果不是,让我们假设他们是),那么 SO 如何保持准确的声誉总数?
问题/答案是否实际上并未从数据库本身中删除,并且可能具有已处理并决定问题或答案是否可见的状态字段?
或者,它们实际上已被删除,并且声誉依赖于系统在计算每张选票时持续准确,并且不一定有它的历史记录(例如记录投票的问题)
据我所知,SO 使用软删除和硬删除的组合。我可以肯定地说,我已经失去了因发布者或版主删除的问题而获得的声誉。然而,这不是你问题的重点,所以......
如果您希望能够推断出准确的总数,特别是如果您希望能够计算该总数(SO 允许您通过查看积分历史记录的方式),那么您需要保留交易信息,而不是运行总数.
如果您希望点的事务日志具有参照完整性,那么您将需要使用软删除机制来隐藏“已删除”的问题。
如果您不保留交易日志并且您没有可软删除的问题来备份您的交易积分日志,那么您将无法重新计算或证明积分总数。您也将很难显示随着时间的推移获得的积分和随着时间的推移累积的声誉的图表。您可以通过保持每日点快照来制作这些图表,但这在存储方面会比仅跟踪上下投票更加繁重和昂贵。