最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mongoDB 實現(xiàn)主從讀寫分離實現(xiàn)的實例代碼

 更新時間:2017年01月18日 10:01:41   投稿:lqh  
這篇文章主要介紹了 mongoDB 實現(xiàn)主從讀寫分離實現(xiàn)的實例代碼的相關(guān)資料,需要的朋友可以參考下

mongoDB主從讀寫分離

MongoDB官方已經(jīng)不建議使用主從模式了,替代方案是采用副本集的模式, 點擊查看。如果您的環(huán)境不符合副本集模式可參考本文,來實現(xiàn)主從讀寫分離。

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

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
  xmlns:mongo="http://www.springframework.org/schema/data/mongo"
  xsi:schemaLocation="http://www.springframework.org/schema/context   
     http://www.springframework.org/schema/context/spring-context-2.0.xsd   
     http://www.springframework.org/schema/data/mongo   
     http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd   
     http://www.springframework.org/schema/beans   
     http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

  <!-- 連接數(shù)據(jù)庫信息 -->
  <bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
      <list>
        <value>classpath:resources.properties</value>
      </list>
    </property>
  </bean>
  <!-- 讀start -->
  <bean id="mongoServerReadAddress" class="com.mongodb.ServerAddress">
    <constructor-arg value="${mongodb_read.host}"></constructor-arg>
    <constructor-arg value="${mongodb_read.port}"></constructor-arg>
  </bean>
  <bean id="chexunMongoReadOptions" class="com.ecsp.chexun.mongo.ChexunMongoOptions">
    <property name="username" value="${mongodb_read.username}" />
    <property name="password" value="${mongodb_read.password}" />
    <property name="dbname" value="${mongodb_read.apname}" />
    <property name="connectionsPerHost" value="100" />
    <property name="threadsAllowedToBlockForConnectionMultiplier"
      value="5" />
    <property name="slaveOk" value="true" />
  </bean>
  <bean id="mongo_read" class="com.mongodb.Mongo">
    <constructor-arg ref="mongoServerReadAddress"></constructor-arg>
    <constructor-arg ref="chexunMongoReadOptions"></constructor-arg>
  </bean>
  <!-- 讀end -->

  <!-- 寫start -->
  <bean id="mongoServerWriteAddress" class="com.mongodb.ServerAddress">
    <constructor-arg value="${mongodb_write.host}"></constructor-arg>
    <constructor-arg value="${mongodb_write.port}"></constructor-arg>
  </bean>
  <bean id="chexunMongoWriteOptions" class="com.ecsp.chexun.mongo.ChexunMongoOptions">
    <property name="username" value="${mongodb_write.username}" />
    <property name="password" value="${mongodb_write.password}" />
    <property name="dbname" value="${mongodb_write.apname}" />
    <property name="connectionsPerHost" value="100" />
    <property name="threadsAllowedToBlockForConnectionMultiplier"
      value="5" />
  </bean>
  <bean id="mongo_write" class="com.mongodb.Mongo">
    <constructor-arg ref="mongoServerWriteAddress"></constructor-arg>
    <constructor-arg ref="chexunMongoWriteOptions"></constructor-arg>
  </bean>
  <!-- 寫end -->

  <!-- 鏈接對象注入start -->
  <bean id="mongoHelper" class="com.ecsp.chexun.mongo.MongoHelper">
    <constructor-arg ref="mongo_read"></constructor-arg>
    <constructor-arg ref="mongo_write"></constructor-arg>
  </bean>

  <!-- 鏈接對象注入end -->
</beans>

web.xml

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
    /WEB-INF/classes/mongo_config.xml
  </param-value>
</context-param>

