Класс MongoDB\Driver\ReadConcern
(mongodb >=1.1.0)
Введение
MongoDB\Driver\ReadConcern контролирует уровень изоляции для операций чтения для наборов реплик и сегментов наборов реплик. Эта опция требует MongoDB 3.2 или новее.
Обзор классов
Предопределенные константы
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.
Список изменений
Версия | Описание |
---|---|
PECL mongodb 1.7.0 | Реализует Serializable. |
PECL mongodb 1.4.0 |
Добавлена константа |
PECL mongodb 1.2.0 |
Добавлена константа
Реализует MongoDB\BSON\Serializable. |
Смотрите также
Содержание
- MongoDB\Driver\ReadConcern::bsonSerialize — Возвращает объект для сериализации BSON
- MongoDB\Driver\ReadConcern::__construct — Создает новый ReadConcern
- MongoDB\Driver\ReadConcern::getLevel — Возвращает опцию "level" ReadConcern
- MongoDB\Driver\ReadConcern::isDefault — Проверяет, является ли гарантией чтения по умолчанию
- MongoDB\Driver\ReadConcern::serialize — Сериализация ReadConcern
- MongoDB\Driver\ReadConcern::unserialize — Десериализация ReadConcern