MongoDB 驱动以及分布式集群读取优先级设置
1 MongoDB C 驱动编译安装
3 使用C驱动
3 遇到的坑


mongoc_read_prefs_t* read_prefs = mongoc_read_prefs_new(MONGOC_READ_NEAREST);
bson_t* tag = bson_new();
mongoc_read_prefs_add_tag(read_prefs, tag);
bson_destroy(tag);
mongoc_cursor_t* cursor = mongoc_collection_find(collection, MONGOC_QUERY_NONE, , , , query, NULL, read_prefs);
bson_t* tag = bson_new();
BSON_APPEND_UTF8(tag, "location", "bj");
mongoc_read_prefs_add_tag(read_prefs, tag);
bson_destroy(tag);
bson_t* tag = bson_new();
BSON_APPEND_UTF8(tag, "location", "bj");
mongoc_read_prefs_add_tag(read_prefs, tag);
mongoc_read_prefs_add_tag(read_prefs, NULL);
bson_destroy(tag);
4 其它驱动
#!/home/work/bin/python
# test find with tag_set
# cswuyg @ 2014.7.18
# install pymongo pre. import pymongo
import time REMOTE_ADDRESS = "xxxxhost"
REMOTE_PORT = 27030
def _test_find():
f_w = open("test", 'w')
#client = pymongo.MongoClient(REMOTE_ADDRESS, 27030, readPreference='nearest')
rpre = pymongo.read_preferences.Secondary(tag_sets = [{'location': 'gz'}])
client = pymongo.MongoClient(REMOTE_ADDRESS, REMOTE_PORT, read_preference=rpre) # 注意这里的read_preference
s = time.time()
docs = client.myapp.myuser.find({'name': 'cswuyg'})
with open('tmp.txt', 'w') as f_w:
for item in docs:
f_w.write(str(item))
f_w.write('\n') e = time.time()
print(e - s) if __name__ == "__main__":
_test_find()
/*
* 测试 mongodb 驱动 耗时
* cswuyg @ 2015.12.29
*/
"use strict";
var mongodb = require('mongodb');
var assert = require('assert');
var fs = require('fs');
var url = 'mongodb://xxxhost:27030/myapp?w=1&readPreference=nearest&readPreferenceTags=location:bj'; //在uri上设置读取优先级和tag var findDocuments = function(collection, callback) {
collection.find({'name': 'cswuyg'}).limit(1).toArray(function(err, docs) {
callback(docs);
});
} mongodb.MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
console.log("Connected correctly to server");
var col = db.collection('myuser');
var s = new Date().getTime();
findDocuments(col, function(docs) {
var writerStream = fs.createWriteStream('tmp.txt');
writerStream.write(JSON.stringify(docs[0]), 'UTF8');
writerStream.end();
var e = new Date().getTime();
console.log(e - s);
});
});
/*
* * 测试 mongoose 耗时
* * cswuyg @ 2015.12.29
* */
"use strict"; var mongoose = require('mongoose');
var fs = require('fs');
var connect = mongoose.createConnection('mongodb://xxxhost:27030, yyyhost:27030/myapp', {mongos: true}); //注意mongos var schema = {name: {type: String}};
var colSchema = new mongoose.Schema(schema, {collection: 'myuser'});
var model = connect.model('myuser', colSchema); setTimeout(function() {
var s = new Date().getTime();
var query = new mongoose.Query({'name': 'cswuyg'}).read('n', [{location:'nj'}]); //Query层面设置读取优先级和tag
model.find(query).exec(function(err, doc) {
var writerStream = fs.createWriteStream('output.txt');
writerStream.write(doc.toString(), 'UTF8');
writerStream.end();
var e = new Date().getTime();
console.log(e - s);
}); }, 1000); setTimeout(function() {
var s = new Date().getTime();
var query = new mongoose.Query({'name': 'cswuyg'}).read('n', [{location:'nj'}]);
model.find(query).exec(function(err, doc) {
var writerStream = fs.createWriteStream('output.txt');
writerStream.write(doc.toString(), 'UTF8');
writerStream.end();
var e = new Date().getTime();
console.log(e - s);
}); }, 2000);
MongoDB 驱动以及分布式集群读取优先级设置的更多相关文章
- 2020重新出发,NOSQL,MongoDB分布式集群架构
MongoDB分布式集群架构 看到这里相信你已经掌握了 MongoDB 的大部分基本知识,现在在单机环境下操作 MongoDB 已经不存在问题,但是单机环境只适合学习和开发测试,在实际的生产环境中,M ...
- spring-session实现分布式集群session的共享
前言 HttpSession是通过Servlet容器创建和管理的,像Tomcat/Jetty都是保存在内存中的.但是我们把应用搭建成分布式的集群,然后利用LVS或Nginx做负载均衡,那么来自同一用户 ...
- spring-session实现分布式集群session的共享(转)
原文: https://www.cnblogs.com/youzhibing/p/7348337.html HttpSession是通过Servlet容器创建和管理的,像Tomcat/Jetty都是保 ...
- mongodb的分布式集群(2、副本集)
概述 副本集是主从复制的一种,是一种自带故障转移功能的主从复制.攻克了上述主从复制的缺点.实现主server发生问题后.不需人为介入.系统自己主动从新选举一个新的主server的功能. ...
- mongodb的分布式集群(4、分片和副本集的结合)
概述 前面3篇博客讲了mongodb的分布式和集群,当中第一种的主从复制我们差点儿不用,没有什么意义,剩下的两种,我们不论单独的使用哪一个.都会出现对应的问题.比較好的一种解决方式就是.分片和副本集的 ...
- mongodb分布式集群搭建手记
一.架构简介 目标单机搭建mongodb分布式集群(副本集 + 分片集群),演示mongodb分布式集群的安装部署.简单操作. 说明在同一个vm启动由两个分片组成的分布式集群,每个分片都是一个PSS( ...
- YCSB测试HBase远程完全分布式集群
写在前面 本文只讲一个很简单的问题,YCSB对HBase集群的测试.虽然网上有很多介绍YCSB测试HBase的文章,但都是针对本地HBase伪分布式集群的.大家都知道,稍微正式一些的压测都会要求测试客 ...
- MongoDB 3.0 常见集群的搭建(主从复制,副本集,分片....)
一.mongodb主从复制配置 主从复制是mongodb最常用的复制方式,也是一个简单的数据库同步备份的集群技术,这种方式很灵活.可用于备份,故障恢复,读扩展等. 最基本的设置方式就是建立一个主节 ...
- elasticsearch 口水篇(5)es分布式集群初探
es有很多特性,分布式.副本集.负载均衡.容灾等. 我们先搭建一个很简单的分布式集群(伪),在同一机器上配置三个es,配置分别如下: cluster.name: foxCluster node.nam ...
随机推荐
- AtCoder Grand Contest 008 A
Problem Statement Snuke has a calculator. It has a display and two buttons. Initially, the display s ...
- 一看便知_linux安装redis和调试
rpm包下载地址: http://vault.centos.org/6.3/os/x86_64/Packages/1.进入目录,解压文件 # tar -zxvf redis-3 ...
- 关于freemaker的一点使用技巧
在做国泰君安2016年中秋送电影票活动中,需要做这样一个手机页面,展示所有中奖用户的中奖信息.如下图: 要求对用户的后记号码中间5位做隐藏处理.最开始的处理方法是在对用户实体的get()方法做处理 / ...
- Qual F&Q
[1]长按power键,下面有四个选项可以选择户外,静音,振动标准四种模式 GlobalActions.java->createDialog(): if (!mHasVibrator) { mS ...
- 【leetcode❤python】 125. Valid Palindrome
#-*- coding: UTF-8 -*- class Solution(object): def isPalindrome(self, s): ""&quo ...
- AIDMA VS AISAS vs ISMAS 营销法则
AIDMA法则与传统媒体时代 引起注意——产生兴趣——培养欲望——形成记忆——购买行动 注:AIDMA,传统消费者行为学理论模型,即:Attention(引起注意),Interest (引起兴趣),D ...
- 图说函数模板右值引用参数(T&&)类型推导规则(C++11)
见下图: 规律总结: 只要我们传递一个基本类型是A④的左值,那么,传递后,T的类型就是A&,形参在函数体中的类型就是A&. 只要我们传递一个基本类型是A的右值,那么,传递后,T的类型就 ...
- 一文说尽C++赋值运算符重载函数(operator=)
写在前面: 关于C++的赋值运算符重载函数(operator=),网络以及各种教材上都有很多介绍,但可惜的是,内容大多雷同且不全面.面对这一局面,在下在整合各种资源及融入个人理解的基础上,整理出一篇较 ...
- 微信小程序-基础内容组件
icon 图标 示例: <view class="group"> <block wx:for="{{iconSize}}"> <i ...
- QAbstractItemView::setRootIndex(const QModelIndex & index) 失效
问题: 在逻辑中使用了, QAbstractItemView::setRootIndex(const QModelIndex & index), 第一次设置生效, view 进入了model ...