瞎扯淡 在线文档编辑软件是如何保存数据的?

stephen · 2016年10月04日 · 最后由 chunlea 回复于 2016年10月04日 · 2480 次阅读

在线文档编辑软件是如何保存数据的?类似石墨、google docs 等。是不是和富文本编辑器一样把一些 html 保存到数据库里,然后才转换成 word、excel 或者 ppt?

这是个哲学问题,数据库是不是存数据的库?是不是存数据的库就叫数据库?能不能把数据存在数据库以外的地方?把数据存在数据库以外的地方叫不叫数据库?先有数据还是先有数据库?

文档转换提供一个工具 http://pandoc.org/

富文本的意义在于文本内容、页面布局的准确描述,是一个非常容易结构化的东西。但是,形成复杂文档排版,可能就需要处理各种复杂的布局需求,比如 Word 文档里面图片的居中、大小、边框等等。Word 的 docx 文档格式采取的是 https://zh.wikipedia.org/wiki/Office_Open_XML。所以如果你想存储类似 Word 这样的复杂布局的文档,你需要一种可以准确描述复杂布局的语言。XML,以及 XML 的子集 HTML 都是可以的。所以第一步是确定一种描述语言。

确定了描述语言之后,描述语言可以是纯文本的,所以对于纯文本,存数据库就没啥压力了。然后你就要设计各种同步策略,比如客户端增加了一个段落,增加了一个标题,插入了一张图片,图片修改了一下在页面的位置,所以你需要设计一种高效的策略把用户的操作准确同步到你的服务器存储的关于该文档的描述。然后你要考虑是不是要让用户做到可追溯,每一步的操作是不是要可以回滚,重做。好吧,看起来是个坑,我也没有搞过。

还有一个问题,你是不是要设计一个所见即所得的编辑器,打住,感觉这个我谈不下去了…… 虚。

然后文档之间的转换,无非是用另外一种文档描述语言描述文档的布局和内容。当然,工具海了去了。

所以核心是有一个可以结构化的描述语言。

当然,我在扯淡。 😆

需要 登录 后方可回复, 如果你还没有账号请 注册新账号