为什么在NoSql(如MongoDB)中使用ORM
抱歉,这样说清楚吗?ORM的意思是:对象关系映射器。在这里提到的“关系”是指关系型数据库,而NoSql并不是关系型数据库管理系统(RDBMS)!那么在NoSql的解决方案中为什么还要使用ORM呢?因为我看到Python的ORM在不断更新!
3 个回答
2
ORM是一种抽象层。把查询操作抽象化后,换一个数据库引擎就简单多了,因为你只需要通过一个统一的接口来操作它(虽然在实际操作中不一定总是那么顺利,但总比没有这种抽象要简单得多)。
3
这个问题很有意思。虽然NoSQL数据库没有专门的机制来识别数据之间的关系,但这并不意味着你存储的数据之间就没有逻辑关系。大多数情况下,如果你使用NoSQL数据库,你需要在代码中手动处理和维护这些关系。
因此,我觉得ORM(对象关系映射)在这里仍然可以帮到你。如果你有相关的数据,但需要使用NoSQL数据库,ORM可以帮助你保持数据的整洁。
举个例子,我使用亚马逊的SimpleDB,因为它成本较低,但我的数据之间仍然有关系需要维护。目前,我是手动处理这些关系的,也许使用ORM会对我有帮助。
14
首先,它们不是ORM(对象关系映射),因为它们之间没有任何关系,而是ODM(对象文档映射)。
这些ODM框架的主要用途和一些常见的ORM特性相似,因此:
- 它们为你的数据模型提供了一个抽象层。你可以在应用程序中根据自己的需求来设计数据模型,而不必考虑目标软件的具体要求。
- 大多数ODM都是为了利用现有编程语言的特性而构建的,使用熟悉的方式来处理数据,而不是让你去学习新软件的语法。
当我使用mongoid(一个用于MongoDB的Ruby ODM)时,我可以用类似于在active model中查询的方式来查询MongoDB(大多数情况下)。
由于这些ODM之间没有关系,它们提供了一种在模型中定义关系并模拟这些关系的方法。这些都被抽象化了,开发者可以像处理关系型数据一样进行编码。