• 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或许延迟不同)。

  • 相关阅读:
    maven
    面试宝典之Java程序运行原理
    并发队列总结
    HashMap探究
    Linux安装python应用之前需要安装的库
    Linux中为Python应用安装uwsgi
    常用SQL语句
    Windows CE无法连接Win 10
    无法加载 DLL xpstar.dll 或它引用的一个 DLL。原因: 126(找不到指定的模块。)。
    SQL Server 数据恢复
  • 原文地址:https://www.cnblogs.com/skyblue/p/5526699.html
Copyright © 2020-2023  润新知