一、概述
NoSql是什么
- SQL (Structured Query Language) 结构化的查询语言语言
关系型数据库(采用SQL语言查询):表格、行、列 - Not Only Sql 不仅仅是关系型数据库。泛指非关系型的数据库。
为什么需要NoSql
随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,NoSql由于其本身的特点得到了非常迅速的发展。Redis是发展最快的,必须掌握的一个技术
很多数据类型如用户个人信息、地理位置、社交,没有固定的格式
二、优势
- 解耦
- 高可扩展(数据之间没有关系,好扩展)
- 高性能(Redis一秒写8万次,读取11万次)
- NoSql的缓存是一种细粒度的缓存,性能高
- 数据类型多样(不需要事先设计数据库,随取随用)
- 传统RDS(关系型数据库服务)和NoSql
传统RDS
- 结构化组织
- 结构化查询语言(SQL)
- 一种存储形式:数据和关系都存在单独的表中
- 数据操作(CRUD),数据定义语言
- 严格的一致性
- 基础的事务
...
NoSql
- 不仅仅是数据,结构不固定
- 没有固定查询语言
- 四种存储
键值对存储、
列存储、
文档存储、
图形数据库(社交关系)
- 最终一致性(最终结果一样即可,中间允许误差)
- CAP定理和BASE理论(异地多活)
- 高性能、高可用、高可扩展
三、NoSql四大分类(四大数据存储结构)
KV键值对
- 新浪:Redis
- 美团:Redis + Tair
- 阿里,百度:Redis + memecache
文档型数据库(bson格式和json一样)
- MongoDB(一般必须掌握)
- 是基于分布式文件存储的数据库,c++编写,主要用于处理大量文档
- 是非关系型数据库中最像关系型数据库的
列存储数据库
- HBase
- 分布式文件系统
图形数据库
- 存的不是图,而是关系。如朋友圈社交网络、广告推荐
- Neo4j、InfoGrid