繁体   English   中英

如何存储像google docs这样的文档?

[英]How to store documents like google docs?

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

它使用纯RTF / ODF文件还是自己的数据库? 他们如何实现版本控制和撤消/重做功能?

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

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

运营转型

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

基本思想是每个操作都具有上下文,例如“删除第五段中的第四个单词”或“在按钮后添加输入框”。 客户端都通过服务器相互发送操作。 客户端和服务器各自保留自己的文档版本,并在出现时应用操作。

当操作具有重叠的上下文时,有许多规则可以解决冲突。 就像您无法修改已删除的内容一样,因此删除必须在该上下文的一系列并发操作中排在最后。

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

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

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

看一下MediaWiki,它是开源的,基本上可以满足您的要求(即看一下他们的表和代码)。

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

可能的话,您应该考虑利用Google云端硬盘的公共API。 有关详细信息,请参见链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM