MongoDB提示、技巧和陷阱

MongoDB提示、技巧和陷阱,mongodb,Mongodb,根据您的经验,请分享您最喜欢的MongoDB提示,例如: 你通过艰苦的学习学到了什么 哪些特性可能是出乎意料的,特别是对于来自RDBMS背景的新手来说 哪些最佳实践最重要 我已经使用MongoDB(并尝试使用带有Rails的MongoMapper和Mongoid适配器)几个月了。我以前深谙SQL。以下是我的观察结果: 缺少模式和迁移并不意味着你可以得到一顿免费午餐。您的应用程序代码必须携带SQL模式需要处理的逻辑和约束。在手动迁移数据时,您必须更加严格,例如,当您重命名属性时,或者您的应用程

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

  • 你通过艰苦的学习学到了什么
  • 哪些特性可能是出乎意料的,特别是对于来自RDBMS背景的新手来说
  • 哪些最佳实践最重要
我已经使用MongoDB(并尝试使用带有Rails的MongoMapper和Mongoid适配器)几个月了。我以前深谙SQL。以下是我的观察结果:

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

这篇关于MongoDB gotchas的文章比上面链接的要新一些

相关讨论是关于HN:

请创建社区wiki,否则它将很快关闭