我应该为多用户项目协作应用选择什么NoSQL DB?

时间:2012-03-29 17:46:42

标签: mongodb couchdb redis

我正在尝试用PHP或Node.js开发 iphone app后端(我还没有决定)。该应用程序将类似于多用户项目协作工具。例如,来自iPhone的每个用户都可以创建项目,其他受邀成员可以讨论他们想要花费多少 在这个特定的项目上。每个用户都可以添加单个费用服务器将处理总费用计算并更新回所有用户项目成员。所以它不太可能是一个实时应用程序,但仍然有很多需要由数据库完成的更新记录和更新。

据我用Google搜索...

CouchDB比MongoDB和Radis慢一点。

MongoDB速度很快,但有可能丢失旧数据。由于我的项目的所有数据都必须持久,我是否应该依赖MongoDB?

Radis比这两个要快得多,但它对我的项目来说太过分了,需要花更多的时间来学习。

无论如何,我仍然希望从那里听到那些经验丰富的人...我的场景最适合哪种NoSQL DB?

1 个答案:

答案 0 :(得分:3)

解决您的一些疑虑:

使用MongoDB,耐用性的优先级较低,可以实现更高的性能水平。它不会立即将数据写入磁盘,而是将批量更改应用于磁盘。默认情况下,MongoDB从版本1.9.2开始启用Journaling - 这意味着写入性能略有降低,但能够在恢复过程中自动将数据库恢复到一致状态。 Replication解决了长期数据持久性问题

通常不能假设一个数据库比其他数据库更快。在线提供的基准测试通常无法成功模拟真实场景,更不用说特定应用的情况了

应该帮助您做出决定的因素 -

  • Redis是一个键值存储,MongoDB是一个文档存储。您应该尝试使用它们来模拟场景(您可能还需要查看列存储和关系数据库)。选择一个比其他人更容易建模数据的工具。如果特定数据库要求您执行非常复杂的查询(针对您的方案),您将需要避免这种情况

  • NoSQL系统通常需要 - 作为用户,您可以了解它如何工作到比关系更深层次的抽象级别。各种系统都有自己的权衡,以实现某些目标(如性能或耐用性)。你应该明白这些并准备好弄清楚

  • 遇到麻烦时,您可能需要获得帮助。优先考虑具有良好文档和活跃的开发人员社区(或随时可用的商业支持)

希望这有帮助