- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
什么时候应该调用 MongoClient.GetServer()
和 MongoServer.GetDatabase()
?
之前,我在启动时创建了一个 MongoDatabase
实例,并将其用于所有操作。问题是当发生故障转移时,主节点变成了不同的节点,导致实例不正确。
我应该为每个操作调用 myClient.GetServer().GetDatabase(myDatabaseName)
吗?这可能是最正确的,尽管某些调用无论如何都会在故障转移期间失败。我很想为至少一组操作重用同一个数据库实例。
我主要担心的是频繁调用 GetServer()
和 GetDatabase()
会引入开销。我确定驱动程序会使用连接池并希望它会缓存实例,但我不知道它什么时候必须与服务器通信。
最佳答案
你应该有一个 MongoClient
代表你与数据库的抽象连接,一个 GetServer()
调用来实例化一个 MongoServer
实例一组选项,以及一个 GetDatabase()
调用来实例化一个 MongoDatabase
实例。对于同一组选项,您不需要这些对象的多个实例。
这个问题的根本原因似乎是故障转移处理。驱动程序应该发现整个副本集并自动连接到主副本集。发生故障转移时,有一段时间没有主节点,因为选举发生了,但是驱动程序应该连接到新的主节点并恢复正常操作。您的客户端代码应该能够以适合您的应用程序的任何方式处理故障转移期。故障转移不会使您的 MongoClient
、MongoServer
或 MongoDatabase
实例失效。
关于c# - MongoClient GetServer/GetDatabase 与 ReplicaSet 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25496435/
我必须使用 getservbyname() 函数获取有关服务的信息,我已经检查过 _PATH_SERVICES 引用了服务数据库文件的“/etc/services”,但是当我尝试打印返回的信息端口号时
我正在尝试获取 MinecraftForge 中的 MinecraftServer 实例。 这是我一直在尝试的代码: MinecraftServer minecraftServer = Minecra
using (ConnectionMultiplexer connection = ConnectionMultiplexer.Connect("redisIP:6379,allowAdmin=tru
来自 mongoDB.Driver 文档 (http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-csharp-driver/
这是我的数据库连接字符串: private static string ConnectionString = "mongodb://user:password@server:port/"; priva
什么时候应该调用 MongoClient.GetServer() 和 MongoServer.GetDatabase()? 之前,我在启动时创建了一个 MongoDatabase 实例,并将其用于所有
本文整理了Java中org.apache.hadoop.yarn.ipc.YarnRPC.getServer()方法的一些代码示例,展示了YarnRPC.getServer()的具体用法。这些代码示例
在Tomcat 7中等效于org.apache.catalina.ServerFactory.getServer()还是什么是检索org.apache.catalina.Session实例的最佳方法?
本文整理了Java中com.ucar.datalink.domain.media.parameter.zk.ZkMediaSrcParameter.getServers()方法的一些代码示例,展示了Z
我正在尝试熟悉从 C# 程序写入 MongoDB。我已经按照 http://mongodb.github.io/mongo-csharp-driver/1.11/getting_started/ 的建
我有这样的代码: // configure the SSLContext with a TrustManager SSLContext ctx = SSLContext.getInst
我是一名优秀的程序员,十分优秀!