1.关于NOSQL
NoSQL,(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,指的是非关系型的数据库。
2.关于WEB2.0
随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题
1)High performance - 对数据库高并发读写的需求
2)Huge Storage - 对海量数据的高效率存储和访问的需求
3)High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求
在上面提到的“三高”需求面前,关系数据库遇到了难以克服的障碍,而对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地
1)数据库事务一致性需求
2)数据库的写实时性和读实时性需求
3)对复杂的SQL查询,特别是多表关联查询的需求
关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题的非关系数据库应运而生,与传统的关系数据库的对比,特点有
1)灵活的数据模型
2)大数据量,高性能
3)易扩展
4)高可用
2.MongoDB
MongoDB是一个基于分布式文件存储的NOSQL。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。相对传统关系数据库,特点有
1)丰富的数据模型
MongoDB没有模式,它采用面向文档的数据模型,文档的键不会事先定义也不会固定不变
2)容易扩展
MongoDB可以自动在多台服务器之间分割数据,还可以平衡集群的数据和负载,自动重排文档
3)功能丰富
--支持索引
--存储JavaScript,可用于实现RDBMS中的存储过程
--聚合
--固定集合
--文件存储
----为了提高扩展性,不支持联接和复杂的多行事务
4)高性能
--使用MongoDB传输协议作为与服务器交互的主要方式
--对文档进行动态填充,预分配数据文件(试图为每一个数据库保留一个额外的空数据文件,来避免文件分配所产生的阻塞),用空间换取性能的稳定
--默认的存储引擎中使用了内存映射文件,将内存管理工作交给操作系统去处理
--动态查询优化器会“记住”执行查询最高效的方式
5)易于管理
尽量让服务器自治来简化数据库的管理
4.参考资源
NOSQL http://baike.baidu.com/link?url=lDAm05kXHf6ZZdNhEB-Diu7tOSK3w_oOI2TqXnnwTA0eL5jd0nEwSJYsiLmgclXtQCxAaAM8BMOXPy7_tHJilq
MongoDB http://baike.baidu.com/subview/3385614/9338179.htm?fr=aladdin
《MongoDB权威指南》