MongoDB\Driver\ReadConcern 클래스

(mongodb >=1.1.0)


소개

MongoDB\Driver\ReadConcern은 복제본 세트 및 복제본 세트 샤드에 대한 읽기 작업의 격리 수준을 제어합니다. 이 옵션을 사용하려면 MongoDB 3.2 이상이 필요합니다.


클래스 개요

final class MongoDB\Driver\ReadConcern implements MongoDB\BSON\Serializable, Serializable {
  /* Constants */
  const string AVAILABLE = "available";
  const string LINEARIZABLE = "linearizable";
  const string LOCAL = "local";
  const string MAJORITY = "majority";
  const string SNAPSHOT = "snapshot";
  /* Methods */
  final public bsonSerialize(): object
  final public __construct(string $level = ?)
  final public getLevel(): ?string
  final public isDefault(): bool
  final public serialize(): string
  final public unserialize(string $serialized): void
}
                

미리 정의된 상수

MongoDB\Driver\ReadConcern::AVAILABLE
afterClusterTimelevel이 지정되지 않은 경우 보조에 대한 읽기의 기본값입니다.

쿼리는 인스턴스의 가장 최근 데이터를 반환합니다. 데이터가 대부분의 복제 세트 구성원에 기록되었음을 보장하지 않습니다(즉, 롤백될 수 있음).

분할되지 않은 컬렉션(독립 실행형 배포 또는 복제본 집합 배포의 컬렉션 포함)의 경우 "local""available" 읽기 문제가 동일하게 작동합니다.

샤딩된 클러스터의 경우 "available" 읽기 문제는 일관성 보장을 기다리지 않기 때문에 파티션에 대해 더 큰 허용 오차를 제공합니다. 그러나 "available" 읽기 문제가 "local" 읽기 문제와 달리 업데이트된 메타데이터에 대해 샤드의 기본 서버나 구성 서버에 연결하지 않기 때문에 "available" 읽기 문제가 있는 쿼리는 샤드가 청크 마이그레이션을 진행 중인 경우 고아 문서를 반환할 수 있습니다.

MongoDB\Driver\ReadConcern::LINEARIZABLE
쿼리는 "majority"의 쓰기 문제로 발행되고 읽기 작업이 시작되기 전에 승인된 모든 성공적인 쓰기를 반영하는 데이터를 반환합니다. writeConcernMajorityJournalDefaulttrue로 설정된 상태에서 실행되는 복제본 세트의 경우 선형화 가능한 읽기 문제는 롤백되지 않을 데이터를 반환합니다.

writeConcernMajorityJournalDefaultfalse로 설정되면 MongoDB는 w: "다수" 쓰기가 쓰기를 승인하기 전에 내구성이 있기를 기다리지 않습니다. 따라서 w: "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, aggregatedistinct(분할되지 않은 컬렉션에서). 다른 모든 읽기 명령은 "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을 구현합니다.


기타


목차