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