我对Google docs如何在服务器端存储文档感兴趣,因为我需要创建类似的应用程序。
它是使用纯RTF / ODF文件还是拥有数据库? 他们如何使版本控制和撤消/重做功能成为可能?
如果有人知道这个问题,请与我分享。
答案 0 :(得分:6)
专门针对Google文档的工作原理回答您的问题。他们使用一种名为
的技术您可以使用以下列出的操作转换引擎之一:https://en.wikipedia.org/wiki/Operational_transform#OT_software
基本思想是每个操作都有一个上下文,例如"删除第五段中的第四个字"或者"在按钮"之后添加一个输入框。客户端都通过服务器发送彼此的操作。客户端和服务器各自保留自己的文档版本,并在它们到来时应用操作。
当操作具有重叠的上下文时,有许多规则可用于解决冲突。就像你无法修改被删除的内容一样,删除必须在该上下文的一系列并发操作中持续存在。
各种客户端和服务器可能会不同步,因此您需要使用辅助算法来保持一致性。一种方法是在检测到冲突时从服务器重新加载数据。
- 这是我几年前在问同一件事时从教授那里得到的答案。
答案 1 :(得分:0)
您应该使用数据库。也许是存储每个文档修订版的表。首先,找到一种方法来确定更新是否重要。您可以存储次要更改客户端进行重做/撤消,然后定期或按某些条件(例如,用户点击保存),为每个修订创建一个数据库条目(您可以存储更改字节,添加字节,删除字节,等)。
看看MediaWiki,它是开源的,基本上就是你所要求的(即看看他们的表和代码)。
当用户请求导出文档时,通常会生成并提供RTF / ODF。
答案 2 :(得分:0)
可能您应该考虑使用Google Drive的公共API。有关详细信息,请参阅link。