PHP Conference Japan 2024

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

afterClusterTimelevel未指定时,针对辅助节点读取的默认值。

查询返回实例的最新数据。不保证数据已写入副本集的大多数成员(即可能回滚)。

对于非分片集合(包括独立部署或副本集部署中的集合),"local""available" 读取关注点行为相同。

对于分片集群,"available" 读取关注点提供了对分区的更大容忍度,因为它不会等待确保一致性保证。但是,如果分片正在进行分片迁移,则使用 "available" 读取关注点的查询可能会返回孤立文档,因为 "available" 读取关注点与 "local" 读取关注点不同,不会联系分片的 primary 或配置服务器以获取更新的元数据。

MongoDB\Driver\ReadConcern::LINEARIZABLE

查询返回反映所有成功写入的数据,这些写入使用 "majority" 的写入关注点发出 *并且* 在读取操作开始之前确认。对于以 writeConcernMajorityJournalDefault 设置为 true 运行的副本集,线性化读取关注点返回永远不会回滚的数据。

writeConcernMajorityJournalDefault 设置为 false 时,MongoDB 不会等待 w: "majority" 写入持久化,然后再确认写入。因此,如果丢失了副本集成员,"majority" 写入操作可能会回滚。

您只能为 primary 上的读取操作指定线性化读取关注点。

线性化读取关注点保证仅适用于读取操作指定唯一标识单个文档的查询过滤器。

提示

如果大多数数据承载成员不可用,请始终将 maxTimeMS 与线性化读取关注点一起使用。 maxTimeMS 确保操作不会无限期阻塞,而是确保如果无法满足读取关注点,操作会返回错误。

线性化读取关注点需要 MongoDB 3.4。

MongoDB\Driver\ReadConcern::LOCAL

如果未指定 level,则针对 primary 读取的默认值;如果未指定 level 但指定了 afterClusterTime,则针对辅助节点读取的默认值。

查询返回实例的最新数据。不保证数据已写入副本集的大多数成员(即可能回滚)。

MongoDB\Driver\ReadConcern::MAJORITY

查询返回实例的最新数据,已确认已写入副本集中的大多数成员。

要使用 "majority" 的读取关注点级别,副本集必须使用 WiredTiger 存储引擎和选举协议版本 1。

MongoDB\Driver\ReadConcern::SNAPSHOT

读取关注点 "snapshot" 可用于多文档事务,并且从 MongoDB 5.0 开始,可用于多文档事务之外的某些读取操作。

如果事务不是因果一致会话的一部分,则在使用写入关注点 "majority" 提交事务时,保证事务操作已从大多数已提交数据的快照中读取。

如果事务是因果一致会话的一部分,则在使用写入关注点 "majority" 提交事务时,保证事务操作已从大多数已提交数据的快照中读取,该快照提供与紧接在事务开始之前的操作的因果一致性。

在多文档事务之外,读取关注点 "snapshot" 可用于 primary 和辅助节点上的以下读取操作:findaggregatedistinct(在非分片集合上)。所有其他读取命令都禁止 "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

目录

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top