MongoDB存储过程等效


73

我有一个包含商店列表的大型CSV文件,其中一个字段是ZipCode。我有一个名为ZipCodes的单独的MongoDB数据库,该数据库存储任何给定邮政编码的纬度和经度。

在SQL Server中,我将执行一个称为InsertStore的存储过程,该过程将对ZipCodes表进行查找以获取相应的纬度和经度,并将数据插入到Stores表中。

为此,是否有类似于MongoDB中存储过程的概念?基本上,对于每个插入,我需要查找该存储的纬度和经度,并保存它们。

我对Map / Reduce的概念不太熟悉,但这是否有意义?谢谢!


RDBMS(例如MySQL / MS-SQL / Oracle / ...)不仅是数据存储,还可以是应用程序设计功能的一部分(通过触发器和存储过程)。像MongoDB这样的NoSQL数据库只是数据存储。
凌晨

Answers:


104

与mongodb中的存储过程等效的最接近的事物是存储的javascript。Mike Dirolf的博客上的这篇文章对存储的javascript作了很好的介绍。


5
在MongoDB的当前实现中,存储javascript是最接近存储过程的东西,但是我不确定我是否会称其为“等效”。+1却是有用的链接
Ari Patrick 2010年

1
阿里(Ari)同意他们并不等同。
贾斯汀·迪林亲爱的

以下是答案
过度兑换

21

注意根据参考

不要将应用程序逻辑存储在数据库中。在MongoDB中运行JavaScript存在一些性能限制。当应用程序代码与应用程序本身共享版本控制时,它通常也是最有效的。

因此,mongodb中没有任何等效的存储过程。


5
如果您有大量数据要处理怎么办。我目前在MSSQL中有一张大桌子。我的存储过程很繁琐,因此不需要将所有数据传输到应用程序。在数据库中保留一些逻辑会是一个好例子吗?
何塞

17
15年前,如果我将应用程序逻辑放在SQL数据库中,那么今天它仍然可以工作,并且我的应用程序可能已经从vb6应用程序,.NET应用程序,.NET Forms Web应用程序变为.NET MVC App等。等等。如果我将相同的应用程序逻辑放在应用程序中,则每次我将字体末尾升级到最新技术时都将被重写。这个“不要在数据库中存储应用程序逻辑”的想法。
肖恩·肯

2
15年前,如果您将应用程序逻辑放入数据库中并且在一家真正的公司工作,那么其他10个应用程序将学习依赖它,因为它在过去15年中一直有效,因此它将成为每个人都接受的模式,并且只需编写代码就像它会扩散一样。最后,当您不得不更改它时,您根本无法承受
Chazt3n

2
@ Chazt3n这就是为什么您应该在存储过程中放入的唯一逻辑是基本的CRUD和单实体过滤逻辑。让您的软件将这些部分放在一起并进行必要的调用,以使它保持灵活性,但在这些CRUD过程中,应确定与DB交互的可接受方法。它实际上体现了良好的原子设计。
卡米,

2
@ShaunKeon因此,我们在数据库之上添加了一个服务,并让我们的前端与该服务进行交互。所有业务逻辑都进入服务。它也可以单元测试;测试充当应用程序逻辑的文档。
Shivku

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.