readPreference
Nesta página
- Visão geral
- Configurar a read preference no nível do sistema
- Configurar a read preference no nível do banco de dados ou da collection
- Configurar read concern no nível de sistema
- Configure a preocupação de leitura no nível do banco de dados ou da coleção
- Combine read concern, read preference e write concern
- Informações adicionais
Visão geral
Para escolher de qual membro de um conjunto de réplicas ler, você pode usar o driver Java Reactive Streams para configurar as preferências de leitura. Você também pode controlar as propriedades de consistência e isolamento dos dados lidos de conjuntos de réplicas e clusters fragmentados configurando read concerns. Neste guia, você pode aprender como usar o Driver MongoDB Java Reactive Streams para configurar read preferences e read concerns.
É possível configurar a preferência de leitura e a preocupação de leitura nos seguintes níveis:
Para sua implementação do MongoDB
Para seu banco de dados de dados
Para sua coleção
Configurar a read preference no nível do sistema
É possível configurar a preferência de leitura no nível do sistema das seguintes maneiras:
Criando uma instância do
MongoClientSettings
, como mostrado no seguinte código:MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder() .applyConnectionString(new ConnectionString("mongodb://host1,host2")) .readPreference(ReadPreference.secondary()) .build()); Criando uma instância do
ConnectionString
, como mostrado no seguinte código:MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017/?readPreference=secondary");
Configurar a read preference no nível do banco de dados ou da collection
Você pode configurar a preferência de leitura no nível do banco de dados de dados ou da collection das seguintes maneiras:
Em um
MongoDatabase
usando o métodowithReadPreference()
, conforme mostrado no código a seguir:MongoDatabase database = mongoClient.getDatabase("test") .withReadPreference(ReadPreference.secondary()); Em um
MongoCollection
usando o métodowithReadPreference()
, conforme mostrado no código a seguir:MongoCollection<Document> collection = database.getCollection("restaurants") .withReadPreference(ReadPreference.secondary());
MongoDatabase
e MongoCollection
instâncias são imutáveis. Chamar withReadPreference()
em uma instância MongoDatabase
ou MongoCollection
existente retorna uma nova instância e não afeta a instância na qual o método é chamado.
No exemplo a seguir , a instância collectionWithReadPref
tem a preferência de leitura de primaryPreferred
, enquanto a preferência de leitura do collection
não é afetada:
MongoCollection<Document> collectionWithReadPref = collection.withReadPreference(ReadPreference.primaryPreferred());
Configurar read concern no nível de sistema
Você pode configurar a preocupação de leitura no nível de sistema das seguintes maneiras:
Criando uma instância do
MongoClientSettings
, como mostrado no seguinte código:MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder() .applyConnectionString(new ConnectionString("mongodb://host1,host2")) .readConcern(ReadConcern.MAJORITY) .build()); Criando uma instância do
ConnectionString
, como mostrado no seguinte código:MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017/?readConcernLevel=majority");
Configure a preocupação de leitura no nível do banco de dados ou da coleção
Você pode configurar a preocupação de leitura no banco de banco de dados ou nível de coleção das seguintes maneiras:
Em um
MongoDatabase
usando o métodowithReadConcern()
, conforme mostrado no código a seguir:MongoDatabase database = mongoClient.getDatabase("test") .withReadConcern(ReadConcern.MAJORITY); Em um
MongoCollection
usando o métodowithReadConcern()
, conforme mostrado no código a seguir:MongoCollection<Document> collection = database.getCollection("restaurants") .withReadConcern(ReadConcern.MAJORITY);
MongoDatabase
e MongoCollection
instâncias são imutáveis. Chamar withReadConcern()
em uma instância MongoDatabase
ou MongoCollection
existente retorna uma nova instância e não afeta a instância na qual o método é chamado.
No exemplo a seguir, a instância collWithReadConcern
tem um read concern AVAILABLE
, enquanto a read concern do collection
não é afetada:
MongoCollection<Document> collWithReadConcern = collection.withReadConcern(ReadConcern.AVAILABLE);
Combine read concern, read preference e write concern
Você pode construir instâncias do MongoClientSettings
, MongoDatabase
ou MongoCollection
para incluir combinações de read concerns, read preferences e write concerns.
Por exemplo, o seguinte código define todos os três no nível da collection:
collection = database.getCollection("restaurants") .withReadPreference(ReadPreference.primary()) .withReadConcern(ReadConcern.MAJORITY) .withWriteConcern(WriteConcern.MAJORITY);
Informações adicionais
Para saber mais sobre a preferência de leitura, consulte oguia de read preference no manual do MongoDB Server . Para saber mais sobre preocupação de leitura, consulte o guia Read Concern no manual do MongoDB Server .