如何为Web应用程序的数据实现修订/版本控制

时间:2012-04-24 06:45:09

标签: version-control

我相信Wordpress会将多个帖子条目存储为"修订"但我认为太空使用效率非常低?

有更好的方法吗?我认为gitit是一个使用GIT进行版本控制的Wiki,但它是如何完成的?例如。我的应用程序是在PHP中,我必须让它与GIT交谈以提交和检索数据?

那么,在Web应用程序中实现版本控制的好方法是什么(例如在博客中可能是帖子内容)

2 个答案:

答案 0 :(得分:12)

我最近实现了这样一个系统 - 它使用了取代记录的概念,以及先前和当前的链接。我做了大量关于如何最好地实现这一目标的研究 - 最后我得到的模型类似于Wordpress(和其他系统) - 将更改存储为新记录并使用它。

考虑到所有可用的选项,空间实际上是创作内容的最后一个问题,例如帖子 - 媒体文件占用的空间更多,而且无论如何都不能存储为增量。

在任何情况下,Git的工作方式几乎完全相同,因为它存储了每个修订版的整个内容,除了它最终将打包成增量(或者当你要求时)。

Git Storage Object graph

回到1990年,我们使用SCCS或RCS,有时只有30mb的磁盘空间,我们真的需要版本控制才能有效避免耗尽存储空间。

鉴于现代系统上的平均可用存储量,使用增量来节省空间并不值得所有相关的恶化。你可以说这是浪费空间,但我认为从长远来看,以原始形式存储未压缩的东西会更有效率

  • 它更快
  • 搜索旧版本更容易
  • 查看
  • 的速度更快
  • 更容易跳到一组更改的中间,而不必处理大量的增量。
  • 实现起来要容易得多,因为您不必编写增量生成算法。

此外,标记与具有增量的纯文本一样,特别是在使用wysiwyg编辑器进行编辑时。

答案 1 :(得分:2)

保留一张表格,其中包含最新版本的制品

保存新版本时,将当前文件移到存档表中并在其上放置版本号,同时在第一个表中保留最新版本。

归档表可以具有属性ROW_FORMAT = COMPRESSED(MySQL InnoDb示例)以占用更少的空间,并且由于很少访问它而不会出现性能问题。是的,只是存储更改集有点开销,但是如果你做一些数学运算,你可以在几乎没有空间的情况下保留大量的修订,因为你的文章无论如何都是高度可压缩的文本。

例如,整个页面的源代码是11Kb压缩的。这为1Mb提供了近100个版本。相比之下,普通文章相当小,平均可以在1Mb上给你500-1000篇文章/版本。你有可能负担得起。