为什么要用NPsql?
单机MySQL年代
90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够
那个时候,更多的去使用静态网页 HTML 服务器根本没有太大的压力
思考一下,整个网站的瓶颈是什么?
数据量如果太大、一个机器放不下
数据的索引(B+Tree),一个机器内存也放不下
访问量(读写混合),一个服务器承受不了
只要开始出现以上的情况的一种,那么必须升级
Memcached(缓存)+ MySQL + 垂直拆分(读写分离)
网站80%的情况都在读,每次都要去查询数据库的话就十分的麻烦,所以我们希望减轻数据的压力,我们可以使用缓存来保证效率
发展过程:优化数据结构和索引-->文件缓存(IO)--> Memcached(当时最热门的技术)
分库分表 + 水平拆分 + MySQL集群
技术和业务的发展的同时,对人的要求也越来越高了。
本质:数据库(读、写)
早些年MyISAM:表锁,十分影响效率,高并发下就会出现严重的锁问题。
转战Innodb:行锁
慢慢的就开始使用分库分表(订单、用户、支付)来解决写的压力,MySQL推出表分区。但是并没有多少公司使用。
公司一般使用:MySQL集群,很好满足需求
如今最近的年代
2010-2020 十年之间,世界已经发生了翻天覆地的变化。
MySQL等关系数据库已经满足不了需求了,现在数据变化多样。
MySQL有的是用它来存储较大的文件、博客、图片等,数据表很大,效率就很低。
经网上专家团队们的测试,在大数据的IO压力下,表几乎没法更新。
在这种情况下诞生一种数据库来专门处理这种数据,从而减少MySQL的压力就变得十分重要了。
目前一个基本的互联网项目
为什么要用NoSQL
用户的个人信息,社交网络,地理位置,用户自己产生的数据,用户日志等等爆发式增长
这时候我们就需要使用NoSQL数据库的,NoSQL可以很好的处理以上的情况
什么是NoSQL
NoSQL
NoSQL = Not Only SQL(不仅仅是SQL)
关系型数据库:表格、行、列
泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代,尤其是超大规模的高并发的社区,暴露出很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Reids是发展最快的,而且我们当下必须要掌握的一门技术。
NoSQL特点
解耦
方便扩展(数据之间没有关系,很好扩展)
大数据量高性能(Redis 一秒写8万次,读取11万次,NoSQL的缓存记录级,是一种细颗粒的缓存,性能会比较高)
数据类型是多样性的(不需要事先设计数据库,随去随用,如果是数据量十分大的表,很多人就无法设计了)
传统RDBMS 和 NoSQL
传统的 RDBMS
- 结构化组织
- SQL
- 数据和关系都存在单独的表中
- 操作操作,数据定义语言
- 严格的一致性
- 基础的事务
- ....
Nosql
- 不仅仅是数据
- 没有固定的查询语言
- 键值对存储,列存储,文档存储,图形数据库(社交关系)
- 最终一致性
- CAP定理和BASE (异地多活)初级架构师
- 高性能,高可用,高扩展
- ....
了解:3V + 3高
大数据时代的3V:主要是描述问题的
海量Volume
多样Variety
实时Velocity
大数据时代的3高:主要对程序的要求
高并发
高可扩
高性能
阿里巴巴演进分析
如果你未来相当一个架构师:没有什么是加一层解决不了的
# 1、商品的基本信息
名称、价格、商家信息;
关系型数据库就可以解决了,Mysql / Oracle
淘宝内部的 MySQL 不是大家用的 MySQL
# 2、商品的描述、评论(文字比较多)
文档型数据库中,MongoDB
# 3、图片
分布式文件系统 FastDFS
- 淘宝自己的 TFS
- Gooale的 GFS
- Hadoop HDFS
- 阿里云的 OSS
# 4、商品的关键字(搜索)
- 搜索引擎 solr elasticsearch
- ISerach: 多隆
所有牛逼的人都有一段苦逼的岁月,但是你只要像对的目标不断前行(SB一样的)去坚持,终将牛逼
# 5、商品热门的波段信息
- 内存数据库
- Redis Tair Memache
# 6、商品的交易、外部的支付接口
- 三方应用
NoSQL的四大分类
KV键值对:
新浪:Redis
美团:Redis + Tair
阿里、百度:Redis + memecache
文档型数据库(bson格式 和 json一样)
MongoDB(一般必须要掌握)
MongoDB 是一个基于分布式存储的数据库,C++编写,只要用来处理大量的文档
MongoDB 是一个介于关系型数据库和非关系型数据中中间的产品,MongoDB是非关系型数据库中功能最丰富,最像关系型数据库的
ConthDB
列存储数据库
HBase
分布式文件系统
图关系数据库
他不是存图形,放的是关系,比如:朋友圈社交网络,朋友圈
Neo4j,InfoGrid
评论区