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

Quản lý các kết nối Mongodb trong Java dưới dạng Hướng đối tượng

Trong ứng dụng, một MongoClient đối tượng có số lượng kết nối bắt buộc, sử dụng tổng hợp kết nối , sẽ hoạt động trong trường hợp này. Giá trị mặc định của nhóm kết nối là 100 , và có thể được sửa đổi (hoặc định cấu hình) nếu cần.

Đối tượng khách hàng mongo có thể được tạo khi bắt đầu ứng dụng và chỉ được đóng khi ứng dụng được đóng. Điều này giúp tiết kiệm các tài nguyên liên quan đến việc tạo kết nối với các đối tượng khách mongo trong mỗi lớp truy cập bộ sưu tập.

Cùng một đối tượng khách mongo có thể được sử dụng trong toàn bộ ứng dụng. Một singleton Lớp (duy trì một phiên bản của đối tượng khách mongo) có thể được truy cập bởi bất kỳ đối tượng nào khác trong ứng dụng cần kết nối với máy chủ cơ sở dữ liệu MongoDB.

Tổng hợp kết nối là gì?

Mã mẫu:

/*
 * Manages the MongoClient object and its settings like host, port, connection pool, etc.
 */
public class DBAccess {

  private static MongoClient mongoClient;
  private static DBAccess dbAccess;

  // MongoClient with default settings
  // NOTE: the code will have only one of the constructors
  //private DBAccess() {
  //    final String connectionString = "mongodb://localhost:27017";
  //    this.mongoClient = MongoClients.create(connectionString);
  //}

  // MongoClient with custom settings.
  // Private constructor, so that the class can be instantiated outside this class.
  // NOTE: the code will have only one of the constructors
  private DBAccess() {

      MongoClientSettings settings =
          MongoClientSettings.builder()
              .applyToConnectionPoolSettings(builder ->
                   builder.maxSize(40).minSize(10))
             .applyToClusterSettings(builder ->
                   builder.hosts(Arrays.asList(new ServerAddress("localhost", 27017))))
            .build();

      mongoClient = MongoClients.create(settings);
  }

  public static MongoClient getConnection() {

      if (dbAccess == null) {
           dbAccess = new DBAccess();   
      }

      return mongoClient;
  }

  public static void closeDatabase() {
      mongoClient.close();
  }
}

/*
 * Class manages a collection.
 */
public class CollectionOneAccess {

  public static String COLLECTION_ONE = "collection_one";
  private MongoCollection<Document> collection;

  public CollectionOneAccess(MongoDatabase db) {    
      collection = db.getCollection(COLLECTION_ONE);
  }

  public void printOneDocument() {
      Document myDoc = collection.find().first();
      System.out.println(myDoc.toJson());
  }

  // other CRUD operations ...

}


// Usage of DBAcess and CollectionOneAccess classes:

private static final String APP_DATABASE = "abc_db";

public static void main(String [] args) {
    MongoDatabase database = DBAccess.getConnection().getDatabase(APP_DATABASE);
    CollectionOneAccess one = new CollectionOneAccess(database);
    one.printOneDocument();
    // ...
}

Ứng dụng khách Mongo

MongoClient đối tượng được sử dụng để kết nối với máy chủ MongoDB, truy cập vào cơ sở dữ liệu bằng getDatebase() và làm việc với các bộ sưu tập.

com.mongodb.client.MongoClient giao diện:

Từ tài liệu MongoDB Java :

Cá thể MongoClient đại diện cho một nhóm các kết nối đến cơ sở dữ liệu; bạn sẽ chỉ cần một phiên bản của lớp MongoClient ngay cả với nhiều luồng.

Đoạn mã sau tạo đối tượng kết nối máy khách MongoDB với cài đặt mặc định, như máy chủ ("localhost") và cổng (27017 ), gộp kết nối, v.v. và kết nối với một phiên bản MongoDB và có quyền truy cập vào testDB cơ sở dữ liệu.

MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("testDB");

Cài đặt ứng dụng Mongo:

Bạn có thể chỉ định rõ ràng các cài đặt khác với MongoClientSettings để kiểm soát hành vi của MongoClient .

MongoClient mongoClient = MongoClients.create(MongoClientSettings settings)

ConnectionPoolSettings đối tượng chỉ định tất cả các cài đặt liên quan đến nhóm kết nối đến máy chủ MongoDB. Ứng dụng tạo nhóm kết nối này khi đối tượng khách được tạo. ConnectionPoolSettings.Builder là một trình xây dựng cho ConnectionPoolSettings , có các phương thức để chỉ định các thuộc tính của nhóm kết nối. Ví dụ:maxSize​(int maxSize) :Số lượng kết nối tối đa được phép (mặc định là 100 ). Các phương pháp khác bao gồm, minSize , maxConnectionIdleTime , v.v.

Mã để tạo MongoClient với cài đặt nhóm kết nối:

MongoClientSettings settings = MongoClientSettings.builder()
                                   .applyToConnectionPoolSettings(builder -> 
                                       builder.maxSize(20))
                                   .build();
MongoClient mongoClient = MongoClients.create(settings);
// ...
// Verify the connection pool settings 
System.out.println("Pool size: " + 
    settings.getConnectionPoolSettings().getMaxSize());


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để triển khai twitter và facebook api như phân trang dựa trên con trỏ trong mongodb trong nodejs bằng ứng dụng mongodb chính thức?

  2. Làm cách nào để truy xuất tài liệu bằng _id?

  3. Mẫu thiết kế cho lớp truy cập dữ liệu

  4. Tại sao tôi nhận được mongoose.connect không phải là một hàm khi cố gắng kết nối với mongoose?

  5. Sự khác biệt về hiệu suất Mongodb giữa các chỉ số Hash và Ascending (Bất kỳ lý do nào để không sử dụng hash trong trường không được sắp xếp?)