MongoDB的优缺点?

有人可以告诉我什么是MongoDB的优点和缺点,特别是与关系数据库比较? 包括ACID,可扩展性,吞吐量,主内存使用情况,插入/查询性能和索引大小等。

MongoDB的一些一般要点

优点:

  • 无模式。 如果您有一个灵活的模式,这对于像MongoDB这样的文档存储来说是非常理想的。 这在RDBMS中以高性能的方式很难实现
  • 易于扩展。 通过使用副本集读取比例。 通过使用分片(自动平衡)进行缩放写入。 只要启动另一台机器,然后离开你。 添加更多的机器=添加更多的RAM来分配你的工作集。
  • 成本。 当然取决于哪个RDBMS,但MongoDB是免费的,可以在Linux上运行,非常适合在便宜的商品套件上运行。
  • 你可以根据数据的值select你想要的一致性水平(例如,更快的性能=激发和忘记插入到MongoDB,性能较慢=等待直到插入已被复制到多个节点返回之前)

缺点:

  • MongoDB中的数据大小通常比较高,因为每个文档都有字段名称存储
  • 查询的灵活性较低(如无JOIN)
  • 不支持事务 – 在单个文档级别支持某些primefaces操作
  • 目前Map / Reduce(例如,进行聚合/数据分析)是可以的,但不是太快。 所以如果需要的话,像Hadoop这样的东西可能需要join到混合中
  • 较less的最新信息/快速发展的产品

我最近在MongoDB上发表了自己对SQL Server后台的一些想法 ,所以你可能对此感兴趣(上面只是一些要点)。

如果你正在寻找一个“是MongoDB比RDBMS好”的答案 – 那么恕我直言,没有答案。 像MongoDB这样的NoSQL技术提供了一种替代scheme,它补充了RDBMS技术。 一个人可能比另一个更适合某个特定的目的,所以只需要针对某个特定的要求就什么最适合你。