【问题标题】:Why Javascript is used in MongoDB or CouchDB instead of other languages such as Java, C++?为什么在 MongoDB 或 CouchDB 中使用 Javascript 而不是 Java、C++ 等其他语言?
【发布时间】:2012-01-05 05:32:35
【问题描述】:

到目前为止,我对 Javascript 的理解是,它是一种捕获事件并使网页动态化的客户端语言。

但在阅读 MongoDB 和 CouchDB (http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB) 之间的比较时,我注意到两者都使用 JS。这让我想知道为什么选择 JS 而不是其他传统语言。

我想我想了解 JS 的作用以及它相对于其他语言的优势。

更新:我不是在询问两个数据库支持的语言/驱动程序。比较表明——“CouchDB 和 MongoDB 都使用 Javascript。CouchDB 广泛使用 Javascript,包括在视图的构建中……MongoDB 还支持在服务器端运行任意 javascript 函数,并使用 javascript 进行 map/reduce 操作。”

我不理解为什么将 JS 用于后端工作。为什么首选在 CouchDB 中构建视图或使用 map/reduce 操作?为什么不使用 C/C++ 或 Java?这样的后端工作使用JS有什么好处?

答案:总结https://softwareengineering.stackexchange.com/q/121411/41398上的答案。 MongoDB 和其他 NoSQL 数据库正在使用 SpiderMonkey 来执行服务器端 JS 函数。这是维基百科的蜘蛛猴链接-http://en.wikipedia.org/wiki/SpiderMonkey_(JavaScript_engine)

PS:如果有人想对这个问题投反对票,请发表评论以解释原因。

【问题讨论】:

  • 我想发布这个链接:javascript.crockford.com/javascript.html
  • 另外 2 个很好的链接——首先,由@Yannis Rizos 指出 - en.wikipedia.org/wiki/JavaScript#Uses_outside_web_pages ;另一个是服务端JS方案的比较-en.wikipedia.org/wiki/…
  • 我强烈推荐阅读这篇文章。这很好地解释了为什么服务器端 JS-stackoverflow.com/q/691317/847954。谢谢@Joel Coehoorn
  • "google 的一个团队构建了 Rhino on Rails,这是一个类似于 Ruby on Rails 的 MVC 框架,它是用 javascript(JS) 编写并在 Rhino 上运行的 Java VM 的 JS 解释器。如果他们需要使用 Java VM,但希望获得一种快速的语言(JS 很快),支持鸭子类型,并且灵活。另一个例子是 CouchDB,一个面向文档的数据库,它使用 json传输格式和 javascript,因为它是查询和索引语言。他们希望数据库尽可能地是网络原生的。 stackoverflow.com/q/691332/847954,谢谢@rabble
  • 另一个来自@Will Hartung 的好文章“Rhino,它是 Mozilla 的 Java Javascript 系统,将 Javascript 编译成 Java 字节码,JVM 可以选择 JIT....最后,JS 是可能是目前在实现方面最赚钱的单一语言。来自 Apple、Mozilla、Google 甚至微软以及使其成为更高级语言的努力(即基本上是具有 Algol 语法的 Scheme无宏)”stackoverflow.com/q/459379/847954

标签: java javascript c++ mongodb couchdb


【解决方案1】:

javascript 在 couchdb 中仅用于构建视图和 map reduce,couchdb 核心是使用 erlang 编写的,javascript 仅在性能不那么重要时使用(实际上您可以使用 earlang 编写视图并获得更好的性能)...为什么他们使用 javascript?...

1) couchdb 使用 json 作为数据共享格式..json 真的很轻,非常快且可读...而且它使用 javascript..这是最大的一点..对于使用 json 更好的语言显然是 javascript

2)javascript在web编程世界中被广泛采用..couchdb的主要目标..so..如果你用ruby、python、php、java编程,对于web开发必须有一些javascript的知识

3)如果您查看视图代码..is 应该类似于用 java 或 c++ 编写的代码,sintax 来自 C...用于创建不需要 OOP 或接口的视图....

就是这样!..

