不知道能否以文件的形式存在?如果保存为一个文件,那修改时如何应用?
Google Doc 会有两个形式,一种是存每一次修改的 event,另一种是存文档的状态。文档的状态可以用 plain text 来存储,当需要 export 的时候,再按照需要输出的格式来编码。
可能还是不太明白,这里的每一次修改是一个增量更新么?不知道这些更新会不会立即应用到文档:
- 如果没有,那是不是要有一个时机去应用这些更新?
- 如果有,每次更新需不需要将整个文档 load 到内存,修改完毕后再保存?
其实不单单是 google docs,还有 sheet 我也有同样的疑惑,sheet 涉及到行和列,感觉更复杂。
每一次发生更新以后,数据库增加一条修改的 event。当读取文档的时候,我们先查看存储文本内容的数据库以及缓存的版本是不是最新的。如果是的,直接返回;如果不是,计算出最新的文本状态,返回给用户,同时更新到数据库以及对应的缓存。
所以整个文本内容的更新并不是在即时发生的,而是像缓存一样,读取时候才会生成,之后再读就不需要计算了。