(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.
MongoDB\Driver\ReadConcern::SNAPSHOT
Гарантия чтения "snapshot"
доступна для транзакций с несколькими документами, а начиная с MongoDB 5.0 также доступна для некоторых операций чтения не только для транзакций с несколькими документами.
Если транзакция не является частью причинно-согласованного сессии, после фиксации транзакции с проблемой записи "majority"
,
операции транзакции гарантированно прочитают из моментального снимка зафиксированных большинством данных.
Если транзакция является частью причинно-согласованной сессии, при фиксации транзакции с проблемой записи "majority"
,
операции транзакции гарантированно считывают из моментального снимка данные, подтверждённые большинством, что обеспечивает причинную согласованность с операций, непосредственно предшествующей началу транзакции.
Вне транзакций с несколькими документами, проблема чтения "snapshot"
доступна на первичных и вторичных серверах
для следующих операций чтения: find
,
aggregate
и distinct
(для необработанных коллекций).
Все остальные команды чтения запрещают "snapshot"
.
Версия | Описание |
---|---|
PECL mongodb 1.11.0 |
Добавлена константа |
PECL mongodb 1.7.0 | Реализует Serializable. |
PECL mongodb 1.4.0 |
Добавлена константа |
PECL mongodb 1.2.0 |
Добавлена константа
Реализует MongoDB\BSON\Serializable. |