實體層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<DBObject> 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<DBObject> 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<DBObject> 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 返回個數(shù)
   * @return
   */
  public List<DBObject> 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<DBObject> 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<DBObject> 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<DBObject> get(String collectionName,int number){
    DB db = mongo_read.getDB(dataBaseName);
    DBCollection dbc = db.getCollection(collectionName);  
    List<DBObject> dboList = dbc.find().skip(0).limit(number).toArray();
    return dboList;
  }
  public List<DBObject> get(String collectionName,BasicDBObject query,BasicDBObject orderBy,int n,int pageSize ){
    DB db = mongo_read.getDB(dataBaseName);
    DBCollection dbc = db.getCollection(collectionName);  
    List<DBObject> dboList = dbc.find(query).sort(orderBy).skip(n).limit(pageSize).toArray();
    return dboList;
  }
  public List<DBObject> get(String collectionName,BasicDBObject query,int top ){
    DB db = mongo_read.getDB(dataBaseName);
    DBCollection dbc = db.getCollection(collectionName);  
    List<DBObject> dboList = dbc.find(query).skip(0).limit(top).toArray();

    return dboList;
  }
  public List<DBObject> 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;
  }



}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Ubuntu 14.04  安裝 MongoDB 及 PHP MongoDB Driver詳細介紹

    Ubuntu 14.04 安裝 MongoDB 及 PHP MongoDB Driver詳細介紹

    這篇文章主要介紹了Ubuntu 14.04 安裝 MongoDB 及 PHP MongoDB Driver詳細介紹的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 在阿里云centos下部署mongodb教程

    在阿里云centos下部署mongodb教程

    這里給大家分享的是作者在阿里云centos下部署mongodb的過程全記錄,非常的詳細,也遇到了很多問題,最終部署成功,希望對大家能夠有所幫助
    2017-08-08
  • MongoDB教程之基本管理命令

    MongoDB教程之基本管理命令

    這篇文章主要介紹了MongoDB教程之基本管理命令,本文講解了啟動和停止MongoDB、服務器狀態(tài)監(jiān)控兩部份內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • MongoDB數(shù)據(jù)庫聚合之分組統(tǒng)計$group的用法詳解

    MongoDB數(shù)據(jù)庫聚合之分組統(tǒng)計$group的用法詳解

    在MongoDB中聚合框架允許用戶對數(shù)據(jù)進行處理和分析,以便進行統(tǒng)計計算、匯總以及更復雜的數(shù)據(jù)轉(zhuǎn)換,這篇文章主要給大家介紹了關(guān)于MongoDB數(shù)據(jù)庫聚合之分組統(tǒng)計$group的用法的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • MongoDB特定類型的查詢語句實例

    MongoDB特定類型的查詢語句實例

    在關(guān)系型數(shù)據(jù)庫中,可以實現(xiàn)基于表的各種各樣的查詢,下面這篇文章主要給大家介紹了關(guān)于MongoDB特定類型查詢的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • 在Linux ubuntu下安裝mongodb的方法

    在Linux ubuntu下安裝mongodb的方法

    這篇文章主要給大家介紹了在Linux ubuntu系統(tǒng)上如何安裝mongodb的方法,大家都知道MongoDB是多平臺的文檔存儲數(shù)據(jù)庫;所以本文在ubuntu系統(tǒng)中安裝MongoDB。文中給出了詳細的步驟,相信對大家的理解和學習很有幫助,有需要的朋友們下面來一起看看吧。
    2016-11-11
  • MongoDB存儲時間時差問題的解決方法

    MongoDB存儲時間時差問題的解決方法

    這篇文章主要給大家介紹了關(guān)于MongoDB存儲時間時差問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mongodb具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-09-09
  • MongoDB中單對象大小超16M的存儲方案

    MongoDB中單對象大小超16M的存儲方案

    在 MongoDB 中,單個文檔的大小限制為 16MB,如果某個對象(文檔)的大小超過 16MB該怎么辦,所以本文給大家介紹了MongoDB中單對象大小超16M的存儲方案,需要的朋友可以參考下
    2025-01-01
  • mongodb本地連接失敗的問題解決

    mongodb本地連接失敗的問題解決

    本文主要介紹了mongodb本地連接失敗的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • MongoDB基礎之查詢文檔

    MongoDB基礎之查詢文檔

    這篇文章介紹了MongoDB基礎之查詢文檔,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06

最新評論

综艺| 河北区| 遂川县| 黄骅市| 霸州市| 乌鲁木齐市| 平阳县| 都兰县| 澎湖县| 南溪县| 永泰县| 鸡东县| 乌兰察布市| 连州市| 四平市| 清涧县| 芷江| 德钦县| 栾城县| 岱山县| 社旗县| 高尔夫| 安达市| 司法| 镇安县| 福建省| 怀柔区| 西乌| 西青区| 绥芬河市| 柘城县| 和政县| 鄂托克旗| 福海县| 汶上县| 福贡县| 天长市| 舟山市| 利川市| 崇文区| 兴安县|