MongoDB介绍
参考 链接1 链接2 MongoDB为分布式文档数据库,属于一种NoSQL,它是最像关系型数据库的NoSQL MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。 MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档、数组及文档数组。
NoSQL介绍
NoSQL(NoSQL = Not Only SQL ),意即”不仅仅是SQL”。
NoSQL主要是区分关系型数据库的一种数据库,关系型数据库典型代表就是MySQL,一个库里的多张表是有关系的,举个例子,对于电商网站来讲(就像淘宝),你购买一个商品 ,这个行为涉及到的表不止一个,比如商品表、订单表、仓储表、物流表等等,那么这些表彼此之间是有关联关系的,比如这些表里都有商品id。
而NoSQL就不存在这种错综复杂的关联关系,它的结构非常简单,就是单纯的类似key-value这样的形态。我们之前学过的Redis就属于NoSQL。
NoSQL数据库有一些特性: 可扩展、分布式计算、低成本、架构灵活、关系简单
MongoDB的应用场景
游戏场景 使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
物流场景 使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
社交场景 使用 MongoDB 存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
物联网场景 使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
视频直播 使用 MongoDB 存储用户信息、礼物信息等
总之,只要满足不使用关系型数据库的数据存储场景都可以用MongoDB代替。 如果你还在为是否应该使用 MongoDB,不如来做几个选择题来辅助决策
| 应用特征 | Yes / No |
|---|---|
| 应用不需要事务及复杂 join 支持 | Yes |
| 新应用,需求会变,数据模型无法确定,想快速迭代开发 | ? |
| 应用需要2000-3000以上的读写QPS(更高也可以) | ? |
| 应用需要TB甚至 PB 级别数据存储 | ? |
| 应用发展迅速,需要能快速水平扩展 | ? |
| 应用要求存储的数据不丢失 | ? |
| 应用需要99.999%高可用 | ? |
| 应用需要大量的地理位置查询、文本查询 | ? |
如果上述有1个 Yes,可以考虑 MongoDB,2个及以上的 Yes,选择MongoDB绝不会后悔。
MongoDB和SQL对比
