MongoDB基本知识(补充)

Posted JerryZao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB基本知识(补充)相关的知识,希望对你有一定的参考价值。

NoSQL: Not only SQL
    非关系型数据库,不是一种特定的技术,分类多种
    而关系型数据库,就是一种特定的技术

    大数据问题:BigData
        并行数据库系统:关系型数据库,采用SQL,水平切分
        NoSQL 数据库管理系统:非关系型,分布式,不支持ACID数据设计范式
            简单数据模型
            元数据和数据分离的模式
            弱一致性 
            高吞吐量
            高水平扩展能力,低端硬件集群

        NewSQL数据库管理系统:
            代表:Clustrix, GenieDB, ScaleBase,MinbusDB,Drizzle

        云数据管理
    大数据的分析处理:
        MapReduce

    CAP:分布式满足两者就很不错了
        C:一致性(强)
            因果一致性
            读自写一致性
            会话一致性
        A: 可用性(随时都可以返回)
        P:分区容错性

    ACID:强一致性,隔离性,采用悲观保守方法,难以变化
    BASE:弱一致性,可用性优先,采用乐观的方法,适应变化,更加单,更快

数据存储模型:
    列式存储模型:看到跟关系型数据库样子一样,但是无法按行查(一般用于查某些字段有用)
    文档存储:MongoDB
    键值数据模型
    图式数据模型(不是图片的意思)


        列式模型:
            应用场景:在分布式文件系统之上提供支持随机读写的分布式数据存储
            典型产品:HBase、Hypertable、Cassandra
            数据模型:以“列”为中心进行存储,将同一列数据存储在一起
            优点:快速查询、高可扩展性、易于实现分布式扩展

        文档模型:
            应用场景:非强事务需求的web应用
            典型产品:MongoDB、ElasticSearch、CouchDB、CouchBase Server
            数据模型:键值模型,存储为文档
            优点:数据模型无须事先定义

        键值模型:
            应用场景:内容缓存,用于大量并行数据访问高负载场景
            典型产品:DynamoDB、Riak、Redis
            数据模型:基于哈希表实现的key-value
            优点:查询迅速

        图式模型:
            应用场景:社交网络、推荐系统、关系图谱
            典型产品:Neo4j、Infinite Graph
            数据模型:图式结构
            优点:适应于图式计算场景


    Mongod的常用选项:
        fork={true|false}: mongod是否运行在后台
        bind_ip=IP:指定监听的地址
        port=PORT: 指定监听的端口

        maxConns=: 并发最大连接数

    MongoDB的复制功能:
        两种类型:
            master/slave
            replica set: 复制集、副本集
                服务于同一数据集的多个mongodb实例

                主节点将数据修改操作保存至oplog中
                    arbiter: 仲裁者

            工作特性:至少三个,且应该为奇数个节点;可以使用arbiter来参与选举;
                heartbeat(2s), 自动失效转移(通过选举方式实现)

            复制集的中特殊类型的节点:
                0优先级的节点:冷备节点,不会被选举成为主节点,但可以参与选举;
                被隐藏的从节点:首先是一个0优先级的从节点,且对客户端不可见;
                延迟复制的从节点:首先是一个0优先级的从节点,且复制时间落后于主节点一个固定时长;
                arbiter: 

            MongoDB的复制架构:
                oplog:安装数据库后默认的数据量local 中存放
                heartbeat

                oplog: 大小固定的文件,存储在local数据库,幂等性,运行多少次,都是同一个结果

                    主节点才会写 oplog,同步给从节点,且是一个空间大小固定,所在文件系统的5%

                一个从节点加入后需要:
                    初始同步(initial sync)
                    回滚后追赶(post-rollback catch-up)
                    切分块迁移(sharding chunk migrations)

                local 数据库: 
                    放了副本集的所有元数据和oplog;
                    用于存储oplog的是一个名为oplog.rs的collection;
                    oplog.rs的大小依赖于OS及文件系统,自动生成;
                    但可以自定义其大小oplogSize,

            Mongo的数据同步类型:
                初始同步:
                    节点没有任何数据时
                    节点丢失副本复制历史
                复制
                
                初始同步的步骤:
                    1、克隆所有数据库
                    2、应用数据集的所有改变:复制oplog并应用于本地
                    3、为所有collection构建索引


        副本集的重新选举的影响条件:
            心跳信息
            优先级
            optime
            网络连接
            网络分区

        选举机制:
            触发选举的事件:
                新副本集初始化时
                从节点联系不到主节点时
                主节点“下台”时
                    主节点收到stepDown()命令时
                    某从节点有更高的优先级且已经满足成主节点其它所有条件
                    主节点无法联系到副本集的“多数方”


    MongoDB的分片:
            CPU
            Memory
            IO

        mysql分片需要借助: Gizzard, HiveDB, MySQL Proxy + HSACLE, Hibernate Shard, Pyshards

    MongoDB:默认就支持分片

        分片架构中的三种角色:
            mongos: Router
                将用户的强求路由到响应的分片上请求,可以认为是MongoDB的代理
            config server: 元数据服务器,哪个结点,存放了那些数据,类似分布式
                也需要多个,但是并不是副本集,所以需要第三方zookeper
            shard: 数据节点,也称mongod实例(每个结点都要有副本集,以防挂了)


        基于范围切片
            range
        基于列表切片
            list
        基于hash切片
            hash

            写离散,读集中

 

以上是关于MongoDB基本知识(补充)的主要内容,如果未能解决你的问题,请参考以下文章

如何将代码片段存储在 mongodb 中?

vs 2010代码片段

vs 2010代码片段

js常用代码片段

MongoDB入门系列 ===; 应用补充

MongoDB的补充操作,用户权限管理,查询操作