MongoDB提示,技巧和陷阱

时间:2010-12-23 23:25:26

标签: mongodb

根据您的经验,请分享您最喜欢的MongoDB提示,例如:

  • 你从困难中学到了什么?
  • 哪些功能可能会出乎意料,特别是对于来自RDBMS背景的新手?
  • 哪种最佳做法最重要?

2 个答案:

答案 0 :(得分:3)

我已经使用MongoDB(并尝试使用Rails的MongoMapper和Mongoid适配器)几个月了。我以前在SQL中根深蒂固。以下是我的观察:

  • 缺少架构和迁移并不意味着您可以获得免费午餐。您的应用程序代码必须携带SQL模式处理的逻辑和约束。您需要更加自律地手动迁移数据,例如:当您重命名属性时,或者您的应用程序代码必须处理同一事物的多个名称(在此示例中)。这很容易导致数据库中出现大量垃圾和/或模糊错误。 MongoDB非常棒,因为您不必先定义您要存储的内容,并且可以将整个数组和对象层次结构放入任何属性中。在某些方面,易用性带来的安全性要低得多,而且我认为我们仍然在制定许多关于如何避免在这里积累大量技术债务的最佳实践。
  • 没有加入 - 这意味着您在设计馆藏时必须知道自己的数据访问模式(至少是那些需要扩展的模式)。
  • 无交易 - 如果集合中的相同记录可从并发请求更新,则会打开竞争条件的风险。对于单集合更新,存在原子操作,Mongoid(但不是MongoMapper)特别支持和使用它们。
  • 任何记录的16MB记录限制。与SQL中可以采用任意大小内容的text字段不同,MongoDB对任何记录都有16MB的硬限制。这是值得考虑的,因为您计划存储,例如大型数组,对象层次结构等。

答案 1 :(得分:1)

关于MongoDB陷阱的这篇文章比上面链接的文章稍微新一点。 http://rsmith.co/2012/11/05/mongodb-gotchas-and-how-to-avoid-them/

相关讨论是关于HN的: https://news.ycombinator.com/item?id=4745067