# Класс MongoDB\Driver\ReadConcern

(mongodb >=1.1.0)

## Введение

Класс MongoDB\Driver\ReadConcern контролирует уровень изоляции для операций чтения для наборов реплик и сегментов наборов реплик. Эта опция требует БД MongoDB 3.2 или новее.

## Обзор класса

final class MongoDB\Driver\ReadConcern implements MongoDB\BSON\Serializable, Serializable {
/* Свойства */
public readonly ?string $level;
/* Константы */
const string AVAILABLE = "available";
const string LINEARIZABLE = "linearizable";
const string LOCAL = "local";
const string MAJORITY = "majority";
const string SNAPSHOT = "snapshot";
/* Методы */
final public function bsonSerialize(): stdClass
final public function __construct(?string `$level` = `null`)
final public function getLevel(): ?string
final public function isDefault(): bool
}

## Свойства

level
  Уровень read concern. `null`, если уровень не указан.

## Предопределённые константы

`MongoDB\Driver\ReadConcern::AVAILABLE`

  По умолчанию для чтения на вторичных узлах, когда опции `afterClusterTime` и `level` не указали.

  Запрос возвращает самые последние данные экземпляра. Не гарантирует, что данные были записаны большинству членов набора реплик (то есть могут быть откаты).

  Для неохраняемых коллекций (включая коллекции в автономном развёртывании или развёртывании набора реплик), `"local"` и `"available"` гарантии чтения ведут себя одинаково.

  Для сегментированного кластера `"available"` гарантии чтения обеспечивает большую терпимость для разделов, поскольку она не ожидает гарантий согласованности. Однако запрос с `"available"` гарантиями чтения может вернуть потерянные документы, если в сегменте выполняется миграция фрагментов, поскольку `"available"` гарантий чтения, в отличие от `"local"` гарантий чтения, не связывается с первичным сервером сегмента или серверами конфигурации для получения обновлённых метаданных.

`MongoDB\Driver\ReadConcern::LINEARIZABLE`

  Запрос возвращает данные, которые отражают все успешные записи, выпущенные с гарантиями записи `"majority"` и подтверждённые до начала операции чтения. Для наборов реплик, которые выполняются с параметром `writeConcernMajorityJournalDefault`, установленным в значение `true`, линеаризуемые гарантии чтения возвращают данные, которые никогда не будут откатываться.

  Если для `writeConcernMajorityJournalDefault` задано значение `false`, MongoDB не будет ожидать, что `w: "majority"` записей будет устойчивым, прежде чем подтвердить записи. Таким образом, операции записи `"majority"` могут откатываться в случае потери члена набора реплик.

  Вы можете указать линеаризуемые гарантии чтения для операций чтения только на основном сервере.

  Линеаризуемые гарантии чтения применяются только в том случае, если в операциях чтения указан фильтр запроса, который однозначно идентифицирует один документ.

  Подсказка

  Всегда используйте `maxTimeMS` с линеаризуемыми гарантиями чтения, если большинство элементов, несущих данные, недоступно. `maxTimeMS` гарантирует, что операция не блокируется бесконечно, и вместо этого гарантирует, что операция возвращает ошибку, если проблема чтения не может быть выполнена.

  Для линеаризуемых гарантий чтения требуется MongoDB 3.4.

`MongoDB\Driver\ReadConcern::LOCAL`

  По умолчанию для чтения по первичному, если `level` не указан, и для чтения по вторичному, если `level` не указан, но задано `afterClusterTime`.

  Запрос возвращает самые последние данные экземпляра. Не гарантирует, что данные были записаны большинству членов набора реплик (то есть могут быть откаты).

`MongoDB\Driver\ReadConcern::MAJORITY`

  Запрос возвращает самые последние данные экземпляра, которые были признаны записанными большинству членов в наборе реплик.

  Чтобы использовать уровень гарантий чтения `"majority"`, наборы реплик должны использовать механизм хранения WiredTiger и протокол выбора версии 1.

`MongoDB\Driver\ReadConcern::SNAPSHOT`

  Гарантия чтения `"snapshot"` доступна для транзакций с несколькими документами, а начиная с MongoDB 5.0 также доступна для некоторых операций чтения не только для транзакций с несколькими документами.

  Если транзакция не является частью причинно-согласованного сессии, после фиксации транзакции с проблемой записи `"majority"`, операции транзакции гарантированно прочитают из моментального снимка зафиксированных большинством данных.

  Если транзакция является частью причинно-согласованной сессии, при фиксации транзакции с проблемой записи `"majority"`, операции транзакции гарантированно считывают из моментального снимка данные, подтверждённые большинством, что обеспечивает причинную согласованность с операций, непосредственно предшествующей началу транзакции.

  Вне транзакций с несколькими документами, проблема чтения `"snapshot"` доступна на первичных и вторичных серверах для следующих операций чтения: `find`, `aggregate` и `distinct` (для необработанных коллекций). Все остальные команды чтения запрещают `"snapshot"`.

## Список изменений

Версия | Описание
--- | ---
PECL-модуль mongodb 2.3.0 | Добавлены свойства public readonly.
PECL mongodb 1.11.0 | Добавлена константа `MongoDB\Driver\ReadConcern::SNAPSHOT`.
PECL mongodb 1.7.0 | Реализует Serializable.
PECL mongodb 1.4.0 | Добавлена константа `MongoDB\Driver\ReadConcern::AVAILABLE`.
PECL mongodb 1.2.0 | Добавлена константа `MongoDB\Driver\ReadConcern::LINEARIZABLE`. Реализует MongoDB\BSON\Serializable.

## Смотрите также

- » Справка по гарантиям чтения

## Содержание

- MongoDB\Driver\ReadConcern::bsonSerialize — Возвращает объект для сериализации BSON
- MongoDB\Driver\ReadConcern::__construct — Создаёт новый ReadConcern
- MongoDB\Driver\ReadConcern::getLevel — Возвращает опцию "level" ReadConcern
- MongoDB\Driver\ReadConcern::isDefault — Проверяет, является ли гарантией чтения по умолчанию

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open