NoSql(Not Only Sql)是一种不同与关系数据库的数据库管理系统设计方式,是对非关系型数据库的统称。
特点:灵活的可扩展性、灵活的数据模型、与云计算紧密融合
NoSQl兴起原因
关系数据库无法满足Web2.0的需求
- 无法满足海量数据的管理需求
- 无法满足数据高并发需求
-
关系数据库的关键特性在Web2.0成为鸡肋
Web2.0网站系统通常不要求严格的网站事务
- Web2.0并不要求严格的读写一致性
- Web2.0通常不包含大量复杂的SQL查询
NoSql与关系数据库的比较
数据库原理:关系数据库有完善的关系代数为理论,NoSql缺乏数学理论基础
数据规模:关系数据库无法较好的支持海量数据存储,NoSql可以支持超大规模数据存储
数据库模式:关系数据库需要严格遵守数据库模式。NoSql不存在数据库模式,可以灵活定义并存储各种不同类型数据
查询效率:关系数据库借助索引机制可以实现高效的查询。NoSql复杂查询性能不高。
一致性:关系数据库严格遵守事务ACID,具有强一致性。NoSql遵守BASE,只能保证最终一致性。
数据完整性:关系数据库很容易实现,NoSql数据库无法实现。
可扩展性:关系数据库很难实现横向扩展,纵向扩展空间也有限。NoSql具有强大的横向扩展能力。
可用性:关系数据库有限保证数据一致性,只能提供相对较弱的可用性。大多数NoSql都能提高较高的可用性。
NoSql四大类型
键值数据库
redis、Memcached
大量写操作,键值数据库性能较好。条件查询效率较低
列族数据库
文档数据库
MongoDB:由C++编写,其数据类型类似于JSON对象
CouchDB
图数据库
Neo4j、GraphDB
NoSql三大基石
CAP
一个分布式系统不可能同时满足一致性、可用性和分区容忍性这三个需求,最多同时满足两个,CA、CP、AP
