MongoDB基础知识
NoSQL是什么?
非关系型数据库,有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称
NoSQL的优势
1、高扩展性
2、高并发性,大数据下读写能力较强
3、分布式计算
4、处理海量数据
5、没有复杂的关系
NoSQL数据库四大家族
列存储:Hbase
键值(Key-Value)存储:Redis
图像存储:Neo4J
文档存储 :MongoDB
MongoDB 将数据存储为一个文档,数据结构由键值(name=>value)对组成。MongoDB 文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。
MongoDB和JSON、BSON
JSON:是存储和交换文本信息的语法。类似 XML。JSON数据库语句可以容易被解析。
BSON:二进制的JSON,JSON文档的二进制编码存储格式。BSON有JSON没有的数据类型:Date和BinData。MongoDB中document以BSON形式存放。
MongoDB文档支持不同的数据类型
{ name:"Jone Doe", title:"software developer", #字符串 address:{ street:"123 45th street" state:"new York" zipcode:10036 }, #嵌套文档 expertise:["MongoDB","Python","Javascript"], #数组 employee_number:320, #××× location:[53.34,-6326] #Geo-spatial}}
MongoDB的关键特性:
1、高性能
2、丰富的查询语言
3、高可用性
副本集,自动故障转移,数据冗余
4、水平可扩展性
5、支持多种存储引擎
MMAPv1存储引擎:<3.2 默认存储引擎是MMAPv1
WirdeTiger存储引擎:>=3.2 默认存储引擎是WiredTiger
In-Memory存储引擎:Changed in version 3.2.6
存储引擎的比较
MongoDB的GridFS
GridFS
MongoDB与RDBMS数据结构逻辑对比
MongoDB实际应用场景举例
游戏场景
使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新。
物流场景
使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
社交场景
使用MongoDB存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
物联网场景
使使用MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。
视频直播
使用MongoDB存储用户信息、礼物信息等
MongoDB版本的选择,现在建议用3.4的版本
MongoDB分企业版和社区版,社区版支持使用MongoDB ops manager
是否使用MongoDB
如果上述有1个 Yes,可以考虑 MongoDB,2个及以上的 Yes,选择 MongoDB 绝不会后悔!!!