什么是MongoDB ?
面向文档的数据库
一 . 优点

  1. 使用 (文档取代行,一条记录表达复杂层级关系;去K-V化,字段的添加删除更加方便)

  2. 扩展 (易于拓展,自动处理跨集群数据和负载,集群加入硬盘,横向拓展自动数据传输)
    内置分片对范围自动分片机制:
    一个collection可按照记录的范围,分成若干个段,切分到不同的Shard上。
    Shards可以和复制结合,配合Replica sets能够实现Sharding+fail-over,不同的Shard之间可以负载均衡
    查询是对 客户端是透明的。客户端执行查询,统计,MapReduce等操作,这些会被MongoDB自动路由到后端的数据节点。这让我们关注于自己的业务,适当的 时候可以无痛的升级。MongoDB的Sharding设计能力最大可支持约20 petabytes,足以支撑一般应用。
    这可以保证MongoDB运行在便宜的PC服务器集群上。PC集群扩充起来非常方便并且成本很低,避免了“sharding”操作的复杂性和成本
    jiagou.png

  3. 功能模块丰富
    3.1 索引 二级索引,多种快速查询 唯一索引 / 复合索引 / 地理空间索引 / 全文索引
    3.2 聚合 支持聚合管道,自动优化。(过滤,重新组合输出,指定字段分组,排序(操作符表达代替MapReduce))
    2288F93F-E85E-4089-A4C1-328FA6D0698F.png
    每个文档通过一个由多个节点组成的管道,每个节点有自己特殊的功能(分组、过滤等),文档经过管道处理后,最后输出相应的结果

3.3 特殊的集合类型 例如(场景1 :定时过期会话; 场景2: 固定大小集合日志)
3.4 文件存储

  1. 性能好
    4.1 BJSON 二进制存储,存入性能快。内存用作缓存,为查询分配索引
    4.2 内置GridFS(布式文件系统),支持大容量的存储,能够满足对大数据集的快速范围查询
    4.3 对于非索引字段查询在千万级别会非常快
    二. 缺点
  2. 不支持事务,join,空间占用大 申请机制(64,128,256 逐次递增,直到单个2G)
  3. 删除记录不释放空间,只标志删除