一、什么是Nosql?
1.NoSQL=Not Only SQL
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。
2.为什么要用Nosql?
在Web应用发展的初期,那时关系型数据库受到了较为广泛的关注和应用,原因是因为那时候Web站点基本上访问和并发不高、交互也较少。而在后来,随着访问量的提升,使用关系型数据库的Web站点多多少少都开始在性能上出现了一些瓶颈,而瓶颈的源头一般是在磁盘的I/O上。而随着互联网技术的进一步发展,各种类型的应用层出不穷,这导致在当今云计算、大数据盛行的时代,对性能有了更多的需求,主要体现在以下四个方面:
- 低延迟的读写速度:应用快速地反应能极大地提升用户的满意度
- 支撑海量的数据和流量:对于搜索这样大型应用而言,需要利用PB级别的数据和能应对百万级的流量
- 大规模集群的管理:系统管理员希望分布式应用能更简单的部署和管理
- 庞大运营成本的考量:IT部门希望在硬件成本、软件成本和人力成本能够有大幅度地降低
为了克服这一问题,NoSQL应运而生,它同时具备了高性能、可扩展性强、高可用等优点,受到广泛开发人员和仓库管理人员的青睐。
互联网架构的发展:https://www.cnblogs.com/lukelook/p/11135209.html
- 单机MySQL的美好时代
- Memcached(缓存)+MySQL+垂直拆分
- Mysql主从读写分离
- 分库分表+水平拆分+mysql集群
- MySQL的扩展性瓶颈
- 如今:
今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。
3.Nosql的特点
解耦!
- 方便扩展(数据之间没有关系,很好扩展!)
- 大数据量高性能( Redis-秒写8万次,读取11万, NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高!)
- 数据类型是多样型的! (不需要事先设计数据库!随取随用!如果是数据量十分大的表,很多人就无法设计了!)
- 传统RDBMS和NoSQL
4.传统RDBMS与NoSQL的区别(当下的应用是 SQL 与 NoSQL 一起使用的)
RDBMS
- 高度组织化结构化数据
- 结构化查询语言(SQL)
- 数据和关系都存储在单独的表中。
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务
- ACID
- 关系型数据库遵循ACID规则
NoSQL
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
- 键 - 值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID属性
- 非结构化和不可预知的数据
- CAP定理
- 高性能,高可用性和可伸缩性
- 分布式数据库中的CAP原理(了解)
5.NoSQL的四大分类
1.KV键值对
- 新浪:Redis
- 美团:Redis+Tair
- 阿里、百度:Redis+memecache
2.文档型数据库
- MongoDB:
MongoDB是一个介于分布式文件存储的数据库,主要处理大量的文档!
MongoDB是一个介于关系型数据库和非关系型数据库中间的产品!MongoDB是非关系型数据库中功能最丰富,最像关系型数据库的。
- ConthDB
3.列存储数据库
- HBase
- 分布式数据库
4.图关系数据库
- Neo4j、infoGrid
不是存图形,存的是关系。比如:朋友圈社交网络,广告推荐。
区别:
【部分学习笔记总结于狂神说:https://www.bilibili.com/video/BV1S54y1R7SB】