[关闭]
@zero1036 2017-04-10T00:46:56.000000Z 字数 2088 阅读 1918

mongo驱动连接

Mongodb-Client Mongodb


官方文档:Connection String URI Format

DBA特别推荐:MongoDB Driver:使用正确的姿势连接分片集群

其中要注意的是:mongos链接,推荐配置多台mongos实现负载均衡,因此在配置分片集群时,驱动链接同样应该
配置多个mongos地址

驱动链接格式mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

基础选项

基础选项 说明 示例
mongodb:// 必写前缀
host1 单点mongod:指定单点服务地址;副本集:以,分隔,配置副本集所有服务地址;分片集群:以,分隔,配置副本集所有mongos服务地址;参照以下示例
:port1 端口,默认27017
/database 鉴权数据库,默认为admin;建议必填
/database 鉴权数据库,默认为admin;建议必填

示例:mongodb://tgor:12345678@192.168.101.41:27017,192.168.101.42:27017,192.168.101.43:27017/db1

副本集选项

副本集选项 说明 示例
replicaSet 副本集名称,需要配置多个服务器节点使用,如果只配置一个节点,驱动只会链接其一

示例:mongodb://tgor:12345678@192.168.101.41:27017,192.168.101.42:27017,192.168.101.43:27017/db1?replicaSet=testRS

连接选项

连接选项 说明 示例
ssl true: 使用TLS/SSL初始化连接;默认false: 不使用TLS/SSL初始化连接
connectTimeoutMS 链接超时毫秒数,默认是永不超时,建议必填
maxPoolSize 连接池连接数最大值,默认100
minPoolSize 连接池连接数最小值,默认0
waitQueueMultiple 驱动强行限制线程同时等待连接的个数
waitQueueTimeoutMS 在超时之前,线程等待连接生效的总时间。如果连接池到达最大并且所有的连接都在使用,这个参数就生效了

【写】选项

【写】选项 说明 示例
w w = N >= 1:表示写操作,得到N个实例或N个副本集节点确认安全写入,v2.0版本以后为默认选项;0:非安全写入,表示写操作,无需得到实例确认
wtimeoutMS 写操作超时毫秒数,0:不限制
journal 操作日志选项:true:数据在写入到DB磁盘文件之前,MongoDB会先把操作写入到Journal文件,是确认写入了Journal文件就返回;false:反之;参考:mongodb读写性能分析

注意:(官文
1. 如果设置了wtimeoutMS写操作超时,则必须要设置w>0,驱动要求确认安全写入;
2. wj决定了服务端何时确认写操作成功:The w option and the j option determine when mongod instances acknowledge write operations.(参考下表)

- j:未指定 j:true j:false
w:1 In memory:写入内存即确认 On-disk journal:写入磁盘日志 In memory:写入内存即确认
w:"majority" On-disk journal if running with journaling On-disk journal In memory

服务选择与发现选项

其他选项 说明 示例
heartbeatFrequencyMS 心跳间隙长度(毫秒)

Java驱动示例

注意:MongoClient会自动创建连接池,因此,大部分情况下,整个JVM应用中只需要有一个MongoClient实例就可以。

  1. private MongoClientURI clientURI = new MongoClientURI("mongodb://tgor:123456@192.168.x.x:27017,192.168.y.y:27017/testdb?readPreference=secondary&connectTimeoutMS=5000&w=0");
  2. private MongoClient mongo = new MongoClient(clientURI);
  3. @Bean
  4. protected Datastore getDatastore() {
  5. Morphia morphia = new Morphia();
  6. return morphia.createDatastore(mongo, clientURI.getDatabase());
  7. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注