mongodb连接线程安全

Sid*_*Sid 3 java multithreading design-patterns database-connection mongodb

我根据一些教程使用以下代码来连接到 mongo 数据库。

我对设计有一些疑问:

  1. 可以同时从多个线程调用 MongoConnection.getDB() 函数吗?
  2. 如果不是,我应该让它同步吗?
  3. 如果设计有问题,会产生什么样的不良影响?

我是 mongodb 的新手,所以我的问题可能听起来有点天真。

public class MongoConnection {

    private static MongoClient mongoClient = null;

    private static String IP = "mongodb://user:pwd@localhost:27017/?authSource=demodb&authMechanism=SCRAM-SHA-1";
    private static String DATABASE = "demodb";

    static {
        mongoClient = new MongoClient(new MongoClientURI(IP));
    }

    private MongoConnection() {

    }

    public static DB getDB() {
        return mongoClient.getDB(DATABASE);
    }
}
Run Code Online (Sandbox Code Playgroud)

ial*_*lex 5

来自文档

MongoClient 实例代表数据库的连接池;即使有多个线程,您也只需要 MongoClient 类的一个实例。

以及以前版本的快速入门指南

MongoClient 类被设计为线程安全并在线程之间共享。通常,您只为给定的数据库集群创建 1 个实例,并在您的应用程序中使用它。

所以,MongoClient.getDb(..)线程之间不应该有任何问题