Configurar operações em conjuntos de réplicas
Visão geral
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:
Cliente, que define o padrão para todas as execuções de operações, a menos que sejam substituídas
transação
Database
collection
A lista anterior 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 .
Escreva preocupação
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 chamando as seguintes funções:
mongoc_client_set_write_concern()
define a preocupação de gravação em um cliente.mongoc_transaction_opts_set_write_concern()
define a preocupação de gravação em uma transação.mongoc_database_set_write_concern()
define a preocupação de gravação em um banco de dados.mongoc_collection_set_write_concern()
define a preocupação de gravação em uma coleção.
Para especificar o nível da preocupação de gravação, chame a função mongoc_write_concern_set_w()
e passe a preocupação de gravação e um dos seguintes valores:
MONGOC_WRITE_CONCERN_W_DEFAULT
: a operação de gravação retorna depois que a operação é gravada na memória.0
: A operação de gravação retorna após o nó primário processar a operação de gravação.1
: 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.MONGOC_WRITE_CONCERN_W_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.MONGOC_WRITE_CONCERN_W_TAG
: A operação de gravação retorna após o membro do conjunto de réplicas com a tag especificada reconhecer a operação de gravação.
O exemplo a seguir define a preocupação de gravação como MONGOC_WRITE_CONCERN_W_MAJORITY
para uma instância de mongoc_client_t
:
// Create a new client instance mongoc_client_t *client = mongoc_client_new ("<connection string>"); // Create a new write concern mongoc_write_concern_t *write_concern = mongoc_write_concern_new (); mongoc_write_concern_set_w (write_concern, MONGOC_WRITE_CONCERN_W_MAJORITY); // Set the write concern on the client mongoc_client_set_write_concern (client, write_concern);
O exemplo a seguir define a preocupação de gravação como MONGOC_WRITE_CONCERN_W_MAJORITY
para uma collection:
mongoc_collection_t *collection = mongoc_client_get_collection (client, "<database name>", "<collection name>"); // Create a new write concern mongoc_write_concern_t *write_concern = mongoc_write_concern_new (); mongoc_write_concern_set_w (write_concern, MONGOC_WRITE_CONCERN_W_MAJORITY); // Set the write concern on the collection mongoc_collection_set_write_concern (collection, write_concern);
Observação
Collections e bancos de dados são imutáveis
mongoc_database_t
e mongoc_collection_t
instâncias são imutáveis. Quando você define a preocupação de gravação em um banco de dados 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 preocupação de gravação, consulte Write Concern no manual do MongoDB Server .
Preocupação de leitura
A read concern especifica os seguintes comportamentos:
Nível de consistência causal entre conjuntos de réplicas
Garantias de isolamento mantidas durante uma query
Você pode especificar o preocupação de leitura chamando as seguintes funções:
mongoc_client_set_read_concern()
define a preocupação de leitura em um cliente.mongoc_transaction_opts_set_read_concern()
define a preocupação de leitura em uma transação.mongoc_database_set_read_concern()
define a preocupação de leitura em um banco de dados de dados .mongoc_collection_set_read_concern()
define a preocupação de leitura em uma coleção.
Para especificar o nível do seu preocupação de leitura, chame a função mongoc_read_concern_set_level()
e passe o preocupação de leitura e um dos seguintes valores:
MONGOC_READ_CONCERN_LEVEL_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.MONGOC_READ_CONCERN_LEVEL_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.MONGOC_READ_CONCERN_LEVEL_MAJORITY
: a query retorna dados que foram confirmados por uma maioria dos membros do conjunto de réplicas.MONGOC_READ_CONCERN_LEVEL_LINEARIZABLE
: a query retorna dados que refletem todas as gravações bem-sucedidas concluídas antes do início da operação de leitura.MONGOC_READ_CONCERN_LEVEL_LINEARIZABLE
não está disponível para uso com sessões e transações causalmente consistentes.MONGOC_READ_CONCERN_LEVEL_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 MONGOC_READ_CONCERN_LEVEL_MAJORITY
para uma instância de mongoc_client_t
:
mongoc_client_t *client = mongoc_client_new ("<connection string>"); // Create a new read concern mongoc_read_concern_t *read_concern = mongoc_read_concern_new (); // Set the read concern level mongoc_read_concern_set_level (read_concern, MONGOC_READ_CONCERN_LEVEL_MAJORITY); // Set the read concern on the client mongoc_client_set_read_concern (client, read_concern);
O exemplo a seguir define o preocupação de leitura como MONGOC_READ_CONCERN_LEVEL_MAJORITY
para uma collection:
mongoc_collection_t *collection = mongoc_client_get_collection (client, "<database name>", "<collection name>"); // Create a new read concern mongoc_read_concern_t *read_concern = mongoc_read_concern_new (); // Set the read concern level mongoc_read_concern_set_level (read_concern, MONGOC_READ_CONCERN_LEVEL_MAJORITY); // Set the read concern on the collection mongoc_collection_set_read_concern (collection, read_concern);
Para saber mais sobre preocupação de leitura, consulte Read Concern no manual do MongoDB Server .
readPreference
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 chamando as seguintes funções:
mongoc_client_set_read_prefs()
define a preferência de leitura em um cliente.mongoc_transaction_opts_set_read_prefs()
define a preferência de leitura em uma transação.mongoc_database_set_read_prefs()
define a preferência de leitura em um banco de dados de dados .mongoc_collection_set_read_prefs()
define a preferência de leitura em uma collection.
Para especificar o nível da sua preferência de leitura, chame a função mongoc_read_prefs_new()
e passe um dos seguintes valores:
MONGOC_READ_PRIMARY
: a query retorna dados do nó primário.MONGOC_READ_PRIMARY_PREFERRED
: a query retorna dados do nó primário, se disponíveis. Caso contrário, a query retornará dados de um nó secundário.MONGOC_READ_SECONDARY
: a query retorna dados de um nó secundário.MONGOC_READ_SECONDARY_PREFERRED
: A query retorna dados de um nó secundário, se disponíveis. Caso contrário, a query retorna dados do nó primary.MONGOC_READ_NEAREST
: a query retorna dados do nó com a menor latência de rede.
O exemplo a seguir define a preferência de leitura MONGOC_READ_SECONDARY
para uma instância de mongoc_client_t
:
mongoc_client_t *client = mongoc_client_new ("<connection string>"); // Create a new read preference mongoc_read_prefs_t *read_prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY); // Set the read preference on the client mongoc_client_set_read_prefs (client, read_prefs);
O exemplo a seguir define a preferência de leitura MONGOC_READ_SECONDARY
para uma collection:
mongoc_collection_t *collection = mongoc_client_get_collection (client, "<database name>", "<collection name>"); // Create a new read preference mongoc_read_prefs_t *read_prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY); // Set the read preference on the collection mongoc_collection_set_read_prefs (collection, read_prefs);
Para obter mais informações sobre a preferência de leitura, consulte Read preference no manual do MongoDB Server .
Documentação da API
Para saber mais sobre qualquer uma das funções ou tipos discutidos neste guia, consulte a seguinte documentação da API: