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 字串 LOCAL = "local";
const 字串 MAJORITY = "majority";
const 字串 SNAPSHOT = "snapshot";
/* 方法 */
final public bsonSerialize(): stdClass
final public __construct(?字串 $level = null)
final public getLevel(): ?字串
final public isDefault(): 布林值
final public serialize(): 字串
final public unserialize(字串 $data): void
}

預定義常數

MongoDB\Driver\ReadConcern::AVAILABLE

當 `afterClusterTime` 和 `level` 未指定時,針對次要節點讀取的預設值。

查詢返回執行個體的最新資料。不保證資料已寫入大多數副本集成員(即可能會被回滾)。

對於未分片的集合(包括獨立部署或副本集部署中的集合),`"local"` 和 `"available"` 讀取策略的行為相同。

對於分片叢集,`"available"` 讀取策略對分割區容錯能力更強,因為它不會等待確保一致性保證。然而,使用 `"available"` 讀取策略的查詢可能會返回孤立文件,如果分片正在進行區塊遷移,因為 `"available"` 讀取策略與 `"local"` 讀取策略不同,它不會聯繫分片的 primary 節點或 config servers 以獲取更新的元數據。

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 介面。

另請參閱

目錄

新增註解

使用者貢獻的註解

此頁面沒有使用者貢獻的註解。
To Top