【发布时间】:2012-08-27 13:52:00
【问题描述】:
我目前在我的 django 应用程序中使用两个数据库 - 用于存储数字数据的 mongodb 和用于处理关系和提供业务域背景的 mysql。
我有一个担心:
首先 - 我正在使用 mongoengine 以及 django 信号和自定义模板标签。含义:
每当我调用此过滤器时。 {{myobject|do_sth:"20"}} 过程是这样的:
过滤器调用 -> myobject 的 do_sth 属性,参数为“20”调用 -> 发送信号 job_done -> 接收信号 job_done -> 创建单引擎文档 -> 保存
我不知道这是否清楚,但这只是不同技术的组合 - 我的问题是: 在这种情况下效率问题如何?有没有人尝试过该解决方案或有类似经验?
另一个问题:由于我比较经常使用上面描述的过程,我应该关心mongodb集合中的项目数。假设它会在一周内增长到 10 000,然后我们清除集合 - 可以吗?
【问题讨论】:
-
这取决于 job_done 过程需要多长时间以及 mongoDB 集合中的项目(也称为文档)有多大。使用 mongoDB,您可以垂直扩展(更多服务器)而不是水平扩展(更多内存、更快的 HD 等)您需要更具体才能更好地理解问题
-
@GianPaJ 你混淆了垂直和水平缩放
-
是的,我的错。水平是更多的服务器。
-
对象看起来像这样:名称、符号、creation_date 和 ListField(最多 200 个浮点数)。它们在数据库中存储大约一周。实际上,尽管几乎涉及每个应用程序层,但总体过程效果很好。存储此数字数据的目的是跟踪用户搜索的数据。此外,它还可以为每个名称列表对生成复杂的报告。
-
@user1642053 如果您使用的是 mongo >= 2.2,那么您可以使用 TTL 自动使集合中的文档过期。可能比手动操作要快一些。
标签: python django mongodb django-templates mongoengine