gpt4 book ai didi

c# - MongoClient GetServer/GetDatabase 与 ReplicaSet 的最佳实践

转载 作者:太空宇宙 更新时间:2023-11-03 15:51:46 25 4
gpt4 key购买 nike

什么时候应该调用 MongoClient.GetServer()MongoServer.GetDatabase()

之前,我在启动时创建了一个 MongoDatabase 实例,并将其用于所有操作。问题是当发生故障转移时,主节点变成了不同的节点,导致实例不正确。

我应该为每个操作调用 myClient.GetServer().GetDatabase(myDatabaseName) 吗?这可能是最正确的,尽管某些调用无论如何都会在故障转移期间失败。我很想为至少一组操作重用同一个数据库实例。

我主要担心的是频繁调用 GetServer()GetDatabase() 会引入开销。我确定驱动程序会使用连接池并希望它会缓存实例,但我不知道它什么时候必须与服务器通信。

最佳答案

你应该有一个 MongoClient 代表你与数据库的抽象连接,一个 GetServer() 调用来实例化一个 MongoServer 实例一组选项,以及一个 GetDatabase() 调用来实例化一个 MongoDatabase 实例。对于同一组选项,您不需要这些对象的多个实例。

这个问题的根本原因似乎是故障转移处理。驱动程序应该发现整个副本集并自动连接到主副本集。发生故障转移时,有一段时间没有主节点,因为选举发生了,但是驱动程序应该连接到新的主节点并恢复正常操作。您的客户端代码应该能够以适合您的应用程序的任何方式处理故障转移期。故障转移不会使您的 MongoClientMongoServerMongoDatabase 实例失效。

关于c# - MongoClient GetServer/GetDatabase 与 ReplicaSet 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25496435/

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