MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zarządzanie połączeniami Mongodb w Javie jako zorientowane obiektowo

W aplikacji pojedynczy MongoClient obiekt z wymaganą liczbą połączeń, przy użyciu puli połączeń , zadziała w tym przypadku. Domyślna wartość puli połączeń 100 i mogą być modyfikowane (lub konfigurowane) w razie potrzeby.

Obiekt klienta mongo można utworzyć na początku aplikacji i jest zamykany tylko wtedy, gdy aplikacja jest zamknięta. Oszczędza to zasoby związane z tworzeniem połączenia z obiektami klienta mongo w każdej klasie dostępu do kolekcji.

Ten sam obiekt klienta mongo może być używany w całej aplikacji. singiel Klasa (która utrzymuje jedną instancję obiektu klienta mongo) może być dostępna przez dowolny inny obiekt w aplikacji, który wymaga połączenia z serwerem bazy danych MongoDB.

Co to jest łączenie połączeń?

Przykładowy kod:

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

Klient Mongo

MongoClient obiekt służy do połączenia z serwerem MongoDB, uzyskania dostępu do bazy danych za pomocą getDatebase() metody i pracy z kolekcjami.

com.mongodb.client.MongoClient interfejs:

Z dokumentacji MongoDB Java :

Instancja MongoClient reprezentuje pulę połączeń z bazą danych; będziesz potrzebować tylko jednej instancji klasy MongoClient, nawet z wieloma wątkami.

Poniższy kod tworzy obiekt połączenia klienta MongoDB z ustawieniami domyślnymi, takimi jak host („localhost”) i port (27017 ), pule połączeń itp. i łączy się z instancją MongoDB i uzyskuje dostęp do testDB baza danych.

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

Ustawienia klienta Mongo:

Możesz jawnie określić inne ustawienia za pomocą MongoClientSettings do kontrolowania zachowania MongoClient .

MongoClient mongoClient = MongoClients.create(MongoClientSettings settings)

ConnectionPoolSettings obiekt określa wszystkie ustawienia, które odnoszą się do puli połączeń z serwerem MongoDB. Aplikacja tworzy tę pulę połączeń podczas tworzenia obiektu klienta. ConnectionPoolSettings.Builder jest kreatorem ConnectionPoolSettings , ma metody określania właściwości puli połączeń. Np. maxSize​(int maxSize) :Maksymalna dozwolona liczba połączeń (domyślnie 100 ). Inne metody obejmują minSize , maxConnectionIdleTime itp.

Kod do utworzenia instancji MongoClient z ustawieniami puli połączeń:

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. Promuj podpola do najwyższego poziomu w projekcji bez wyświetlania wszystkich kluczy

  2. Pierwsze kroki z Pythonem i MongoDB

  3. Spring JPA PostgreSQL + MongoDB

  4. Podstawowe zapytania między datami $gte, $lte itp

  5. MongoDB $cosh