Menu Docs
Página inicial do Docs
/ / /
Driver de fluxos reativos do Java

Configurar operações em conjuntos de réplicas

Nesta página

  • Visão geral
  • Escreva preocupação
  • Preocupação de leitura
  • readPreference
  • Documentação da API

Neste guia, você pode aprender como usar as configurações de referência de escrita, referência de leitura e preferência de leitura para modificar a maneira como o MongoDB executa as operações de criação, leitura, atualização e exclusão (CRUD) em conjuntos de réplicas.

Você pode definir essas configurações nos seguintes níveis:

  1. Cliente, que define o padrão para todas as execuções de operações, a menos que sejam substituídas

  2. transação

  3. Database

  4. collection

A lista anterior está em ordem crescente de precedência. Por exemplo, se você definir read concern nos níveis do cliente e do banco de dados, a read concern especificada no nível do banco de dados substituirá a read concern no nível do cliente.

A preocupação com a gravação especifica o nível de confirmação solicitado ao MongoDB para operações de gravação antes que a operação retorne com êxito. As operações que não especificam uma write concern explícita herdam a configuração global padrão de write concern.

Você pode definir a write concern usando o método writeConcern() em um cliente ou transação, ou usando o método withWriteConcern() em um banco de dados ou collection.

Os métodos writeConcern() e withWriteConcern() aceitam uma instância do WriteConcern como um parâmetro. Você pode especificar a write concern usando um dos seguintes valores:

  • WriteConcern.ACKNOWLEDGED: a operação de gravação retorna depois que a operação é gravada na memória.

  • WriteConcern.W1: A operação de gravação retorna depois que apenas o nó primário reconhece a operação de gravação, sem esperar pela confirmação dos nós secundários.

  • WriteConcern.W2: A operação de gravação retorna após o nó primário e pelo menos um nó secundário reconhecerem a operação de gravação.

  • WriteConcern.W3: A operação de gravação retorna após o nó primário e pelo menos dois nós secundários reconhecerem a operação de gravação.

  • WriteConcern.MAJORITY: A operação de gravação retorna após a maioria dos membros do conjunto de réplica reconhecer a operação de gravação.

  • WriteConcern.UNACKNOWLEDGED: A operação de gravação retorna após o nó primário processar a operação de gravação.

  • WriteConcern.JOURNALED: a operação de gravação retorna depois que o nó primário grava os dados no diário em disco.

O exemplo a seguir define a write concern como "majority" para uma instância de MongoClient:

MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString("<your connection string>"))
.writeConcern(WriteConcern.MAJORITY)
.build();
MongoClient client = MongoClients.create(settings);

O exemplo a seguir define a write concern como "majority" para uma collection:

MongoCollection<Document> collection = database.getCollection("<collection name>");
collection = collection.withWriteConcern(WriteConcern.MAJORITY);

Observação

Collections e bancos de dados são imutáveis

MongoDatabase e MongoCollection instâncias são imutáveis. Quando você define a write concern em um banco de dados ou em uma collection, o método retorna uma nova instância e não afeta a instância original.

Para obter mais informações sobre write concern, consulte Write Concern no manual do servidor MongoDB.

A read concern especifica os seguintes comportamentos:

Você pode especificar a read concern usando o método readConcern() em um cliente ou transação, ou usando o método withReadConcern() em um banco de dados ou collection. Os métodos readConcern() e withReadConcern() aceitam um único parâmetro que especifica o nível de read concern.

Você pode definir os seguintes níveis de read concern:

  • ReadConcern.LOCAL: a query retorna os dados mais recentes da instância. Não garante que os dados tenham sido gravados para a maioria dos membros do conjunto de réplicas.

  • ReadConern.AVAILABLE: a query retorna os dados mais recentes da instância. Não garante que os dados tenham sido gravados para a maioria dos membros do conjunto de réplicas. ReadConcern.AVAILABLE não está disponível para uso com sessões e transações causalmente consistentes.

  • ReadConcern.MAJORITY: a query retorna dados que foram confirmados por uma maioria dos membros do conjunto de réplicas.

  • ReadConcern.LINEARIZABLE: a query retorna dados que refletem todas as gravações bem-sucedidas concluídas antes do início da operação de leitura. ReadConcern.LINEARIZABLE não está disponível para uso com sessões e transações causalmente consistentes.

  • ReadConcern.SNAPSHOT: a query retorna dados comprometidos pela maioria como aparece nos fragmentos, a partir de um único ponto específico no passado recente.

Para obter mais informações sobre os níveis de read concern, consulte Níveis de read concern no manual do servidor MongoDB.

O exemplo a seguir define o read concern como ReadConcern.MAJORITY para uma instância de MongoClient:

MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString("<your connection string>"))
.readConcern(ReadConcern.MAJORITY)
.build();
MongoClient client = MongoClients.create(settings);

O exemplo a seguir define o read concern como ReadConcern.MAJORITY para uma collection:

MongoCollection<Document> collection = database.getCollection("<collection name>");
collection = collection.withReadConcern(ReadConcern.MAJORITY);

Para saber mais sobre read concern, consulte Read Concern no manual do servidor MongoDB.

A preferência de leitura determina qual membro de um conjunto de réplicas o MongoDB lê ao executar uma query. Você pode definir a read preference usando o método readPreference() em um cliente ou transação, ou usando o método withReadPreference() em um banco de dados ou collection.

Os métodos readPreference() e withReadPreference() aceitam um modo de preferência de leitura como um parâmetro. Você pode definir o modo de read preference para um dos seguintes valores:

  • ReadPreference.primary(): a query retorna dados do nó primário.

  • ReadPreference.primaryPreferred(): a query retorna dados do nó primário, se disponíveis. Caso contrário, a query retornará dados de um nó secundário.

  • ReadPreference.secondary(): a query retorna dados de um nó secundário.

  • ReadPreference.secondaryPreferred(): A query retorna dados de um nó secundário, se disponíveis. Caso contrário, a query retorna dados do nó primary.

  • ReadPreference.nearest(): a query retorna dados do nó com a menor latência de rede.

O exemplo a seguir define a read preference ReadPreference.secondary() para uma instância de MongoClient:

MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString("<your connection string>"))
.readPreference(ReadPreference.secondary())
.build();

O exemplo a seguir define a read preference ReadPreference.secondary() para uma collection:

MongoCollection<Document> collection = database.getCollection("<collection name>");
collection = collection.withReadPreference(ReadPreference.secondary());

Para obter mais informações sobre a read preference, consulte Read preference no manual do servidor MongoDB.

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Criptografia em execução