如何存储谷歌文档等文件?

时间:2014-05-27 08:36:32

标签: javascript google-docs rtf odf

我对Google docs如何在服务器端存储文档感兴趣,因为我需要创建类似的应用程序。

它是使用纯RTF / ODF文件还是拥有数据库? 他们如何使版本控制和撤消/重做功能成为可能?

如果有人知道这个问题,请与我分享。

3 个答案:

答案 0 :(得分:6)

专门针对Google文档的工作原理回答您的问题。他们使用一种名为

的技术

Operational Transformation

您可以使用以下列出的操作转换引擎之一:https://en.wikipedia.org/wiki/Operational_transform#OT_software

基本思想是每个操作都有一个上下文,例如"删除第五段中的第四个字"或者"在按钮"之后添加一个输入框。客户端都通过服务器发送彼此的操作。客户端和服务器各自保留自己的文档版本,并在它们到来时应用操作。

当操作具有重叠的上下文时,有许多规则可用于解决冲突。就像你无法修改被删除的内容一样,删除必须在该上下文的一系列并发操作中持续存在。

各种客户端和服务器可能会不同步,因此您需要使用辅助算法来保持一致性。一种方法是在检测到冲突时从服务器重新加载数据。

- 这是我几年前在问同一件事时从教授那里得到的答案。

答案 1 :(得分:0)

您应该使用数据库。也许是存储每个文档修订版的表。首先,找到一种方法来确定更新是否重要。您可以存储次要更改客户端进行重做/撤消,然后定期或按某些条件(例如,用户点击保存),为每个修订创建一个数据库条目(您可以存储更改字节,添加字节,删除字节,等)。

看看MediaWiki,它是开源的,基本上就是你所要求的(即看看他们的表和代码)。

当用户请求导出文档时,通常会生成并提供RTF / ODF。

答案 2 :(得分:0)

可能您应该考虑使用Google Drive的公共API。有关详细信息,请参阅link