gpt4 book ai didi

c# - 了解 MongoDB C# 中的 WriteConcern

转载 作者:IT老高 更新时间:2023-10-28 13:29:42 27 4
gpt4 key购买 nike

我一直在阅读 Write Concern在 MongoDB 中。我知道有几个级别决定了写操作成功的保证级别,您设置的这个级别越高,性能权衡。但是,我在 C# 环境中工作,我试图弄清楚如何在那里使用 Write Concern 以及哪些级别最适合某些情况。我已经想出了如何使用 WriteConcernResult 对象收集检查结果,我主要对关卡本身感兴趣。

这些是我的问题:

如何在 C# 中为特定写入设置 Write Concern 级别?

This answer建议使用连接字符串,但这看起来像一个全局设置,这是我不想要的,因为我将使用的一些写操作比其他操作更“重要”,我不想破坏性能。我注意到有一个 WriteConcern class但是文档对它的使用不是很详细(它在文档中的 MongoDB.Driver Namespace 下)。

特别是,我如何将其设置为“Journaled”或“Replica Acknowledged”,默认情况下它是“Acknowledged”?

哪些类型的问题可以通过每个级别的 Write Concern 检查?

例如:系统崩溃、电源故障、网络连接问题等。我对不容易检测到的东西特别感兴趣,因为电源故障等非常明显,我们可以估计操作可能失败的时间间隔并做出相应的 react 。

最佳答案

对于 2.x c# 驱动程序,您可以通过以下方式使用写入关注:

var collection = db.GetCollection<Record>(collectionName)
.WithWriteConcern(new WriteConcern(
w: 1,
wTimeout: default(TimeSpan?),
fsync: true,
journal: false));

那么使用此集合对数据库的任何更新都将使用传递的写入关注点。

collection.InsertOne(...);
collection.ReplaceOne(...);
collection.UpdateMany(...);
and so on

有几个预定义的写入问题,例如

对于非常快速但不可靠的更新:

var collection = db.GetCollection<Record>(collectionName)
.WithWriteConcern(WriteConcern.Unacknowledged);

或类似于默认的WriteConcern (w=1)

var collection = db.GetCollection<Record>(collectionName)
.WithWriteConcern(WriteConcern.W1);

或用于确认副本集的大多数成员

var collection = db.GetCollection<Record>(collectionName)
.WithWriteConcern(WriteConcern.WMajority);

有关详细信息和更多选项,请参阅此处的文档: https://mongodb.github.io/mongo-csharp-driver/2.7/apidocs/html/T_MongoDB_Driver_WriteConcern.htm

关于c# - 了解 MongoDB C# 中的 WriteConcern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26660950/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com