algorithm - 存储消息的修订更改

标签 algorithm version-control

像 stackoverflow 和 wikipedia 那样存储修订更改涉及哪些算法和流程?

是否只保留一份消息副本?如果是的话,这只是最新的副本吗?那么只有返回到以前版本的更改才会从那里存储? (这将有助于更快地显示主要消息)。 或者存储完整的消息?如果是的话,是否在每个显示器上进行比较?

什么算法最适合确定消息中的确切更改?这些数据如何存储在数据库中?

如果有人确切知道维基百科或 stackoverlfow 是什么,我很想知道。

最佳答案

Mediawiki(维基百科的软件)存储所有修订版的全文,请参阅 database schematext table 中的每个条目Mediawiki 中有一些标志可以告诉您内容是否已被例如gziped,使用标准压缩通常是最明智的选择。

我无法告诉您如何通过算法进行差异,但是无论您使用哪种算法,都应该从文本的两个完整版本中进行比较。即从数据库中获取旧对象和新对象的完整版本,然后进行比较。这使得可以轻松地更改比较算法。

Git是 Unix 应用程序的一个很好的例子,它可以进行非常便宜的(存储和速度)增量存储。有一些 wiki 可以使用 git,例如ikiwiki ,但我猜你想用数据库来做。

关于algorithm - 存储消息的修订更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/80141/

相关文章:

c# - 如何在 C# 中检查加拿大社会保险号的有效性?

c++ - 是 VAR |= 1 << 2;可逆的?

git,不要在未跟踪文件列表中显示 *.pyc!

version-control - 使用 darcs 拉取已删除文件时出现冲突标记混淆

version-control - 在 Fossil 中修改工单时的电子邮件通知

Python:如何在我的包或存储库中安装包?

c++ - 一道面试题

algorithm - 寻找文本差异的算法来检测并可以对相似的行进行分组

algorithm - : T(n) = 2T(n-1) + 3T(n-2)+ 1 的运行时间是多少

javascript - JQuery 1.4.2 → 1.4.3 的差异足以打破良好的旧图片库 †