【问题标题】:Mongo DB substitute for stored procedureMongodb替代存储过程
【发布时间】:2013-04-23 14:21:44
【问题描述】:

我正在考虑在我的下一个项目中使用 MongoDB,但首先我想看看它是否支持我的应用所需的功能。到目前为止,我在 MongoDB 文档中没有看到任何对我有用的东西,但也许我弄错了。

基本上会有用户调查问卷(可能有数百个带有多个答案选项的问题)。

一旦用户填写问卷,他的答案需要与所有其他现有用户的答案进行比较,需要计算某种匹配百分比并将可能保存到数据库中。我认为需要将其保存到 db 的原因是匹配百分比的计算似乎是一个繁重的过程,我不想每次请求匹配百分比时都运行它。

所以我正在寻找的功能是

  • 使用参数调用过程(新用户 ID)
  • 在此过程中,我需要获取新用户的所有答案。
  • 为所有现有用户的答案与新用户的答案运行匹配代码。
  • 将结果保存回数据库中。
  • 只需一次调用即可完成所有这些操作,而无需将数据从数据库返回到客户端应用程序

MongoDB 很可能不是满足这些要求的工具。

【问题讨论】:

  • 事实上,MongoDB 绝对不是一个很好的匹配项(而且没有想到会支持您所写的要求)。
  • @WiredPrairie 您的意思可能是“想到了 SQL 数据库”。任何 SQL 数据库都可以满足我的所有要求。但是,我担心 SQL 数据库在大量用户的情况下表现不佳。
  • 是的,我在下面看到您关于“其他 NoSQL 数据库”的评论,这就是我所指的。当然,许多 SQL 选项可以满足您的需求。 :)
  • 您是否使用基于 SQL 的现代选项测试了您的选项,以表明它不适用于大量用户?有多少用户?当比较运行时,您期望工作集是什么?
  • 确实我已经在 SQL Server 上测试过了。我说的是至少有一百万用户开始。已经有 10000 个用户开始阻塞(阻塞是指运行 10 秒以上,这是不可接受的)。 10000 对 SQL 来说不算什么,但请记住,也就是说,有时会说 100 个问题,有时会说每个问题 5 个答案。

标签: mongodb stored-procedures


【解决方案1】:

看看MongoDB Stored Procedure Equivalent。一般来说,你应该能够用 javascript 来做这些事情。

【讨论】:

  • 这些不是存储过程,也不是好的做法
  • 你是对的。 docs.mongodb.org/manual/tutorial/…至少我从来没有这样做过:)
  • 我想 MongoDB 不是适合这项工作的工具。对其他 NoSql 数据库有什么建议吗?
  • 为什么它必须是专门的存储过程?
  • 还能是什么?它需要是由 Web 应用程序的服务器端代码触发的某种进程。这个过程需要完全在数据库中运行。这很好地描述了一个存储过程
猜你喜欢
  • 2018-11-15
  • 2015-02-10
  • 2023-04-04
  • 2021-10-03
  • 2011-04-22
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多