NoSql概述
不是存图形,存的是关系学习方式:基本的理论先学习,然后将知识融会贯通!兴趣是最好的老师
Nosql概述
为什么要使用mysql
1.单机mysql年代

90年代,一个网站的访问量一般不会太大,单个数据库完全够用。随着用户增多,网站出现以下问题
- 数据量增加到一定程度,单机数据库就放不下了
- 数据的索引(B+ Tree),一个机器内存也存放不下
- 访问量变大后(读写混合),一台服务器承受不住。
2.Memcached(缓存)+MySql+垂直拆分(读写分离)
网站80%的情况都是在读,每次都要去查询数据库的话就十分的麻烦!所以说我们希望减轻数据库的压力,我们可以使用缓存来保证效率!

优化过程经历了以下几个过程:
- 优化数据库的数据结构和索引(难度大)
- 文件缓存,通过IO流获取比每次都访问数据库效率略高,但是流量爆炸式增长时候,IO流也承受不了
- MemCache,当时最热门的技术,通过在数据库和数据库访问层之间加上一层缓存,第一次访问时查询数据库,将结果保存到缓存,后续的查询先检查缓存,若有直接拿去使用,效率显著提升。
3.分库分表+水平拆分+MySql集群

本质:数据库(读,写)
早些年MyISAM:表锁,十分影响效率!高并发下就会出现严重的锁问题!
转战InnoDB:行锁
慢慢的就开始使用分库分表来解决写的压力
4.如今最近的年代
如今信息量井喷式增长,各种各样的数据出现(用户定位数据,图片数据等),大数据的背景下关系型数据库(RDBMS)无法满足大量数据要求。Nosql数据库就能轻松解决这些问题。
目前一个基本的互联网项目

为什么要用NoSQL ?
用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户日志等等爆发式增长!
这时候我们就需要使用NoSQL数据库的,Nosql可以很好的处理以上的情况!
什么是NoSql
NoSql = Not Only SQL(不仅仅是SQL)
泛指非关系型数据库,着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区,暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的。
NoSql特点:
-
方便扩展(数据之间没有关系,很好扩展)
-
大数据量高性能(Redis 一秒写8万次,读取11万次)
-
数据类型多样型,不需要实现设计数据库
-
传统RDBMS和NOSql
关系型RDBMS
- 结构化组织
- sql
- 数据和关系都存在单独的表中
- 操作,数据定义语言
- 严格的一致性
- 基础的事务
- 。。。。。。
NoSql
- 不仅仅是数据
- 没有固定的查询语言
- 键值对,列存储,文档存贮,图形数据库(社交关系)
- 最终一致性
- CAP定理,BASE(异地多活)
- 高性能,高可用,高可扩
- 。。。。
了解:3V+3高
大数据时代3V:主要是描述问题的:
- 海量Velume
- 多样Variety
- 实时Velocity
大数据时代的3高 : 主要是对程序的要求
- 高并发
- 高可扩
- 高性能
阿里巴巴演进分析
如果 未来当一个架构师:没有什么是加一层解决不了的!
商品的基本信息
名称,价格,商家信息
关系型数据库就可以,
淘宝mysql不是大家用的mysql
商品描述,评论(文字多)
文档型数据库,MongoDB
图片
分布式文件系统 FastDFS
淘宝自己:TFS
google:GFS
Hadoop:HDFS
阿里云:oss
商品关键字(搜索)
搜索引擎:solr elasticsearch
淘宝自用:ISearch 多隆(程序员)开发
商品热门的波段信息
内存数据库,Redis Tair Memache
商品交易,外部支付接口
三方应用
大型互联网应用问题:
- 数据类型太多
- 数据源繁多
- 数据要改造,大面积改造?
解决问题:UDSl 同一数据服务平台,应用集群和底层数据源之间的一层代理


NoSql四大分类
KV键值对:
- 新浪:Redis
- 美团:Redis+Tair
- 阿里,百度:Redis+Memecache
文档性数据库(bson格式,和json格式一样):
- MongoDB
- j给予分布式文档存储的数据库,C++开发,处理文档
- 介于关系型和非关系型中间的数据库,是非关系型中功能最丰富,最想关系型数据库的
列存储数据库
- HBase
- 分布式文件系统:
图关系数据库
- 不是存图形,存的是关系
Neo4j,InfoGrid

浙公网安备 33010602011771号