数据存储方案及优化
存储方案
目前使用的存储方案是 JSON.stringify() 字符串存储到 DB 中(也就是 eventBus.on('saved')、command.executeSave() 的返回值)
。
存在的问题
- 从上面的图看,每次修改一个元素,都会导致整个文档重新序列化,然后写入 DB,这显然是非常耗时的;
- 目前多媒体存储序列化时,转出的是 base64 编码字符串,这无疑增加存储字符长度;
优化方案
针对上诉存在的问题,提出下列可能的优化方向,仅供讨论:
- 减少文档的序列化次数,只对修改的元素进行序列化,然后写入 DB;
- 减少多媒体的序列化长度,如使用 base64 编码,转出为二进制,再转出为 base64 编码,这样,只需要一次序列化,减少一半的存储字符长度;
- 考虑压缩算法,如 LZMA、LZ4 等,对文档进行压缩,再写入 DB,这样,只需要一次压缩,减少一半的存储字符长度;
- 考虑使用增量更新,只更新修改的元素,而不是整个文档,这样,只需要一次序列化,减少一半的存储字符长度;