【问题标题】:MongoDB stored procedures NOT in javascriptMongoDB 存储过程不在 javascript 中
【发布时间】:2012-06-09 16:26:27
【问题描述】:

我有一些集合,我想对该集合中的每个插入执行操作。问题是执行此操作的代码是用 Java 编写的。在 Oracle 中,可以将 Java 甚至 C 代码包装到 PL/SQL 过程中,然后在触发器中使用这个过程。在 CouchDB 中,我们可以编写一个视图。 最接近 MongoDB 的类比是什么? 我能想到的最好的可能性是将我的代码包装到 REST 服务器中,然后使用存储的 javascript 与之交互。

我已经看到this 的问题,但是由于依赖于 java 库,我不能在我的工作流程中只使用 javascript,我也不想与 mongodb 一起运行新的繁重服务(如果有)其他方式来做到这一点。

【问题讨论】:

  • Mongo 也没有存储过程的意义,你可以将 JS 插入到 system.js 集合中(不建议用于“存储过程”),但你仍然必须在查询中从 JS 函数中激活它如果在 MR 之外使用,您可能会看到巨大的性能问题。

标签: mongodb stored-procedures triggers


【解决方案1】:

关于您的请求有很多话要说:

我有一些集合,我想对该集合中的每个插入执行操作。

1) 您在这里要求的并不是真正的“存储过程”,而是真正的“数据库触发器”。 MongoDB 不提供任何类型的“数据库触发器”功能。

这与 MongoDB 的总体设计目标是一致的,即提供非常快速、可扩展的数据存储,而无需传统 DBMS 系统的沉重负担。有关 MongoDB 设计目标的更多详细信息,请参阅此演示文稿:http://www.10gen.com/presentations/mongosf2011/whymongodb

2) 如果您希望在每次插入时执行一些数据处理,则需要在 MongoDB 连接的客户端进行。这必然涉及在您的应用程序中编写一些代码。

3) 我建议您尽可能避免在 mongod 服务器中运行 JavaScript。 JavaScript 在服务器端进行解释,因此您的查询速度会受到影响。另外,mongod服务器中运行的所有JavaScript都是单线程的,所以没有任何JavaScript执行的并发性。

希望能给你一个更好的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 2011-04-22
    • 2022-12-10
    • 2011-11-16
    相关资源
    最近更新 更多