MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Управление на Mongodb връзки в Java като обектно ориентирано

В приложението един MongoClient обект с необходим брой връзки, използвайки пулиране на връзки , ще работи в този случай. Стойността по подразбиране на пула от връзки е 100 , и може да бъде модифициран (или конфигуриран) според нуждите.

Клиентският обект mongo може да бъде създаден в началото на приложението и се затваря само когато приложението е затворено. Това спестява ресурсите, свързани със създаването на връзка с клиентските обекти mongo във всеки клас за достъп до колекция.

Един и същ клиентски обект mongo може да се използва в цялото приложение. Единичен клас (който поддържа един екземпляр на клиентския обект mongo) може да бъде достъпен от всеки друг обект в приложението, който се нуждае от връзка към сървъра на базата данни MongoDB.

Какво представлява групирането на връзки?

Примерен код:

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

Mongo Client

MongoClient обект се използва за свързване към MongoDB сървъра, получаване на достъп до база данни чрез getDatebase() метод и работа с колекции.

com.mongodb.client.MongoClient интерфейс:

От документацията на MongoDB Java :

Екземплярът MongoClient представлява набор от връзки към базата данни; ще ви е необходим само един екземпляр на класа MongoClient дори с множество нишки.

Следният код създава обект за свързване на клиент MongoDB с настройки по подразбиране, като хост ("localhost") и порт (27017 ), групиране на връзки и т.н., и се свързва с екземпляр на MongoDB и получава достъп до testDB база данни.

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

Настройки на Mongo Client:

Можете изрично да посочите други настройки с MongoClientSettings за контролиране на поведението на MongoClient .

MongoClient mongoClient = MongoClients.create(MongoClientSettings settings)

ConnectionPoolSettings обектът определя всички настройки, които се отнасят до набора от връзки към MongoDB сървър. Приложението създава този набор от връзки, когато клиентският обект е създаден. ConnectionPoolSettings.Builder е създател за ConnectionPoolSettings , има методи за указване на свойствата на пула за връзки. Например maxSize​(int maxSize) :Максималният разрешен брой връзки (по подразбиране е 100 ). Други методи включват minSize , maxConnectionIdleTime и т.н.

Код за инстанциране на MongoClient с настройки за набор от връзки:

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. как да проверя дали mongodb работи и е готов да приема връзки от bash скрипт?

  2. Конфигуриране на удостоверяване на MongoDB-CR по подразбиране на MongoDB 3.x

  3. Как бих върнал реда на MongoDB публикациите по време Предпочитани от потребител?

  4. Композитен ключ на MongoDB:InvalidOperationException:{document}. Самоличността не се поддържа

  5. Методът работи в разработката, но не и в производството Rails MongoDB