mongodb分布式查询
分布式查询:mongodb的分布式模型分为replica set和sharded cluster。
sharded集群中将read根据sharding key(分片键)转发到指定的shard节点,read操作非常高效;当然如果query中没有包含sharding key,那么此次read将会被转发到所有的shard节点上,并有mongos server负责merge结果(包括排序),所以这种情况性能较差(俗称scatter、gather),对于大型集群,这种查询通常是不可行的。
对于replica set而言,只是涉及到将read操作路由到哪个secondary上,默认情况下,read请求总是在primary上发生,我们可以通过指定“read preference mode”来调整这一行为。
Java代码
collection.withReadPreference(ReadPreference.secondaryPreferred()).find();
上述代码表示尽可能从 secondary上读取,如果所有的secondary都失效则从primary上读取。可以实现“读写分离”。
目前支持的read模式:
1)primary:读操作只发生在primary上,默认的read模式。如果primary失效,则返回error。
2)primaryPreferred:读操作发生在primary上,如果primary失效,则由secondary接收read请求。这是一种比较良好的模式,
3)secondary:读操作只发生在secondary上,如果所欲哦的secondary都失效,则返回error。
4)secondaryPreferred:读操作通常发生在secondary上,如果所有的secondary都失效,则由primary接收read请求。
5)nearest:读取“最近”的节点,mongodb客户端将评估与每个节点的网络延迟,有限选择延迟最小的节点,primary和secondary都有可能接收到read请求(不同的Client或许延迟不同)。
mongodb分布式查询的更多相关文章
- 2020重新出发,NOSQL,MongoDB分布式集群架构
MongoDB分布式集群架构 看到这里相信你已经掌握了 MongoDB 的大部分基本知识,现在在单机环境下操作 MongoDB 已经不存在问题,但是单机环境只适合学习和开发测试,在实际的生产环境中,M ...
- TODO:MongoDB的查询更新删除总结
TODO:MongoDB的查询更新删除总结 常用查询,条件操作符查询,< .<=.>.>=.!= 对应 MongoDB的查询操作符是$lt.$lte.$gt.$gte.$ne ...
- MongoDB各种查询操作详解
这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下 一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...
- SQL分布式查询、跨数据库查询
--[方法1]连接服务器方法 --step1 创建链接服务器 exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB', 'ip地址' exec sp ...
- sql server中分布式查询随笔
由于业务逻辑的多样性 经常得在sql server中查询不同数据库中数据 这就产生了分布式查询的需求 现我将开发中遇到的几种查询总结如下: 1.access版本 --建立连接服务器 exec sp_a ...
- [置顶] MongoDB 分布式操作——分片操作
MongoDB 分布式操作——分片操作 描述: 像其它分布式数据库一样,MongoDB同样支持分布式操作,且MongoDB将分布式已经集成到数据库中,其分布式体系如下图所示: 所谓的片,其实就是一个单 ...
- Oracle 跨库 查询 复制表数据 分布式查询
方法一: 在眼下绝大部分数据库有分布式查询的须要.以下简单的介绍怎样在oracle中配置实现跨库訪问. 比方如今有2个数据库服务器,安装了2个数据库.数据库server A和B.如今来实如今A库中訪问 ...
- Mongodb高级查询【二】
上一篇文章,写了mongodb常规操作,继续写入,本章主要讲高级查询,文本,聚集,大数据查询. Mongodb的查询语法是很多的,是NOSQL队伍中比较丰富的一个.当然有很多查询跟关系型查询无法相比. ...
- mongoDB高级查询$type4array使用解析
今天在使用mongoDB高级查询$type:符号 -- 4代指Array类型发现一个问题. $type符号: $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. 下面是mong ...
随机推荐
- View相关知识学习总结
(一)LayoutInflater原理分析 LayoutInflater主要用于加载布局.通常情况下,加载布局的任务都是在Activity中调用setContentView()方法来完成的,该方法内部 ...
- Java基础知识学习(八)
IO操作 5个重要的类分别是:InputStream.OutStream.Reader.Writer和File类 面向字符的输入输出流 输入流都是Reader的子类, CharArrayReader ...
- 14、SEO工程师要阅读的书籍 - IT软件人员书籍系列文章
SEO工程师是Web项目中比较重要的一个角色.他主要负责网站的针对搜索引擎的优化方案的编写和实施.因为现在网站数量庞大,在全世界的这么多网站当中,想要让用户访问你的网站,就需要一些技巧性的内容.很多用 ...
- char(10)和VARCHAR(10)主要的区别是什么?
区别: 1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 如: 存储字符串“abc", 对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符), 而同样的 ...
- T-SQL基础--TOP
理解TOP子句 众所周知,TOP子句可以通过控制返回行的数量来影响查询. 我们知道TOP子句能很容易的满足返回指定行数的子集,接下来有一些例子来展示什么情况下使用TOP子句来返回一个结果集: 你打算返 ...
- Android Studio中使用android:src="@drawable/ic_launcher"报错
今天尝试着安装了Android Studio,界面确实不错,列表什么的也改了很多. 然后新建工程,习惯性在activity_main那里加上一段代码测试看看: <ImageView androi ...
- KVM 介绍(2):CPU 和内存虚拟化
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- dedecms调用标签总结(一)
dedecms 基本包含了一个常规网站需要的一切功能,拥有完善的中文学习资料,很容易上手,学习成本较低.学会dedecms 的模板修改.栏目新增.内容模型新增和常用的标签调用方法后,即便我们不懂 ph ...
- UDP模式聊天
//client (前台) import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAd ...
- java 25 - 4 网络编程之 UDP协议传输的代码优化
UDP协议的输出端: /* UDP发送数据: A:创建Socket发送端对象 B:创建数据报包(把数据打包) C:调用Socket对象发送数据报包 D:释放资源(底层是IO流) */ public c ...