La classe MongoDB\Driver\ReadConcern

(mongodb >=1.1.0)

Introduction

MongoDB\Driver\ReadConcern contrÎle le niveau d'isolation pour les opérations de lecture pour les ensembles de réplicas et les fragments d'ensembles de réplicas. Cette option nécessite MongoDB 3.2 ou ultérieur.

Synopsis de la classe

final class MongoDB\Driver\ReadConcern implements MongoDB\BSON\Serializable, Serializable {
/* Propriétés */
public readonly ?string $level;
/* Constantes */
const string AVAILABLE = "available";
const string LINEARIZABLE = "linearizable";
const string LOCAL = "local";
const string MAJORITY = "majority";
const string SNAPSHOT = "snapshot";
/* Méthodes */
final public function bsonSerialize(): stdClass
final public function __construct(?string $level = null)
final public function getLevel(): ?string
final public function isDefault(): bool
}

Propriétés

level
Le niveau de lecture. null si aucun niveau n'a été spécifié.

Constantes pré-définies

MongoDB\Driver\ReadConcern::AVAILABLE

Par défaut pour les lectures sur les secondaires lorsque afterClusterTime et level ne sont pas spécifiés.

La requĂȘte renvoie les donnĂ©es les plus rĂ©centes de l'instance. Ne garantit pas que les donnĂ©es ont Ă©tĂ© Ă©crites sur la majoritĂ© des membres de l'ensemble de rĂ©plicas (c'est-Ă -dire qu'elles peuvent ĂȘtre annulĂ©es).

Pour les collections non fragmentées (y compris les collections dans un déploiement autonome ou un déploiement de réplicas), les lectures "local" et "available" se comportent de maniÚre identique.

Pour un cluster partagĂ©, la lecture "available" fournit une plus grande tolĂ©rance aux partitions car elle n'attend pas pour garantir des garanties de cohĂ©rence. Cependant, une requĂȘte avec une lecture "available" peut renvoyer des documents orphelins si le fragment est en cours de migration de morceaux car la lecture "available", contrairement Ă  la lecture "local", ne contacte pas le primaire du fragment ni les serveurs de configuration pour obtenir des mĂ©tadonnĂ©es mises Ă  jour.

MongoDB\Driver\ReadConcern::LINEARIZABLE

La requĂȘte renvoie les donnĂ©es qui reflĂštent toutes les Ă©critures rĂ©ussies Ă©mises avec un niveau d'Ă©criture de "majority" et reconnu avant le dĂ©but de l'opĂ©ration de lecture. Pour les ensembles de rĂ©plicas qui fonctionnent avec writeConcernMajorityJournalDefault dĂ©fini sur true, la lecture linĂ©arisable renvoie des donnĂ©es qui ne seront jamais annulĂ©es.

Avec writeConcernMajorityJournalDefault dĂ©fini sur false, MongoDB n'attendra pas que les Ă©critures w: "majority" soient durables avant d'accuser rĂ©ception des Ă©critures. En tant que tel, les opĂ©rations d'Ă©criture "majority" pourraient Ă©ventuellement ĂȘtre annulĂ©es en cas de perte d'un membre de l'ensemble de rĂ©plicas.

Il est possible de spécifier un niveau de lecture linéarisable pour les opérations de lecture sur le primaire uniquement.

La lecture linĂ©arisable garantit que les opĂ©rations de lecture spĂ©cifient un filtre de requĂȘte qui identifie de maniĂšre unique un seul document.

Astuce

Toujours utiliser maxTimeMS avec une lecture linĂ©arisable en cas de non-disponibilitĂ© de la majoritĂ© des membres porteurs de donnĂ©es. maxTimeMS garantit que l'opĂ©ration ne bloque pas indĂ©finiment et garantit plutĂŽt que l'opĂ©ration renvoie une erreur si le niveau de lecture ne peut pas ĂȘtre satisfait.

La lecture linéarisable nécessite MongoDB 3.4.

MongoDB\Driver\ReadConcern::LOCAL

Défaut pour les lectures sur le primaire si level n'est pas spécifié et pour les lectures sur les secondaires si level n'est pas spécifié mais que afterClusterTime est spécifié.

La requĂȘte renvoie les donnĂ©es les plus rĂ©centes de l'instance. Ne garantit pas que les donnĂ©es ont Ă©tĂ© Ă©crites sur la majoritĂ© des membres de l'ensemble de rĂ©plicas (c'est-Ă -dire qu'elles peuvent ĂȘtre annulĂ©es).

MongoDB\Driver\ReadConcern::MAJORITY

La requĂȘte renvoie les donnĂ©es les plus rĂ©centes reconnues comme ayant Ă©tĂ© Ă©crites sur la majoritĂ© des membres de l'ensemble de rĂ©plicas.

Pour utiliser le niveau de lecture "majority", les ensembles de réplicas doivent utiliser le moteur de stockage WiredTiger et le protocole d'élection version 1.

MongoDB\Driver\ReadConcern::SNAPSHOT

La lecture "snapshot" est disponible pour les transactions multi-documents, et à partir de MongoDB 5.0, pour certaines opérations de lecture en dehors des transactions multi-documents.

Si la transaction ne fait pas partie d'une session cohérente, lors de la validation de la transaction avec un niveau d'écriture "majority", les opérations de transaction sont garanties d'avoir lu à partir d'un instantané des données majoritairement engagées.

Si la transaction fait partie d'une session cohérente, lors de la validation de la transaction avec un niveau d'écriture "majority", les opérations de transaction sont garanties d'avoir lu à partir d'un instantané des données majoritairement engagées qui assure la cohérence causale avec l'opération immédiatement précédent le début de la transaction.

En dehors des transactions multi-documents, le niveau de lecture "snapshot" est disponible sur les primaires et les secondaires pour les opérations de lecture suivantes : find, aggregate et distinct (sur les collections non fragmentées). Toutes les autres commandes de lecture interdisent "snapshot".

Historique

Version Description
PECL mongodb 2.3.0 Ajout des propriétés publiques readonly.
PECL mongodb 1.11.0

Ajout de la constante MongoDB\Driver\ReadConcern::SNAPSHOT.

PECL mongodb 1.7.0 Implémente Serializable.
PECL mongodb 1.4.0

Ajout de la constante MongoDB\Driver\ReadConcern::MAJORITY.

PECL mongodb 1.2.0

Ajout de la constante MongoDB\Driver\ReadConcern::LINEARIZABLE

Implémente MongoDB\BSON\Serializable.

Sommaire

add a note

User Contributed Notes

There are no user contributed notes for this page.