【问题标题】:How much overhead would Mongoose add to the node-mongodb-native driver?Mongoose 会给 node-mongodb-native 驱动程序增加多少开销?
【发布时间】:2011-10-25 06:22:58
【问题描述】:

Mongoose 给 node-mongodb-native 驱动增加了多少开销?如果我只是想对几个集合进行几个结构相似的查询,那么直接使用驱动程序编写所有内容是否更有意义?例如,我需要执行以下操作(使用驱动程序语言,复制自 here):

db.collection('test', function(err, collection) {
  collection.find({'a':1}, function(err, cursor) {
    *do something*
  }
}

我只需将 'test''a' 替换为变量来保存我正在寻找的实际集合和密钥。

我觉得在这种情况下直接使用驱动程序编写所有内容是有意义的。有任何理由使用猫鼬本身吗?开销是否如此微不足道,以至于我考虑直接使用驱动程序是愚蠢的?

最好,谢谢,
萨米

【问题讨论】:

  • 所以我无法测试 mongoose 和 mongo-db-native-driver 但 mongoose 代码大约 150 kb。它相当大。这就是纯粹使用它的原因。
  • 文件大小在服务器上并不像在客户端那样重要

标签: mongodb node.js mongoose


【解决方案1】:

使用 Mongoose 的另一个好处是,您可以在应用程序中预先明确定义模型(包括默认值、验证等),这既为您的应用程序提供了大量的内在文档,又大大降低了不一致的可能性当您处理相对非结构化的数据模型时。

关系数据库有很多用于定义数据类型、默认值、索引等的功能,如果您(例如)尝试使用不存在的列,则会引发错误。

Mongo 消除了很多开销,但它创建了更多工作,以确保在实现代码中记录和维护一致的数据模型; Mongoose 让它变得更容易。

它还具有许多有用的功能来检查您的模型,包括使用严格模式的选项(从 v3 开始默认启用),这意味着您尚未定义的任何值都不会写入数据库,“虚拟字段”,例如可以将名字和姓氏组合成一个字符串,就好像它存储在数据库中一样(但不是必须的),以及索引管理。更多详情请见the guide

【讨论】:

    【解决方案2】:

    取决于您的应用程序有多大。如果你只做一些查询,可能不值得将 Mongoose 添加到组合中,但是一旦你的应用程序开始增长,Mongoose 可以帮助保持它更易于维护。开发时间通常比处理时间更有价值。

    除非您的应用要同时处理大量请求,否则您可能不会注意到性能差异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 2015-08-21
      • 2014-05-07
      • 2011-04-02
      相关资源
      最近更新 更多