文字处理,自动保存MongoDB

时间:2013-12-27 19:56:17

标签: node.js mongodb caching architecture

我的问题是关于我正在研究的项目的服务器端逻辑的结构,它基本上是像Google Documents这样的文字处理器,它是关于“自动保存”功能以及如何有效地设计它,因为它对于数据库来说非常重要。

这就是项目现在的结构:

  • 用户可以创建文档,文档有多个页面
  • 每个页面都是不同的章节,用户一次只能编辑一个页面。
  • 页面上的HTML5 contentEditable元素由Javascript监听,经过大量的按键后,页面上的整个内容将提交给服务器“POST // page /”+整页数据
  • 服务器使用Node.js和MongoDB存储文档/页面内容,并且每隔x秒保存页面内容使其成为一个非常繁重的操作。

我们需要优化写操作,可能在服务器上添加“写”缓存层(Redis等?)是否有人对这些架构决策有任何经验?

1 个答案:

答案 0 :(得分:1)

在这种情况下,写锁争用可能是最重要的瓶颈,因为MongoDB具有数据库级锁定。 Sharding是正确的解决方案(How to speed up MongoDB Inserts/sec?)。使用MongoDB很容易,但请确保在进行分片之前优化其他所有内容。

如果您当前的数据库目前处于大量写入状态,我建议您阅读Mailbox's solution to this problem

在这种情况下缓存会很困难,因为当其他人进行编辑时,您必须保持无效。它肯定会帮助读取查询,但我认为写入将是您最大的瓶颈。

另外,请确保使用显示器检查性能。使用像MMS这样的服务为你做。