20200421 NoSQL笔记(八)

第八章 MongoDB实战
一、 MongoDB数据存储格式

  1. JSON
  1. JSON概述:
     JSON:JavaScript Object Notation(JavaScript对象表示法)
     JSON是存储和交换文本信息的语法,类似 XML
     JSON数据库语句可以容易被解析
     Web应用大量使用
     NAME-VALUE配对
     MongoDB第一版支持
  2. JSON语法:
    JSON就是一串字符串 只不过元素会使用特定的符号标注
     {} 双括号表示对象
     [] 中括号表示数组
     “” 双引号内是属性或值
     : 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
  1. BSON
  1. BSON是一种类JSON的二进制编码存储形式,简称Binary JSON
  2. BSON和JSON一样,支持内嵌的文档对象和数组对象
  3. BSON有JSON没有的一些数据类型,如Date和BinData类型

二、 MongoDB的关键特性

  1. 高性能
  1. MongoDB提供高性能的数据持久化。尤其是支持嵌入式数据模型,可减少数据库系统上的I/O活动。
  2. 索引支持更快的查询,包括嵌入式文档和数组的键
  1. 丰富的查询语言
  1. MongoDB支持丰富的查询语言:
    普通查询、条件查询、limit限制结果集数量、高级查询
  2. 支持读写操作、数据聚合、文本搜索和地理空间查询
  1. 高可用性和数据持久化
  1. MongoDB的复制集(副本集)提供:
    数据冗余,自动故障转移
  2. 数据持久化:
    副本集是一组保持相同数据集的MongoDB服务器,提供冗余增加数据可用性
  1. 水平可扩展
    20200421 NoSQL笔记(八)
    20200421 NoSQL笔记(八)
  2. MongoDB的缺点
  1. 空间的预分配;
  2. 字段名所占用的空间
  3. 删除记录不能释放空间

三、 MongoDB的数据逻辑结构

  1. 层次关系
    文档(document)、集合(collection)、数据库(database)、实例
    20200421 NoSQL笔记(八)

  2. 数据库命名的规则

  1. 不能是空字符串
  2. 不能含有空格,$,/,\,\0
  3. 全部小写
  4. 最多64个字节
  5. 不能与系统保留库同名,如admin,local以及config

四、 MongoDB架构部署
部署模型演化:MongoDB部署可以从简单逐步演化到非常强大也相当复杂
20200421 NoSQL笔记(八)

  1. 主从操作日志oplog
  1. MongoDB的Replica Set架构是通过一个日志oplog来存储写操作的
  2. 从节点主动从主服务器上获取oplog。执行进而完成增量式的数据同步
  3. 主从集群可以使用单台也可以使用多台,但一般不超过个位数
  1. 副本集
  1. 副本集是一种进化的主从结构,可以将副本集看做一个整体。
  2. 副本集自动会选举一个活动active节点。这个节点被用来直接访问。其他副本则成为从服务器进行数据同步
  3. 当活动节点整体失效时,副本集自动选举一个新的active节点来提供服务。
  1. 分片部署集群
    MongoDB创建一个分片集群需要三种角色:
  1. 分片服务器用于存储数据的分片,每个分片可以是一个实例或实例的副本集
  2. 配置服务器分用于存储所有分片节点的配置信息、每个数据块的分片键范围、每个数据块在分片的分布情况、该集群中所有数据库和集合的分片的配置信息
  3. 路由进程是前段路由,客户端由前段路由进入访问
  1. 副本集与分片集群结合
  1. 分片:
    使用副本集,确保每个数据节点都具有备份、自动容错转移和自动恢复能力
  2. 配置服务器:使用三个配置服务器,确保元数据的完整性
  3. 路由进程:使用三个路由进程,实现负载平衡,提高客户端接入性能。

五、 MongoDB应用场景

  1. 游戏场景
    使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新。
  2. 物流场景
    使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所 有的变更读取出来。
  3. 社交场景
    使用MongoDB存储存储用户信息,以及用户发表的朋友圈信息, 通过地理位置索引实现附近的人、地点等功能。
  4. 物联网场景
    使用MongoDB存储所有接入的智能设备信息,以及设备汇报 的日志信息,并对这些信息进行多维度的分析。
  5. 视频直播
    使用MongoDB存储用户信息、礼物信息等。