为什么在NoSql中使用ORM(如MongoDB)

时间:2011-11-08 14:03:49

标签: python orm mongodb

抱歉,这有意义吗? ORM意味着:Object Relational Mapper,这里有Relational,而NoSql不是RDBMS!为什么在NoSql解决方案中使用ORM?因为我看到了Python的ORM更新!

3 个答案:

答案 0 :(得分:8)

首先,它们不是ORM(因为它们之间没有任何关系),它们是 ODM (对象文档映射器)

这些ODM框架的主要用途与ORM的一些常见功能相同,因此

  • 提供数据模型的抽象。无论目标软件如何,您都可以在应用程序中建模数据。
  • 大多数ODM构建利用现有的语言功能,并使用熟悉的模式来操作数据,以学习新软件的新语言语法。

当我使用mongoid(Ruby ODM for mongo)时,我可以在活动模型中查询mongo(主要是)。

由于它们之间没有关系,因此这些ODM提供了定义模型中关系并模拟关系的方法。这些都是从开发人员中抽象出来的,因此他们可以像处理关系数据一样编写代码。

答案 1 :(得分:2)

ORM是一个抽象层。当查询被抽象出来并隐藏在一个公共接口后面时,切换到另一个引擎会容易得多(在实践中它并不总是很好用,但它仍然比没有它更容易)。

答案 2 :(得分:2)

有趣的问题。虽然NoSQL数据库没有识别关系的机制,但这并不意味着您存储的数据之间没有逻辑关系。大多数时候,你正在处理&如果您正在使用NoSQL数据库,请手动在代码中强制执行这些关系。

因此,我觉得ORM仍然可以帮助你。如果您确实拥有相关的数据,但需要使用NoSQL数据库,那么ORM仍然可以帮助您维护干净的数据。

例如,我使用Amazon SimpleDB的成本较低,但我的数据仍然存在需要维护的关系。目前,我手动执行此操作。也许ORM也会帮助我。