【问题标题】:Connecting to many databases at once in mongo/mongoose在 mongo/mongoose 中一次连接到多个数据库
【发布时间】:2016-12-14 10:27:19
【问题描述】:

我们正在尝试使用 mongoose 连接到 1500 个数据库,但是使用此命令创建 1500 个与 1500 个数据库的连接太慢了

mongoose.createConnection(url);

1500 DB 位于同一数据库服务器上。 建立这些连接花费了 50 多分钟。

有没有办法减少时间,或者有没有办法一次连接到 1500 DB,因为它们在同一台服务器上?

【问题讨论】:

  • 为什么需要这么多数据库?您是否有理由不能将您的数据分离到集合中?此外,如果您正在对 dbs 进行分片,则不需要连接到每个分片。没有循环,如果不减少 dbs 的数量,我想不出任何性能改进。
  • 谢谢,但需要有这么多的数据库。
  • 我承认我感兴趣的是什么用例导致了如此大量的数据库,以及您将如何能够维护所有这些连接。由于createConnection 是异步的,你应该可以使用async 来加快连接速度,但我不确定它会产生多大的影响。

标签: node.js mongodb mongoose


【解决方案1】:

你可以试试async:

'use strict';
const mongoose = require('mongoose'),
    async = require('async'),
    dbsUrl = [
    'mongodb://url1',
    //...
    'mongodb://url15000',
];

async.map(dbsUrl, (url, callback) => {
    let conn = mongoose.createConnection();
    conn.once('error', (err) => {
        callback(err);
    });
    conn.once('connected', () => {
        callback(null, conn);
    });
}, (err, dbs) => {
    //If a error happenned, it will callback immediately
    //Else, dbs will now be a array of connections
});

我不知道这种连接数量的性能。

【讨论】:

    猜你喜欢
    • 2017-08-12
    • 2019-11-29
    • 2016-05-14
    • 1970-01-01
    • 2018-08-09
    • 2020-08-08
    • 2012-08-18
    • 2018-02-24
    • 1970-01-01
    相关资源
    最近更新 更多