MongoDB 服务器上的 JavaScript 存储函数

Posted

技术标签:

【中文标题】MongoDB 服务器上的 JavaScript 存储函数【英文标题】:JavaScript Stored Function on MongoDB Server 【发布时间】:2013-06-10 15:23:24 【问题描述】:

这与 mongodb 服务器中的 javascript 存储函数有关。我知道有关工作和用例的所有细节。我对 MongoDB 官方文档中的一行表示怀疑。

“注意:如果可能,我们不建议使用服务器端存储函数。”

事实上我的感受是,在迁移到 V8 JavaScript 引擎(改进 javascript 查询的并发问题)之后,考虑到这可以为我们节省很多网络往返时间,为什么 10gen 不推荐这样做?

【问题讨论】:

我认为最好的地方是直接使用 10gen。你试过联系他们吗? (也许通过他们的 Jira 错误数据库,以便可以跟踪问题)。虽然我可以说它在某些情况下可能是一个有用的功能,但我可以看到它很容易被滥用,并且 10gen 很难以可持续和注重性能的方式构建和支持。 @WiredPrairie:是的,我会这样做。首先我会尝试 mongodb-user google group。谢谢 10gen 有什么答案吗?我会很感兴趣的。 存储过程在 MongoDB 中运行非常缓慢。对于每个匹配的文档,他们必须运行他们声称很慢的 JavaScript 评估。您可以在 mongo shell 中直接运行一个简单的示例查询(一个普通查询,另一个使用一些 JavaScript)来验证这实际上很慢。 【参考方案1】:

不建议这样做,因为 javascript 函数需要在执行期间获取写入锁定,这意味着您可能会导致写入性能出现瓶颈。

【讨论】:

您可以选择提供“nolock”选项,它只会获取读锁【参考方案2】:

一般来说存储过程有一些缺点:

https://***.com/questions/462978/when-should-you-use-stored-procedures

但我理解你关于网络往返的观点。

【讨论】:

以上是关于MongoDB 服务器上的 JavaScript 存储函数的主要内容,如果未能解决你的问题,请参考以下文章

多个应用服务器上的 MongoDB 连接失败

让 Linux 上的 MongoDB 监听远程连接

远程连接Linux上的MongoDB服务

数据库Mean web开发 04-MongoDB在Linux上的安装及遇到的问题

Windows 10 上的 Mongodb 社区服务器:我可以通过普通 telnet 访问 MongoDB shell 命令解释器吗? (初学者)

MongoDB在CentOS 7上的systemctl服务配置