像 stackoverflow 和 wikipedia 那样存储修订更改涉及哪些算法和流程?
是否只保留一份消息副本?如果是的话,这只是最新的副本吗?那么只有返回到以前版本的更改才会从那里存储? (这将有助于更快地显示主要消息)。 或者存储完整的消息?如果是的话,是否在每个显示器上进行比较?
什么算法最适合确定消息中的确切更改?这些数据如何存储在数据库中?
如果有人确切知道维基百科或 stackoverlfow 是什么,我很想知道。
最佳答案
Mediawiki(维基百科的软件)存储所有修订版的全文,请参阅 database schema 。 text table 中的每个条目Mediawiki 中有一些标志可以告诉您内容是否已被例如gziped,使用标准压缩通常是最明智的选择。
我无法告诉您如何通过算法进行差异,但是无论您使用哪种算法,都应该从文本的两个完整版本中进行比较。即从数据库中获取旧对象和新对象的完整版本,然后进行比较。这使得可以轻松地更改比较算法。
Git是 Unix 应用程序的一个很好的例子,它可以进行非常便宜的(存储和速度)增量存储。有一些 wiki 可以使用 git,例如ikiwiki ,但我猜你想用数据库来做。
关于algorithm - 存储消息的修订更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/80141/