猿教程 Logo

.Net连接MongoDb:. net 驱动程序中的读写首选项

介绍

在上一篇文章中,我们讨论了MongoDb中阅读偏好和阅读关注的想法。 两者都在多服务器场景中发挥作用,我们可以向MongoDb提供要从其中读取数据的提示:主服务器,辅助节点之一,响应时间最短的服务器等。

在这篇文章中,我们将看到如何在MongoDb .NET驱动程序中设置读写关系选项。

阅读驱动程序中的偏好和阅读关注

有多个级别,我们可以设置读写关系。 我们可以在客户层面设置如下:

MongoClientSettings settings = new MongoClientSettings();
settings.ReadConcern = new ReadConcern(ReadConcernLevel.Majority);
Tag tag = new Tag("tagName", "tagValue");
TagSet tagSet = new TagSet(new List<Tag>() { tag });
settings.ReadPreference = new ReadPreference(ReadPreferenceMode.Secondary, new List<TagSet>() { tagSet});
WriteConcern writeConcernWithNumberOfServers = new WriteConcern(2, TimeSpan.FromSeconds(60), false, false);
WriteConcern writeConcerntWithMajority = new WriteConcern("majority", TimeSpan.FromSeconds(60), false, false);
settings.WriteConcern = writeConcerntWithMajority;
MongoClient mongoClient = new MongoClient(settings);

上面的例子显示了一些事情:

  • MongoClientSettings对象是为阅读关注,阅读偏好和写入关注选项设置各种设置的入口点

  • ReadConcernLevel和ReadPreferenceMode都是枚举,它们具有我们在前一篇文章中看到的值。 读取偏好模式的大部分读取关注和辅助

  • 我们还提到我们可以为要读取的机器指定一个标签集。 Tag和TagSet对象有助于在代码中设置这些选项

  • WriteConcern可以是整数或一个字符串作为第一个参数。 你会从帖子中回想起一个整数和模式“多数”是什么意思。 接下来是写入操作的超时。 第一个布尔值代表我们以前没有讨论过的“fsync”参数,可以安全地将其置为false。 最后一个参数也是布尔类型,它是日记帐选项,即我们是否要等待写入操作被保存在日志中

在mongo客户端级别设置这些选项可以帮助您创建各种具有不同读写问题的mongo客户端。

使用MongoDatabaseSettings对象在数据库级别进行下一级别的定制:

ModelContext _modelContext = new ModelContext();
MongoDatabaseSettings dbSettings = new MongoDatabaseSettings();
//structure identical to MongoClientSettings
.
.
_modelContext.Database = _modelContext.Client.GetDatabase(configurationRepository.GetConfigurationValue("DemoDatabaseName", "model"), dbSettings);

MongoDatabaseSettings具有与MongoClientSettings相同类型的读取和写入关注选项,因此我没有提供任何新的代码示例。

我们还可以使用MongoCollectionSettings对象在集合级别上提供我们的设置:

MongoCollectionSettings collectionSettings = new MongoCollectionSettings();
//structure identical to MongoClientSettings
.
.
IMongoCollection<RestaurantDb> Database.GetCollection<RestaurantDb>(ConfigurationRepository.GetConfigurationValue("RestaurantsCollectionName", "restaurants"), collectionSettings);

再次,读写优先选项可以与MongoClientSettings的情况相同。 使用MongoCollectionSettings,我们可以为数据库中的每个集合设置不同的读取和写入首选项。

最后,我们可以直接在集合字符串中指定我们的读写首选项。 这篇文章解释了如何做到这一点,但这里是一个读取偏好的例子:

mongodb://example1.com,example2.com,example3.com/?readPreference=secondary

...这是另一个写作关注的例子:

mongodb://example1.com,example2.com,example3.com/?w=2&wtimeoutMS=2000

这是MongoDb与.NET系列中的最后一篇文章。 下一篇文章将总结我们所学到的内容。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/CsharpMongo/43.html