这就是我所拥有的: -
我想要做的是构建一个类似于顶级编码器的应用程序,并且我已经勾勒出应用程序的骨架版本。基本要求是: - 1.保存代码。 2.保存用户名和等级。(用户配置文件) 3.应该允许教师创建多项选择题。(类似于Google文档)。
我有Django的基本知识,之前已经构建了几个(基本)应用程序。不是构建一个在线工具,而是可以在Django中构建与web2py之上的conf2py非常相似的东西。
让我们称这个小项目为考试(我知道,非常原创),是否有可能构建一个更像Django插件的应用程序,或者我的Django概念绝对错误?
主要问题是: 由于我想学习一个新的DB并且已经在Django中使用postgres,我应该为Django选择CouchDB或MongoDB吗?
答案可以是某些文件或博客的解释或链接,可以告诉我利弊。
答案 0 :(得分:3)
我的所有研究都指出我认为Mongo和Couch足够相似,以至于您的选择可能归结为个人(主观)偏好,即使在用例上也是如此。就个人而言,我已经开发了一个CouchDB迷信,我正在寻找使用它的理由。
影响决策的关键因素应该是哪个noSQL解决方案拥有最成熟的Django ORM框架?
答案 1 :(得分:3)
我在Django中使用了mongo-engine,但你需要专门为Mongo文档创建一个文件,例如。 Mongo_models.py。在该文件中,您可以定义Mongo文档。然后,您创建表单以匹配每个Mongo文档。每个表单都有一个save方法,用于插入或更新存储在Mongo中的内容。 Django表单旨在插入任何数据后端(使用一些工艺)。
如果你走这条路,你可以躲避Django非rel,这仍然不是Django 1.4的一部分。另外我相信django-nonrel现在处于中断状态。
我广泛使用过CouchDB和Mongo。 CouchDB有一个可爱的界面。我的同事正在为Mongo做类似的事情。 Mongo的map和reduce远远快于CouchDB。 Mongo的响应能力更强,可以加载和检索数据。 Mongo的python库更容易使用(pymongo和mongo-engine都很棒)
请务必阅读Mongo制作推荐!不要在与Django相同的节点上运行一个实例,也不要准备在流量达到峰值时进行野蛮烧毁。 Mondo与Memcache / Redis配合使用,可以存储减少的数据以便快速查找。
请注意:如果您具有可在文档或模型中描述的定义明确且结构化的数据,则不要使用Mongo。它不是为此而设计的,像PostGreSQL这样的东西会更好。
不要用圆圈填充方孔。它不会填补它。
答案 2 :(得分:2)
我已经将CouchDB与Django一起用于生产应用程序。 Couch很好并且有一些好主意,但我正在将该应用程序移到MongoDB上。为什么? Django社区支持Mongo。 Django-nonrel有一个MongoDB后端。使用Django-toolbox我可以在模型中嵌入模型并获得一些基本的管理支持。
如果我没记错的话,Django-nonrel将最终融入Django核心。在五年的时间里,我发现Django对Mongo的支持远远超过Couch。当然可以改变,但我认为Mongo更合适。