MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

vấn đề kết nối mở mongodb

MongoClient có pool kết nối nội bộ. Số lượng kết nối tối đa có thể được cấu hình (mặc định là 100). Bạn có thể đặt nó bằng cách sử dụng MongoClientOptions như thế này:

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

Và sau đó cung cấp các tùy chọn này cho MongoClient (đã kiểm tra nó trong Mongo Java API v2.11.1). Các kết nối trong nhóm được duy trì mở (mở và đóng kết nối thường là một thao tác tốn kém) để chúng có thể được sử dụng lại sau này.

Tôi cũng sẽ cấu trúc lại singleton ứng dụng khách MongoDB của bạn bằng cách sử dụng enum ví dụ để tránh đặt synchronized trên phương pháp này.

Đây là bản phác thảo ý tôi muốn nói:

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();
    }
}

Sau đó, bạn có thể truy cập cơ sở dữ liệu của mình qua

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Không muốn bắt đầu mongod bằng `sudo mongod`

  2. Chơi:Cách chuyển đổi JSON trong khi ghi / đọc nó sang / từ MongoDB

  3. Lên lịch công việc trong MongoDB

  4. update_attributes trả về luôn đúng, ngay cả khi nested_attributes không hợp lệ

  5. Tài liệu sao chép sâu với các liên kết được nhúng