【问题标题】:How does one store history of edits effectively?如何有效地存储编辑历史?
【发布时间】:2010-11-16 05:13:29
【问题描述】:

我只是想知道像 stackoverflow 和 wikipedia 这样的网站,它们会无限期地存储编辑历史并允许用户回滚编辑。有人可以推荐任何关于如何使用任何合适的技术(如数据库等)来做到这一点的资源/书籍/文章

非常感谢!

【问题讨论】:

    标签: history edit


    【解决方案1】:

    有许多选项,最简单的当然是单独记录所有版本。对于像 Stack Overflow 这样的网站,帖子通常不会被多次编辑,这是合适的。但是对于像维基百科这样的东西,需要更聪明地节省空间。

    对于 Wikipedia,页面最初以每个版本单独存储在 text table 中。定期将多个旧版本压缩在一起,然后打包到一个字段中。由于会有很多重复,所以这样可以节省很多空间。

    您可能还想了解一些版本控制系统是如何做到的——例如,subversion 使用skip deltas,其中修订存储为与历史中途修订的差异。这意味着一个人将不得不检查最多 O(lg n) 个修订来重建自己感兴趣的修订。

    另一方面,Git 使用更类似于 Wikipedia 的方法。

    修订首先存储为单独压缩的“松散”对象,然后 git 定期获取所有松散对象,根据某种复杂的启发式对它们进行排序,然后在“附近”对象之间构建压缩增量并将结果转储为packfile
    重建文件所需读取的修订数量受包构建过程的参数限制。这有一个有趣的特性,在某些情况下,可以在不相关的对象之间构建增量。

    【讨论】:

    • 我不知道跳过增量,我
    猜你喜欢
    • 2014-12-08
    • 2016-07-22
    • 2019-01-01
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2010-10-01
    相关资源
    最近更新 更多