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基本知识(补充)的主要内容,如果未能解决你的问题,请参考以下文章