Menu Docs
Página inicial do Docs
/ / /
C#/.NET
/

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

Esta lista está em ordem crescente de precedência. Por exemplo, se você definir read concerns nos níveis de cliente e banco de dados de dados, a preocupação de leitura especificada no nível do banco de dados de dados substituirá a preocupação de leitura 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 preocupação de gravação explícita herdam a configuração global padrão de preocupação de gravação .

Você pode definir a preocupação de gravação definindo a opção WriteConcern em um objeto MongoClientSettings, MongoDatabaseSettings ou MongoCollectionSettings ou usando o método WithWriteConcern() de um cliente, banco de dados de dados ou instância de coleção.

A opção WriteConcern e o método WithWriteConcern() aceitam uma instância do WriteConcern como um parâmetro. Você pode especificar a preocupação de gravação 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.WMajority: 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.

O exemplo a seguir define a preocupação de gravação como WriteConcern.WMajority para uma instância de MongoClient:

var mongoClientSettings = MongoClientSettings.FromConnectionString("<connection string URI>");
mongoClientSettings.WriteConcern = WriteConcern.WMajority;
var mongoClient = new MongoClient(mongoClientSettings);

O exemplo a seguir define a preocupação de gravação como WriteConcern.WMajority para uma collection:

var collection = database.GetCollection<BsonDocument>("<collection name>")
.WithWriteConcern(WriteConcern.WMajority);

Observação

Clientes, coleções e bancos de dados são imutáveis

IMongoClient, IMongoDatabase e IMongoCollection instâncias são imutáveis. Quando você define o preocupação de gravação em um cliente, banco de dados de dados ou coleção, o método retorna uma nova instância com as configurações especificadas e não afeta a instância original.

Para obter mais informações sobre preocupação de gravação, consulte Write Concern no manual do MongoDB Server .

A read concern especifica os seguintes comportamentos:

Você pode especificar a preocupação de leitura definindo a opção ReadConcern em um objeto MongoClientSettings, MongoDatabaseSettings ou MongoCollectionSettings ou usando o método WithReadConcern() em um cliente, banco de dados de dados ou coleção.

A opção ReadConcern e o método WithReadConcern() aceitam um único parâmetro que especifica o nível de preocupação de leitura .

Você pode definir os seguintes níveis de preocupação de leitura :

  • 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 preocupação de leitura , consulte Níveis de read concern no manual do MongoDB Server .

O exemplo a seguir define o preocupação de leitura como ReadConcern.Majority para uma instância de MongoClient:

var mongoClientSettings = MongoClientSettings.FromConnectionString("<connection string URI>");
mongoClientSettings.ReadConcern = ReadConcern.Majority;
var mongoClient = new MongoClient(mongoClientSettings);

O exemplo a seguir define o preocupação de leitura como ReadConcern.Majority para uma collection:

var collection = database.GetCollection<BsonDocument>("<collection name>")
.WithReadConcern(ReadConcern.Majority);

Para saber mais sobre preocupação de leitura, consulte Read Concern no manual do MongoDB Server .

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 preferência de leitura definindo a opção ReadPreference em um objeto MongoClientSettings, MongoDatabaseSettings ou MongoCollectionSettings , ou usando o método WithReadPreference() em um cliente, banco de dados de dados ou coleção.

A opção ReadPreference e o método WithReadPreference() aceitam um modo de preferência de leitura como um parâmetro. Você pode definir o modo de preferência de leitura 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 preferência de leitura ReadPreference.Secondary para uma instância de MongoClient:

var mongoClientSettings = MongoClientSettings.FromConnectionString("<connection string URI>");
mongoClientSettings.ReadPreference = ReadPreference.Secondary;
var mongoClient = new MongoClient(mongoClientSettings);

O exemplo a seguir define a preferência de leitura ReadPreference.Secondary para uma collection:

var collection = database.GetCollection<BsonDocument>("<collection name>")
.WithReadPreference(ReadPreference.Secondary);

Para obter mais informações sobre a preferência de leitura, consulte Read preference no manual do MongoDB Server .

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

Voltar

Pesquisar geoespacialmente