Класс MongoDB\Driver\ReadConcern

(mongodb >=1.1.0)

Введение

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

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

final MongoDB\Driver\ReadConcern implements MongoDB\BSON\Serializable {
/* Константы */
const string AVAILABLE = "available" ;
const string LINEARIZABLE = "linearizable" ;
const string LOCAL = "local" ;
const string MAJORITY = "majority" ;
/* Методы */
final public bsonSerialize ( void ) : object
final public __construct ([ string $level ] )
final public getLevel ( void ) : string|null
final public isDefault ( void ) : bool
}

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

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.

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

Версия Описание
1.4.0

Добавлена константа MongoDB\Driver\ReadConcern::AVAILABLE.

1.2.0

Добавлена константа MongoDB\Driver\ReadConcern::LINEARIZABLE.

Реализует MongoDB\BSON\Serializable.

Содержание