Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么在NoSql中使用ORM(比如MongoDB)_Python_Orm_Mongodb - Fatal编程技术网

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

Python 为什么在NoSql中使用ORM(比如MongoDB),python,orm,mongodb,Python,Orm,Mongodb,对不起,这有意义吗?ORM的意思是:对象关系映射器,这里有关系映射器,NoSql不是RDBMS!那么,为什么要在NoSql解决方案中使用ORM呢?因为我看到了针对Python的ORMs的更新 ORM是一个抽象层。当查询被抽象出来并隐藏在一个公共接口后面时,切换到另一个引擎要容易得多(在实践中,它并不总是很好地工作,但它仍然比没有更容易)。有趣的问题。尽管NoSQL数据库没有识别关系的机制,但这并不意味着存储的数据之间没有逻辑关系。大多数情况下,如果您使用的是NoSQL数据库,那么您需要在代码中手

对不起,这有意义吗?ORM的意思是:对象关系映射器,这里有关系映射器,NoSql不是RDBMS!那么,为什么要在NoSql解决方案中使用ORM呢?因为我看到了针对Python的ORMs的更新

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

有趣的问题。尽管NoSQL数据库没有识别关系的机制,但这并不意味着存储的数据之间没有逻辑关系。大多数情况下,如果您使用的是NoSQL数据库,那么您需要在代码中手动处理和强制执行这些关系

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

例如,为了降低成本,我使用Amazon SimpleDB,但我的数据仍然有关系,需要维护。目前,我正在手动操作。也许ORM也会对我有所帮助。

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

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

  • 提供对数据模型的抽象。您可以在应用程序中对数据进行建模,而不考虑目标软件
  • 大多数ODM的构建都是利用现有的语言特性,并使用熟悉的模式来操作数据,而不是学习新软件的新语言语法
当我使用mongoid(Ruby ODM for mongo)时,我可以像在活动模型中那样查询mongo(大多数情况下)


由于它们之间没有关系,这些ODM提供了在模型中定义关系和模拟关系的方法。这些都是从开发人员那里抽象出来的,因此他们可以用处理关系数据的相同方式进行编码

因为1-这是我所知道的孤独的语言2-因为orm是为一种特定的语言设计的?!但在SQL时代,这是很有效的,不是吗?@abdel:你是说从未真正结束过的“时代”吗?那么这是用来继承的?但是,如果NoSql解决方案具有识别关系的工具,那么使用ORM会有用吗?但是关于第二点:“大多数ODM的构建都是利用现有的语言功能,使用熟悉的模式来操作数据,而不是学习新软件的新语言语法。”这是驱动程序的工作不?不,驱动程序只是提供一个主干来调用底层引擎来访问数据。mysql和hibernate ORM的Java驱动程序完全不同,对吗?同样的方式,在非sql中也是不同的..Mongoid ODM使用Ruby mongodb驱动程序与mongodb对话..我在这里感到困惑,因为驱动程序使用相同的语言,并且可以按照语言的方式处理mongodb(pymongo将使用python的Instruction来使用数据库,例如Dictionnary)这里没有什么需要困惑的,您仍然可以使用驱动程序访问数据,这没有问题。假设在ORM驱动程序之前的关系词中,我们使用遗留驱动程序(在任何语言中)通过传递字符串查询(它是一个sql synatx)来访问数据库中的数据。当您使用驱动程序时,您必须将mongodb查询作为字符串输入传递给您的驱动程序。但是当您使用ODM时,它会为您提供所有服务,所以现在我将从MiniMongo开始