【问题标题】:NodeJS binary modules vs those written in JSNodeJS 二进制模块与那些用 JS 编写的模块
【发布时间】:2013-06-23 13:16:47
【问题描述】:

是的,我只是想知道使用纯 JS 编写的 MySQL 或 MongoDB 驱动程序是否是个好主意。我的意思是,在为 100 个用户运行具有小数据库的小型应用程序时应该没问题/月,但是重负载/非常大的数据库呢?

难道没有我可以编译的 NodeJS 的专业 MySQL 和 Mongo 驱动程序吗?这些的性能应该要好得多。

还是我错了?例如,Mongoose 使用纯 JS 编写的驱动程序。这足以高效地查询 5 亿份文档吗?

任何建议/意见将不胜感激!

谢谢

编辑:

感谢大家的回复。好吧,我仍然对此不确定:)。 我的意思是,用 Python 或 Java 甚至 C# 编写驱动程序肯定是有意义的,但这些语言比 JS 更强大、更快。

这让我很担心:

我的 MySQL 驱动程序(用纯 JS 编写)在 300-400 毫秒内执行查询 SHOW COLUMNS FROM Table。如果我从 MySQL shell 执行完全相同的查询,则需要 20 毫秒。

我使用了一个使用https://github.com/felixge/node-mysql 模块的ORM (JugglingDB)。 300ms 是原始查询执行时间,在调试模式下打印。

为什么我们会看到如此大的差异?是 ORM 还是 Node/JS 还是驱动太慢了?

【问题讨论】:

  • 如果您的查询合理,数据库的大小应该不会影响驱动程序的性能。
  • 这些语言在对您的测试很重要的方面是否更快?看来您需要进行更多的性能测试。也许 NodeJS 不太适合。
  • 有谎言,该死的谎言和基准:benchmarksgame.alioth.debian.org/u64/javascript.php 你是如何在驱动程序中连接到 MySQL 的?是否通过网络可能导致时差,您是否测试过本地连接到套接字而不是通过 tcp?

标签: mongodb module binary driver database


【解决方案1】:

大多数 MongoDB 驱动程序都是用它们所使用的语言编写的。 Python 驱动程序是用 Python 编写的,Perl 驱动程序是用 Perl 编写的。有一些例外,因为 PHP 驱动程序是用 C 编写的,而 Python 驱动程序是作为可选的 C 扩展来加快速度。

node-mongodb-native 驱动程序全部用 JavaScript 编写:https://github.com/mongodb/node-mongodb-native。这是有道理的,因为 NodeJS 平台为此进行了优化,应该不会产生不利影响。

【讨论】:

    猜你喜欢
    • 2014-01-07
    • 2014-06-07
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 2018-07-02
    相关资源
    最近更新 更多