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

Mongodb 我应该为多用户项目协作应用程序选择什么NoSQL DB?,mongodb,couchdb,redis,Mongodb,Couchdb,Redis,我正在尝试通过PHP或Node.js开发iphone应用程序后端(我还没有决定)。该应用程序将类似于多用户项目协作工具。例如,iPhone的每个用户都可以创建一个项目,其他受邀成员可以讨论他们希望在这个项目上花费多少。每个用户都可以计算单个成本,服务器将处理总费用的计算,并更新回所有项目成员。因此,它不太可能是一个实时应用程序,但仍然有很多更新记录和更新需要由数据库完成 据我在谷歌上搜索到的 CouchDB比MongoDB和Radis稍微慢一点 MongoDB速度很快,但有可能丢失旧数据。由于我

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

据我在谷歌上搜索到的

CouchDB比MongoDB和Radis稍微慢一点

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

Radis比这两个要快得多,但它对我的项目来说是一个过度的杀伤力,需要花费更多的时间来学习


不管怎么说,我还是想听听这里那些有经验的人的意见。。。什么样的NoSQL DB最适合我的场景?

解决您的一些问题:

在MongoDB中,耐久性被赋予较低的优先级,以实现更高级别的性能。它不会立即将数据写入磁盘,而是将批量更改应用于磁盘。MongoDB自1.9.2版起默认启用-这意味着写入性能略有降低,但能够在恢复过程中自动将数据库恢复到一致状态。解决长期数据持久性问题

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

应帮助您决定的因素:

  • Redis是一个键值存储,MongoDB是一个文档存储。您应该尝试使用这两种方法对场景进行建模(您可能还希望查看列存储和关系数据库)。选择一个比其他模型更容易为您的数据建模的模型。如果某个特定的数据库要求您执行非常复杂的查询(针对您的场景),您将希望避免这样做

  • 作为用户,NoSQL系统通常要求您理解它是如何工作的,并将其抽象到比关系系统更深的层次。各种系统都有自己的权衡,以实现特定的目标(如性能或耐用性)。你应该理解这些,并做好准备弄脏你的手

  • 遇到麻烦时,您可能希望获得帮助。最好是有良好文档和活跃的开发人员社区(或现成的商业支持)的人


希望这能有所帮助

因为项目规范含糊不清且不完整,答案是“我们不知道”。所以选一个试试。不起作用-选择另一个。我从MongoDB开始——它是我的首选数据库。另外,这个项目的传统RDBMS有什么问题?@Dor,每个“项目”事件都会有很多插入和更新事件。因此,我担心MySQL将成为瓶颈,因为10个不同项目的100个用户正在更新和插入数据,每次更新都需要广播给每个项目的所有成员。MySQL可以吗?我不是MySQL专业人士,所以我很认真:)谢谢你的回答,埃尔维斯。我有一些使用CouchDB的经验,由于缺乏知识,我不太习惯使用CouchDB创建查询。在试用MongoDB之后,我可能错了,它提供了更灵活的查询风格。这种情况也会发生在你身上吗?我对couchdb的经验微乎其微,但是,是的,我遇到过这样的情况:对一个数据存储的查询与对另一个数据存储的查询相比感觉非常自然。