1、为什么要NoSQL:nosql能解决sql中那些解决不了的问题
NoSQL是什么:Not Only SQL,本质上还是数据库,但它不会遵循传统数据库的规则(如:SQL标准、ACID属性[事务]、表结构等)。
优点:
- 处理大量数据时性能高。
- 对磁盘读写要求不高,可以运行在便宜的PC机上,降低服务器成本。
缺点:
- 对事务的支持不够友好
- 复杂的关联查询难以实现
传统SQL | 1、吞吐量小,无法支持高并发读写 2、结构要求严谨(增改一个字段麻烦),复杂系统中难以维护此关系 |
NoSQL | 1、吞吐量大,支持海量数据的快速读写(基于内存操作数据) 2、增改字段非常容易 |
扫描二维码关注公众号,回复:
8129576 查看本文章
2、MongoDB简介
MongoDB是NoSQL的一种,它是一个文档型数据库。
MySQL | MongoDB |
db | database(数据库) |
table | collection(集合) |
row | document(文档) |
column | field(字段) |
index | index(索引) |
join | 无关联(可以用DBRef实现) |
primaryKey | primaryKey(主键,客户端默认使用_id,ObjectId) |
特性:
- 数据存储方式:面向集合文档存储数据,以独有的bson格式存储
- 可扩展性:可扩展性好,修改数据后不会影响生产环境的程序运行
- 语言特性:强大且面向对象的查询语言,基本覆盖了sql语言所有能力
- 索引和查询计划:完整的索引支持和查询计划
- 集群、分片、内部故障支持:支持集群之间的数据复制、自动故障转移、支持数据的分片,提升系统扩展性
- 数据操作方式:使用内存映射存储引擎,把IO操作转换成内存操作(不是只用内存,而是通过内存提高读写性能)
3、MongoDB应用场景
只要满足以上两点,选择MongoDB就绝对不会错!!!
但系统需要高一致的事务性,不推荐使用(如:银行、财务系统)。
系统结构固定且有复杂的关联查询系统,不推荐使用。