gpt4 book ai didi

javascript - MongoDB 存储的 JavaScript 过程更快吗?

转载 作者:IT老高 更新时间:2023-10-28 13:13:15 26 4
gpt4 key购买 nike

我对存储的 JavaScript 过程有疑问。看完Blog Entry来自 PointBeing,我有一些问题。

  • 将我的代码存储在数据库中是否有好处?我的意思是像 lookups for documents 这样的函数,而不是像 PointBeing 中的示例那样 adding numbers
  • MongoDB 存储 javascript 是否比 node.js javascript 更快?
  • MongoDB 存储的 javascript 查询是否已缓存?它们是否更快?

与 Node.js Javascript 相比,我对 MongoDB 存储的 javascript 性能感兴趣。

最佳答案

不推荐使用存储在 db.system.js 中的评估函数(“存储过程”,当您想这样调用它们时)。 db.eval shell function上的文章和 the eval database command有“自 3.0 版以来已弃用”警告和 the article on server-sided javascript不再提及它了。所以你应该避免使用它。一个原因是您在使用分片时无法运行 javascript 函数。因此,当您构建需要 eval 的应用程序时,您会阻止它在未来扩展。另一个是javascript函数破坏了权限概念。他们总是需要以管理员身份运行,这使得建立健全的权限系统变得不可能。考虑到使用用户提供的数据的服务器端脚本可能容易受到任意脚本注入(inject)的攻击,从安全 Angular 来看,这尤其成问题。

服务器端 javascript 的优势在于它在数据库服务器上运行。当您需要执行大量查询时,这可以减少应用程序服务器和数据库服务器之间的延迟。但是您可以通过在数据库服务器上打开一个 mongo shell 并在那里执行它来获得相同的优势。

延迟优势仅在您从脚本执行多个查询时才相关。当您只有一个查询时,调用脚本时仍然会有延迟。所以除了不必要的复杂性,你什么也得不到。

服务器端 javascript 没有额外的缓存或其他优化。更糟糕的是:每次运行它都会被重新解析和重新解释。所以它甚至可能比应用服务器中的 javascript 慢。

此外,许多需要脚本支持才能仅使用 find() 实现的复杂查询通常可以使用 aggregation 来表达。在大多数情况下,这将比使用 find() 和 javascript 快得多,因为聚合框架是用 C++ 实现的,并且可以访问原始 BSON 文档。

关于javascript - MongoDB 存储的 JavaScript 过程更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30117935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com