我一直在使用MongoDB(通过MongoLab)进行我的所有Web应用程序开发,并且非常喜欢它的易用性以及与AngularJS的集成。然而,最近我和很多与MongoDB一起做传福音的人一起开始退缩。我的一个SYSADMINS特别说,“不要使用Mongo,我们正在退出它......主要是因为我们永远无法确定数据实际写入磁盘”。
我发现这是一个重大的失败。从那时起,我检查了CouchDB,我觉得很酷。它仍然使用JSON,还提供GUI(Futon)和基本CLI。这让我很困惑,因为Mongo似乎拥有强大的追随者,用户群和社区。在我真正开始开发项目并将我的项目从Mongo迁移到Couch之前,我想了解一下开发人员用来获取想法的脉搏,如果这只是FUD或实际问题。
答案 0 :(得分:1)
MongoDB专注于速度,但这并不意味着您永远无法确定数据是否已写入磁盘。
在connection object中,您可以指定调整写入问题的选项。更重要的是:
我把链接放到Python驱动程序,因为Python是一种非常高级的语言,但是每个MongoDB驱动程序都可以使用这些选项。
如@ asya-kamsky所述,即使你选择 w> 0 ,MongoDB只会更新mmapped file,更改只会在syncDelay之后fsync到磁盘。
无论如何,如果您需要改进durability,则应使用副本集来减少single point of failure。
答案 1 :(得分:1)
不要使用Mongo,我们正在退出...主要是因为我们永远无法确定数据是否实际写入磁盘
嗯,jockalled acked写道?
它仍然使用JSON
JSON并不好,BSON也是JSON的更高级版本,具有更具代表性的符号,允许存储和表示JSON无法实现的对象。
并提供GUI(Futon)和基本CLI。
有一个基本的CLI,你可以为MongoDB获得很多这样的GUI,如果那就是浮动你的船。
在我真正开始开发项目并将我的项目从Mongo迁移到Couch之前,我想了解一下开发人员用来获取想法的脉搏,如果这只是FUD或实际问题。
我在使用CouchDB时发现的一个注释,你会发现它使用了更多的空间,不仅维护了JSON,还维护了它所具有的版本控制机制。不仅如此,它的Map Reduce还不如MongoDBs聚合框架(坦率地说)。
但是,我应该强调,在我放弃它之前,我只使用了少量它。