2013年Mongodb的现状

时间:2013-05-14 23:01:14

标签: mongodb couchdb nosql

我一直在使用MongoDB(通过MongoLab)进行我的所有Web应用程序开发,并且非常喜欢它的易用性以及与AngularJS的集成。然而,最近我和很多与MongoDB一起做传福音的人一起开始退缩。我的一个SYSADMINS特别说,“不要使用Mongo,我们正在退出它......主要是因为我们永远无法确定数据实际写入磁盘”。

我发现这是一个重大的失败。从那时起,我检查了CouchDB,我觉得很酷。它仍然使用JSON,还提供GUI(Futon)和基本CLI。这让我很困惑,因为Mongo似乎拥有强大的追随者,用户群和社区。在我真正开始开发项目并将我的项目从Mongo迁移到Couch之前,我想了解一下开发人员用来获取想法的脉搏,如果这只是FUD或实际问题。

2 个答案:

答案 0 :(得分:1)

MongoDB专注于速度,但这并不意味着您永远无法确定数据是否已写入磁盘。

connection object中,您可以指定调整写入问题的选项。更重要的是:

  • w :表示mongo客户端应等待的计算机数。如果将其设置为 N ,则mongo客户端将等待 N 计算机将此数据写入磁盘。如果您有replica sets
  • ,此选项非常有用
  • j :表示mongo客户端是否应等待将操作放在日志上。

编辑:

我把链接放到Python驱动程序,因为Python是一种非常高级的语言,但是每个MongoDB驱动程序都可以使用这些选项。

EDIT2:

如@ 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聚合框架(坦率地说)。

但是,我应该强调,在我放弃它之前,我只使用了少量它。