(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. |