我刚刚在mongoid.org网站(ODM for Ruby)
上阅读了这篇文章如果您发现自己拥有更多关系关联 应用程序比嵌入式应用程序,建议您不要使用 MongoDB并转移到关系数据库。
这是一个有效的陈述吗?
答案 0 :(得分:2)
这是一个有效的陈述吗?
我不这么认为。我认为过度嵌入和避免关系是MongoDB最常见的初学者错误之一。更重要的是,数据如何结构化并不重要。重要的是你需要查询,以及你是否事先知道。
关系型数据库擅长于不同表格的查询约束的野外组合:“在阳光普照的日子里,我们经营大多数商店的城市的客户是什么?” SQL数据库可以很好地回答这个问题。使用正确的索引,您可以快速创建这些查询的完整类。如果您不知道将在“编译时”询问的问题,那么这一点尤其有用。
不幸的是,这是以复杂性为代价的:根据您提出的问题,结果具有不同的结构,但典型的LOB应用程序主要需要获取对象并将其存储回来。此外,创建SQL查询并非易事,因此您要么必须手动编写它们,要么使用复杂的软件(对象关系映射器)来创建查询,组装对象并将所有内容重新拼接在一起。从我的角度来看,避免使用MongoDB这个怪异的软件和复杂性是一个关键原因。因此,对象文档映射器的想法对我来说通常听起来很可疑。
关于锁,交易,'规模'等的讨论在很大程度上是正交的。
如果您事先了解您的查询,MongoDB可以cope with relations relatively well,您可以避免大多数交易。如果您需要商业智能查询,那么使用关系数据库可能会更好。
答案 1 :(得分:0)
MongoDB是面向文档的数据库。此解决方案中不包含事务和关系。尽管存在这种限制,它仍可提供更具可扩展性的环境。
您应该转到mongodb.org以获取有关此解决方案的更多信息。