mongodb 入门



1、为什么要NoSQL

关系型数据库难以克服的问题

  • High performance 高并发读写
  • Huge Storge 海量数据的高效率存储于访问
  • High Scalability && High Availability 高可扩展性和高可用性

关系型数据库的约束

  • 数据库事务一致性需求
  • 数据库的写实时性和读实时性
  • 对复杂的 sql查询,特别是多表关联查询的需求

Nosql的特点

优点

  • 处理超大量的数据
  • 运行在便宜的PC服务器集群上
  • 打破性能瓶颈
  • 操作简单
  • 开源支持

缺点

  • 不支持事务
  • 表之间关联查询很难实现
  • 运维的门槛比较高

2、MongoDB简介

介于关系型DB 和非关系型DB 之间的一个产品,是非关系型DB中功能最丰富的,最像关系型DB的。它支持的结果非常松散,类似 JSON 的 BSON格式,因此可以存储比较复杂的数据类型。它最大的特点是它支持的查询语言非常强大,其语法类似于面向对象语言的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。他是一个面向集合的、模式自由的文档型数据库;

特点

  • 面向集合文档的存储;
  • 模式自由(自动可以增减);
  • 强大的查询能力;
  • 支持索引与查询计划;
  • 支持索引与查询计划;
  • 支持自动复制和自动故障转移;
  • 支持二进制数据集 大型对象 (文件)的高效存储;

3、应用场景

经典应用案例:

  • 游戏场景:存储用户信息、装备、积分等;
  • 物流场景:订单信息,订单信息在运输过程中不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单的所有变更读取出来;
  • 社交场景:使用MongoDB存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人,地理位置索引等信息;
  • 物联网场景:存储所有接入的只能设备信息,以及设备上传的日志信息,并对这些信息进行多维度分析
  • 视频直播:存储用户信息、礼物信息等;

不适用的场景:

  • 高度事务性系统(eg:财务系统);
  • 传统商业智能应用(eg:复杂的关联查询);
  • 使用SQL更方便的时候;