我想尝试带有mongoengine的mongodb。我是Django和数据库的新手,并且与外国钥匙,连接,循环导入(您命名)相吻合。我知道我最终可以解决这些问题,但是Mongo似乎对我正在做的事情进行了更简单的解决方案。我的问题是我使用了许多可插入的应用程序(ImageKit,Haystack,注册等),并想知道如果我进行切换,这些应用程序是否会继续工作。如果我可能会遇到任何已知的头痛,如果是的话,我可能会继续用mysql敲我的头。

有帮助吗?

解决方案

没有理由不能为所有标准Django应用程序使用标准RDBMS之一,然后为您的应用程序使用Mongo。您只需要通过以mongo方式替换从django orm处理事物的所有标准方法。

因此,您可以保持urls.py及其整洁的图案匹配,视图仍然会获取参数,并且模板仍然可以采用对象。

您会丢失质量组,因为我怀疑它们与RDBMS型号紧密相关 - 但实际上它们只是懒洋洋评估的列表。只需忽略Django文档在编写Models.py上的DJANGO文档,并在Mongo范式中编码您的数据库业务逻辑即可。

哦,您将没有Django Admin界面以轻松访问数据。

其他提示

您可能想结帐 django-nonrel, ,这是一次年轻但有希望的尝试,即Django的NOSQL后端。目前缺乏文档,但是如果您只是解决它,它的效果很好。

我已经将Mongoengine与Django一起使用,但是您需要创建一个诸如mongo_models.py之类的文件。在该文件中,您定义了Mongo文档。然后,您创建表单以匹配每个Mongo文档。每个表单都有一个保存方法,该方法插入或更新Mongo中存储的内容。 Django表格旨在插入任何数据后端(有一点工艺)

当心:如果您有很好的定义和结构化数据,可以在文档或模型中描述,则不使用Mongo。它不是为此而设计的,诸如PostgreSQL之类的东西会更好。

  • 我将PostgreSQL用于关系或结构良好的数据,因为它对此有益。小小的记忆足迹和良好的响应。
  • 我使用Redis来缓存或在内存队列/列表中操作,因为它非常好。出色的性能,只要您有记忆即可应对它。
  • 我使用Mongo存储大型JSON文档,并在其上执行地图并减少图像(如果需要),因为它非常有用。如果可以加快查找,请确保在某些列上使用索引。

不要圆圈以填充一个方孔。它不会填充它。

我看过太多的帖子,有人想将关系DB换成Mongo,因为Mongo是一个嗡嗡声。不要误会我的意思,蒙戈真的很棒...当您适当使用时。我喜欢适当使用Mongo

前期,它对播放其型号的任何现有Django应用程序都不起作用。将Django的模型数据存储在MongoDB或其他NOSQL存储中没有后端 眼下 而且,除了数据库后端,模型本身就是一个有点重要的一点,因为一旦您进入某人的应用程序(django.contrib 随附的应用程序)ships型模型 - 网板视图三合会,每当您需要稍有不同的型号出于自己的目的而需要编辑应用程序代码(纯错误),请在运行时(Magical),fork动态编辑导入的Python模块的内容应用程序源完全(麻烦)或提供其他设置(好,但这是一个罕见的相遇, django.contrib.auth 可能是应用程序的唯一众所周知的示例,该应用程序允许您动态指定其将使用的模型,就像通过用户配置文件模型一样 AUTH_PROFILE_MODULE 环境)。

这听起来可能很糟糕,但是真正的含义是,您必须并行部署SQL和NOSQL数据库,然后从应用到应用程序的基础基础(如Spacedman),并且如果MongoDB最适合A某些应用程序,地狱,只需滚动您自己的自定义应用即可。

他们的脑海中有很多精美的djangonauts。如果您遵循过去的Djangocon演讲中的流,每年都有关于Django应该如何利用NOSQL存储的重要讨论。我敢肯定,在今年或下一年中,有人会重构应用程序和模型API,以铺平清洁设计的路径,最终可以将NOSQL Storages的所有不同口味作为Django Core的一部分。

我最近尝试过(尽管没有杂种)。恕我直言,有很多陷阱:

  • 没有管理接口。
  • 无验证django.contrib.auth依赖DB接口。
  • 许多事情依赖于django.contrib.auth.user。例如,requestContext类。这是一个巨大的障碍。
  • 没有注册(依赖DB接口和django.contrib.auth)

基本上,搜索Django界面以参考django.contrib.auth的引用,您会发现将破坏多少东西。

也就是说,MongoEngine可能会提供一些支持来替换/增强django.contrib.auth的支持,但是有很多事情取决于它,因此很难说您如何使您的修补一些东西。

主要陷阱(对我来说):没有加入!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top