# MongoDB

NoSQL(Not Only SQL), 也叫做非关系型数据库, 与之相对应的是RDB(关系型数据库)。 非关系型数据库是把数据直接放进一个大仓库、不标号、不连线、单纯的堆起来,从而提高了对海量数据的高性能存储及访问,而本篇所介绍的MongoDB就是该类型数据库的一种

# 一、认识 NoSQL

# 分类

如今市面上的 NoSQL 数据库主要分为以下几类

  • 键值数据库

    在存储时不采用任何模式,因此极易添加数据,且具备极高的读写性能,适用处理大量数据的高访问负载,例如日志系统。主要代表便是RedisFlare

  • 文档型数据库

    满足海量数据存储和访问的需求, 同时对字段要求不严格, 可以随意增加、删除、修改字段,且不需要预先定义表结构,使用网络应用。主要代表是MongoDBCouchDB

  • 列存储型数据库

    查找速度快,可扩展性强,适合用作分布式文件存储系统。主要代表是CassandraHbase

  • 图数据库

    利用“图结构”的相关算法来存储实体之间的关系信息,适用于构建社交网络和推荐系统的关系图谱。主要代表是InfoGridNeo4

# 选型

  • NoSQL 适用模型关系性比较低的应用, 不太适合多表关联的场景
  • 对数据量多且访问速度要求高的场景
  • 对数据的一致性要求不高的场景, 事务处理和一致性方面属于 NoSQL 的缺点
  • 数据可用性高的场景

征对多种业务场景, 项目中可以选用多种数据库, 将其拆开设计, 将需要 RDB 特性的放到 RDB 中管理, 而其他数据放到 NoSQL 中管理

# 二、MongoDB 使用场景

  • 需要高性能处理大量的低价值数据: 对低价值数据存取性能有较高要求, 数据不需要太高的事务性

  • 需要借助缓存层来处理数据: 作为持久化缓存层, 避免底层存储的资源过载

  • 需要高度的伸缩性的场景: 当关系型数据库由于量级导致性能急剧下降时, 可以作为补充搭建集群环境, 实现最大程度扩展