美文网首页
mongodb学习笔记

mongodb学习笔记

作者: wangzun | 来源:发表于2015-10-23 21:31 被阅读0次
    分片,副本级集群对比
    分片 副本级集群
    实现意义 提升并发性能 数据沉余,提升度性能
    架构上 水平化 中心化
    实现原理 数据分散 数据镜像
    维护成本 相对高 较容易
    分片节点

    Shard节点:
    存取数据的节点( 单个mongod)
    Config server:
    储存元数据,为mongos服务,路由到Shard
    Mongos
    接收请求,进行消息路由

    成员节点启动参数

    Shard:

    mongod --shardsvr
    mongod --shardsvr --rpelSet (副本集)
    

    Config server:

    mongod --configsvr
    

    Mongos

    mongos --configdb <configdb server>
    

    分片步骤

    > use admin
    > sh.addShard("ip:port")
    > db.runCommand({enablesharding:"db"})
    > db.runCommand({"shardcollection":"db.collection",key:{"key":1}})
    

    查看shard成员

    > use config
    > db.shards.find()
    

    产看shard状态

    > db.printShardingStatus()
    

    哈希分片

    >db.runCommand({"shardcollection":"db.collection","key":{key:hashed}})
    
    范围分片和哈希分片的对比

    基于范围的分片方式提供了更高效的范围查询,给定一个片键的范围,分发路由可以很简单地确定哪个数据块存储了请求需要的数据,并将请求转发到相应的分片中.

    不过,基于范围的分片会导致数据在不同分片上的不均衡,有时候,带来的消极作用会大于查询性能的积极作用.比如,如果片键所在的字段是线性增长的,一定时间内的所有请求都会落到某个固定的数据块中,最终导致分布在同一个分片中.在这种情况下,一小部分分片承载了集群大部分的数据,系统并不能很好地进行扩展.

    与此相比,基于哈希的分片方式以范围查询性能的损失为代价,保证了集群中数据的均衡.哈希值的随机性使数据随机分布在每个数据块中,因此也随机分布在不同分片中.但是也正由于随机性,一个范围查询很难确定应该请求哪些分片,通常为了返回需要的结果,需要请求所有分片.

    相关文章

      网友评论

          本文标题:mongodb学习笔记

          本文链接:https://www.haomeiwen.com/subject/spithttx.html