mongoDB主从读写分离怎样实现,具体操作是什么
Admin 2022-11-16 群英技术资讯 1251 次浏览
这篇文章主要介绍“mongoDB主从读写分离怎样实现,具体操作是什么”,有一些人在mongoDB主从读写分离怎样实现,具体操作是什么的问题上存在疑惑,接下来小编就给大家来介绍一下相关的内容,希望对大家解答有帮助,有这个方面学习需要的朋友就继续往下看吧。mongoDB主从读写分离
MongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模式。如果您的环境不符合副本集模式可参考本文,来实现主从读写分离。
resources.properties
mongodb_read.host=10.0.0.45 mongodb_read.port=27017 mongodb_read.apname=ecsp mongodb_read.username= mongodb_read.password= mongodb_write.host=10.0.0.46 mongodb_write.port=27017 mongodb_write.apname=ecsp mongodb_write.username= mongodb_write.password=
mongo_config.xml
classpath:resources.properties
web.xml
contextConfigLocation
/WEB-INF/classes/mongo_config.xml
实体层ChexunMongoOptions.Java
package com.ecsp.chexun.mongo;
import javax.net.SocketFactory;
import com.mongodb.DBDecoderFactory;
import com.mongodb.MongoOptions;
/**
* Mongo配置类
*
* @author vincent.he
* @version 1.0, Created on 2012-3-12
*
*/
public class ChexunMongoOptions extends MongoOptions{
private String username;
private String password;
private String dbname;
public ChexunMongoOptions(){
super();
}
public void setDescription(String description) {
this.description = description;
}
public void setConnectionsPerHost(int connectionsPerHost) {
this.connectionsPerHost = connectionsPerHost;
}
public void setThreadsAllowedToBlockForConnectionMultiplier(
int threadsAllowedToBlockForConnectionMultiplier) {
this.threadsAllowedToBlockForConnectionMultiplier = threadsAllowedToBlockForConnectionMultiplier;
}
public void setMaxWaitTime(int maxWaitTime) {
this.maxWaitTime = maxWaitTime;
}
public void setConnectTimeout(int connectTimeout) {
this.connectTimeout = connectTimeout;
}
public void setSocketTimeout(int socketTimeout) {
this.socketTimeout = socketTimeout;
}
public void setSocketKeepAlive(boolean socketKeepAlive) {
this.socketKeepAlive = socketKeepAlive;
}
public void setAutoConnectRetry(boolean autoConnectRetry) {
this.autoConnectRetry = autoConnectRetry;
}
public void setMaxAutoConnectRetryTime(long maxAutoConnectRetryTime) {
this.maxAutoConnectRetryTime = maxAutoConnectRetryTime;
}
public void setSlaveOk(boolean slaveOk) {
this.slaveOk = slaveOk;
}
public void setDbDecoderFactory(DBDecoderFactory dbDecoderFactory) {
this.dbDecoderFactory = dbDecoderFactory;
}
public void setSafe(boolean safe) {
this.safe = safe;
}
public void setW(int w) {
this.w = w;
}
public void setWtimeout(int wtimeout) {
this.wtimeout = wtimeout;
}
public void setFsync(boolean fsync) {
this.fsync = fsync;
}
public void setJ(boolean j) {
this.j = j;
}
public void setSocketFactory(SocketFactory socketFactory) {
this.socketFactory = socketFactory;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDbname() {
return dbname;
}
public void setDbname(String dbname) {
this.dbname = dbname;
}
}
Java dao层
package com.ecsp.chexun.mongo;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.CommandResult;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
/**
* mongo 操做方法
* @author zhanglibing
*
*/
public class MongoHelper {
private Mongo mongo;
private Mongo mongo_read;
private Mongo mongo_write;
private String dataBaseName = "cxec";
public MongoHelper(){}
public MongoHelper(Mongo mongo,Mongo mongo_read,Mongo mongo_write){
this.mongo = mongo;
this.mongo_read = mongo_read;
this.mongo_write = mongo_write;
}
// public MongoHelper(String dbName){
// dataBaseName = dbName;
// }
public int add(String collectionName,BasicDBObject dbObject){
// DB db = MongoManager.getDB(dataBaseName);
DB db = mongo_write.getDB(dataBaseName);
DBCollection dbc = db.getCollection(collectionName);
return dbc.save(dbObject).getN();
}
//批量添加
public int addAll( String collectionName,List
list){
// DB db = MongoManager.getDB(dataBaseName);
DB db = mongo_write.getDB(dataBaseName);
DBCollection dbc = db.getCollection(collectionName);
return dbc.insert(list).getN();
}
public int isExists(String collectionName,BasicDBObject query){
// DB db = MongoManager.getDB(dataBaseName);
DB db = mongo_read.getDB(dataBaseName);
DBCollection dbc = db.getCollection(collectionName);
return dbc.find(query).size();
}
public List
get(String collectionName,BasicDBObject query){ // DB db = MongoManager.getDB(dataBaseName); DB db = mongo_read.getDB(dataBaseName); DBCollection dbc = db.getCollection(collectionName); return dbc.find(query).toArray(); } public int getCount(String collectionName,BasicDBObject query){ // DB db = MongoManager.getDB(dataBaseName); DB db = mongo_read.getDB(dataBaseName); DBCollection dbc = db.getCollection(collectionName); return dbc.find(query).count(); } public List
get(String collectionName,BasicDBObject query,BasicDBObject keys){ // DB db = MongoManager.getDB(dataBaseName); DB db = mongo_read.getDB(dataBaseName); DBCollection dbc = db.getCollection(collectionName); return dbc.find(query, keys).toArray(); } /*** * 获取mongo 中 collection 的值 * @param collectionName * @param query 查询条件 * @param keys 查询字段 * @param batchSize 返回个数 * @return */ public List
get(String collectionName,BasicDBObject query,BasicDBObject keys,BasicDBObject orderBy,int batchSize){ // DB db = MongoManager.getDB(dataBaseName); DB db = mongo_read.getDB(dataBaseName); DBCollection dbc = db.getCollection(collectionName); if(orderBy != null){ return dbc.find(query, keys).sort(orderBy).limit(batchSize).toArray(); } return dbc.find(query, keys).limit(batchSize).toArray(); } public List
get(String collectionName,BasicDBObject query,BasicDBObject keys,BasicDBObject orderBy,int batchSize,int n){ // DB db = MongoManager.getDB(dataBaseName); DB db = mongo_read.getDB(dataBaseName); DBCollection dbc = db.getCollection(collectionName); if(orderBy != null){ return dbc.find(query, keys).sort(orderBy).limit(batchSize).skip(n).toArray(); } return dbc.find(query, keys).limit(batchSize).toArray(); } public List
get(String collectionName,DBObject query,int batchSize){ // DB db = MongoManager.getDB(dataBaseName); DB db = mongo_read.getDB(dataBaseName); DBCollection dbc = db.getCollection(collectionName); return dbc.find(query).limit(batchSize).toArray(); } public List
get(String collectionName,int number){ DB db = mongo_read.getDB(dataBaseName); DBCollection dbc = db.getCollection(collectionName); List
dboList = dbc.find().skip(0).limit(number).toArray(); return dboList; } public List
get(String collectionName,BasicDBObject query,BasicDBObject orderBy,int n,int pageSize ){ DB db = mongo_read.getDB(dataBaseName); DBCollection dbc = db.getCollection(collectionName); List
dboList = dbc.find(query).sort(orderBy).skip(n).limit(pageSize).toArray(); return dboList; } public List
get(String collectionName,BasicDBObject query,int top ){ DB db = mongo_read.getDB(dataBaseName); DBCollection dbc = db.getCollection(collectionName); List
dboList = dbc.find(query).skip(0).limit(top).toArray(); return dboList; } public List
get(String collectionName,DBObject query,DBObject orderBy,int batchSize){ // DB db = MongoManager.getDB(dataBaseName); DB db = mongo_read.getDB(dataBaseName); DBCollection dbc = db.getCollection(collectionName); return dbc.find(query).sort(orderBy).limit(batchSize).toArray(); } public int reomve(String collectionName,BasicDBObject o){ // DB db = MongoManager.getDB(dataBaseName); DB db = mongo_write.getDB(dataBaseName); DBCollection dbc = db.getCollection(collectionName); return dbc.remove(o).getN(); } public int edit(String collectionName,BasicDBObject query,BasicDBObject update){ // DB db = MongoManager.getDB(dataBaseName); DB db = mongo_write.getDB(dataBaseName); DBCollection dbc = db.getCollection(collectionName); return dbc.update(query, update).getN(); //return dbc.updateMulti(query, update).getN(); } public int edit(String cmd){ // DB db = MongoManager.getDB(dataBaseName); DB db = mongo.getDB(dataBaseName); CommandResult cmdResult = db.command(cmd); if(cmdResult.ok()) { return 1; } return 0; } // public DBCollection get(String collectionName){ //// DB db = MongoManager.getDB(dataBaseName); // DB db = mongo.getDB(dataBaseName); // return db.getCollection(collectionName); // } public void setMongo(Mongo mongo) { this.mongo = mongo; } public void setMongo_read(Mongo mongo_read) { this.mongo_read = mongo_read; } public void setMongo_write(Mongo mongo_write) { this.mongo_write = mongo_write; } }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
mongodb适用于存储日志,通过MongoDB存储日志文件,查询简单(索引),写入导出方便(弹性结构没有表结构限制)。
你知道Mongodb怎样自增id吗?对于这个问题相信很多初学的小伙伴都是不了解的,那么今天小编就利用实例为大家讲述Mongodb自增id实现方法,希望对大家有所帮助。
MongoDB GridFS GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)。 GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。 GridFS 可以更好的存储大于16M的文件。 GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中。 Gr..
这篇文章给大家分享的是有关mongodb全文搜索的内容,为帮助大家熟悉mongodb全文搜索,下文还有文本搜索示例,供大家参考学习。下面就跟随小编一起看看吧。
这篇文章主要给大家分享几个Mongodb中常见错误以及解决方法,有需要的朋友可以参考,希望大家阅读完这篇文章能有所收获,下面我们一起来了解看看吧。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008