CakeFest 2024: The Official CakePHP Conference

Класс MongoDB\Driver\ReadConcern

(mongodb >=1.1.0)

Введение

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

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

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

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

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

Добавлена константа 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.

Содержание

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top