【讨论】:

    【解决方案2】:

    这是一个很好的问题......为什么有人会为此投票给你?

    澄清一下,JavaScript 是 MongoDB 支持的几种语言之一。支持的其他语言包括:

    • C
    • C++
    • 二郎
    • 哈斯克尔
    • Java
    • .NET(C# F#、PowerShell 等)
    • Perl
    • PHP
    • Python
    • 红宝石
    • 斯卡拉

    还有更多。

    您可以查看此列表,并通过以下网址了解哪些客户可以从哪里获得:

    http://www.mongodb.org/display/DOCS/Drivers

    我希望这有助于阐明您最初的问题。

    【讨论】:

    • 感谢您的回复。好吧,到目前为止,我的感觉是管理员/高级成员希望阻止此论坛上的业余爱好者,并对反映理解不足的帖子持批评态度。因为我知道我对这件事的理解很差,所以我担心会被否决。
    • @startup007 它与“劝阻业余爱好者”无关。它不太适合 SO 格式,因为唯一能回答它的人是开发人员。例如,在programmers.stackexchange 上会更合适。请注意,没有人反对它或投票结束。
    • 如果它支持 Java 和 Scala,它是否也支持任何其他基于 JVM 的语言(就像 .NET 一样)?
    • OP 询问的是“内置”语言,而不是具有 Mongo 库的语言。
    • 许多人认为 JavaScript 是一种宠物语言,但它的动态性令人难以置信。我的一个朋友说:它是由军方开发的:D
    【解决方案3】:

    我想问的正确问题是“为什么不应该呢?”。

    Javascript 是一种强大的语言。

    但我想选择它的重要因素之一是每个人都知道(至少部分)它。当您开发一个系统并希望它成功时,您不希望将“复杂”的语言用于 map/reduce 等简单操作。 看一下MongoDb的用例,大部分都是web相关的。可悲的事实是,“Web 开发人员”通常不知道或不想用 C++ 或 Java 编写代码,他们知道 PHP 和 javascript。那么,当 javascript 也可以工作时,为什么有人要使用 那些邪恶的东西(我在这里讽刺)?

    Facebook 是用 PHP 编写的(然后由专有的代码翻译器转换为 C++)。这不是因为它是最好的技术选择,而是因为:

    • 很简单
    • 大家都知道
    • 它允许快速的开发周期

    这些都是商业原因。

    (现在,为了您自己的满意,您可以对我用另一个问题回答您的问题投反对票。)

    【讨论】:

    • 为什么我会否决你的答案?但如果我不得不假设,那么我会给出我的理由。批评是好的,只要它是健康的并且有助于改善被批评的实体。没有解释,downvoting 并不能告诉我任何事情。我是来学习的,希望专家来这里是为了分享他们的知识,而不是为了发泄他们对提问的人的天真感到沮丧。
    • @startup007,实际上最后一句话很讽刺。 (从技术上讲,用另一个问题回答一个问题不是“允许的”)
    【解决方案4】:

    许多语言的问题是缺乏沙盒(能够在地图函数中执行“rm -rf /”被认为是一个问题),javascript,因为它的浏览器根,有一个。 Javascript 是 CouchDB 中的默认视图服务器,但该协议已记录在案,并且存在其他语言绑定(Ruby、Python 等)。它还附带原生 Erlang 选项。

    在后端使用与前端相同的语言也很优雅,但 CouchDB 不会强迫您选择语言,它只是附带一个可靠的 Javascript 视图引擎。

    查看服务器协议的详细信息,以及替代实现的链接,请点击此处:

    http://wiki.apache.org/couchdb/View_server

    【讨论】:

      【解决方案5】:

      因为这是他们选择的语言?

      • 它是(合理地)动态的。
      • 可以传递函数。
      • 存在开放、可嵌入的实现。
      • 它无处不在。
      • 使用 JSONy 数据模型。

      “实时”评估 (IMO) 没有太多很棒的选项:Lua、Scheme-y 和 JS 可能是 C 程序的最佳选择。

      如果它是用 Java 编写的,则会有一个“内置”的默认脚本层。

      【讨论】:

      • 之前有 3 次投票,现在有 2 次。我的声望提高到了 82,现在是 80。哎呀……好痛。 :-)
      【解决方案6】:

      MongoDB 是用 C/C++ 编写的。在 JS 中,它们采用与 JSON 相同的模型来存储数据库条目。

      【讨论】:

        【解决方案7】:

        以下是对 javascript 为何如此广泛采用的一个很好的评价。:http://drdobbs.com/web-development/231901465

        【讨论】:

        • 感谢您的回答。我查看了帖子,我了解链接中列出的重要性背后的症结,这是“采用它的主要原因是可移植性。每个浏览器都支持 JavaScript 并且支持得很好。”。然而,在浏览器上的可移植性对后端的东西有何价值?对于数据库层来说,在浏览器上运行的角色在哪里出现?
        • 文章指出,浏览器可移植性只是javascript可移植性的一个方面。还有许多执行引擎争夺霸权。你可以免费获得一个好的javascript引擎,所以很容易采用。
        猜你喜欢
        • 1970-01-01
        • 2013-06-19
        • 2016-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-26
        • 1970-01-01
        • 2011-02-19
        相关资源
        最近更新 更多