2

我正处于 Rails 的开始阶段,想构建类似37Signals 写板的东西,这样我就可以学习并感觉“完成”,但不知道从以下部分开始:

  1. 降价格式的文本是否存储为数据库中的原始文本?
  2. 每个编辑/版本是否存储为数据库中的原始降价文本?
  3. 最重要的是我们如何找出两个或多个版本的差异?有没有为此设置的算法?
4

1 回答 1

1

虽然我显然无法回答它是如何在 37Signals 实现的,但这是我的想法:

  1. 由于写板支持编辑以格式化形式存储降价,这意味着每当有人要编辑降价时,您都必须将格式化的 html 恢复为降价。我非常怀疑这将是一个好主意,尽管有人可能会争辩说,如果编辑与不编辑的比率非常小,则将降价存储格式化后的性能优势(因为您不必将降价转换为 html)将是一个巨大的优势。您还可以选择将这两个版本都保存在数据库中或仅将格式化版本保存在缓存中。

  2. 由于写板可以变得非常大,您可能会存储每个版本的差异(参见 3.)以及完整的最新版本。这样,无论何时显示写板,您都可以获取完整的最新版本,而不必从差异中构建它,同时通过不以完整形式存储每个修订来节省空间。

  3. 您可以使用diff,这是在 vcs 中所做的,例如 svn 和 git,diff 为您提供了两个文本文件之间的区别:更改、插入和删除了哪些字符。

于 2011-06-16T19:09:55.177 回答