sql >> Database teknologi >  >> NoSQL >> MongoDB

mongodb åben forbindelse problem

MongoClient har intern forbindelsespool. Maksimalt antal forbindelser kan konfigureres (standard er 100). Du kan indstille det ved at bruge MongoClientOptions sådan her:

MongoClientOptions options = MongoClientOptions.builder()
                .connectionsPerHost(100)
                .autoConnectRetry(true)
                .build();

Og giv derefter disse muligheder til MongoClient (kontrollerede det i Mongo Java API v2.11.1). Forbindelser i pool holdes åbne (åbning og lukning af forbindelse er normalt en dyr operation), så de senere kan genbruges.

Jeg ville også refaktorisere din MongoDB-klient-singleton ved hjælp af enum for at undgå at sætte synchronized på denne metode.

Her er en skitse af, hvad jeg mener:

public enum MongoDB {
    INSTANCE;

    private static final String MONGO_DB_HOST = "some.mongohost.com";
    private Mongo mongo;
    private DB someDB;

    MongoDB() {

        MongoClientOptions options = MongoClientOptions.builder()
                .connectionsPerHost(100)
                .autoConnectRetry(true)
                .readPreference(ReadPreference.secondaryPreferred())
                .build();

        try {
            mongo = new MongoClient(MONGO_DB_HOST, options);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }

        someDB = mongo.getDB("someDB");
         //authenticate if needed
         //boolean auth = someDB.authenticate("username", "password".toCharArray());
         //if(!auth){
         //     System.out.println("Error Connecting To DB");
         //}        
    }

    public DB getSomeDB() {
        return someDB;
    }

    //call it on your shutdown hook for example 
    public void close(){
        mongo.close();
    }
}

Derefter kan du få adgang til din database via

MongoDB.INSTANCE.getSomeDB().getCollection("someCollection").count();



  1. Hvordan opretter jeg forbindelse til mongodb med node.js (og godkender)?

  2. vent på, at alle løfter er færdige i nodejs med bluebird

  3. MongoDB samtidige opdatering til samme dokument opfører sig ikke atomisk

  4. Java MongoDB:Hvad er forskellen mellem com.mongodb.DB og com.mongodb.client