NoSQL,全称是“Not Only Sql”,指的是非关系型的数据库。这类数据库主要有这些特点:非关系型的、分布式的、开源的、水平可扩展的。原始的目的是为了大规模web应用,这场全新的数据库革命运动早期就有人提出,发展至2009年趋势越发高涨。
NoSQL被我们用得最多的当数key-value存储,当然还有其他的文档型的、列存储、图型数据库、xml数据库等。相对于目前铺天盖地的关系型数据库运用,这一概念无疑是一种全新思维的注入。
传统关系型数据库的劣势
互联网深入发展,大数据已是平常。而且传统的关系型数据库,面对大规模的高并发显得力不从心,例如:
1.对数据库高并发读写的需求
例如淘宝、微博,数据库并发负载非常高,往往要达到每秒上万次读写请求。不仅关系型数据库很难高效的处理这样的大并发读写操作,而且对于硬盘IO也很难能承受得了这样的读写查询。
2.对海量数据的高效率存储和访问的需求
用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,关系数据库很难应付。
3对数据库的高可拓展性和高可用性的需求
在基于web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像webserver和appserver那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移。
因此,关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题的NoSQL数据库应运而生。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
NoSQL优缺点
优点:
-可以处理大量数据
-低成本,运行在便宜的PC服务器上
-分布式计算
-没有复杂的关系
-架构灵活,半结构化数据
缺点:
– 没有标准化
– 有限的查询功能(到目前为止)
– 最终一致是不直观的程序