Warning : Trying to access array offset on value of type bool in
/www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/inc/theme_plus.php on line
286
一,SQL数据的发展(以MySQL为例)
一,单体架构
在过去,一个网站的访问量一般都不大,用单个数据库完全可以应对
在单体架构中数据库遇到的瓶颈:
数据量的过大,一个机器放不下
数据的索引(B+Tree)和数据一个机器的内存放不下
访问量(读写混合)一个实例不能承担
二,Memcached(缓存)+Mysql+垂直拆分
随着访问量的增加,大部分使用MySQL架构的网站,在数据库都开始出现了性能问题,web程序,不再仅仅专注在功能,也开始追求性能,开始大量用缓存技术缓解数据库的压力,优化数据库的架构和索引,开始比较流行的是通过文件缓存来缓解数据库的压力,但访问量大时,多台web机器通过文件缓存不能共享,大量的小文件缓存也带来了比较大的IO压力,这个时候,Memcached就诞生了
文件缓存:
Memcached+垂直拆分:
垂直拆分:把不同的表放在不同的数据库中,每一张表的读写都在不同库中
三,Mysql的主从复制读写分离
如果数据库的写入压力增加,Memcached只能缓解数据库的读取压力,读写集中在一个数据库上让数据库性能急剧下降,大部分网站开始使用主从复制技术来实现读写分离(主从复制是读写分离的前提),以提高数据库的读写性能和读库拓展性,Mysql的master-slave模式开始成为网站的标配
四,分库分表+水平拆分+MySQL集群
在Memcached的高速缓存,Mysql的主从复制读写分离基础上,主库的写操作量巨大,这时主库的瓶颈开始出现,而数据量的持续急增,由于MyISAM使用的是表锁,在高并发下会出现严重问题,大量的高并发使MySQL使用InnoDB代替MyISAM
同时,开始流行使用分表分库来缓解读写压力和数据量增加的拓展问题,这个时候,分库分表成了一个热门技术,同时mysql也推出了表分区技术,虽然MySQL推出了MySQL Cluster集群,但性能不能很好满足互联网的需求,只是在高可靠性上提供了保证
水平拆分和垂直拆分:
水平拆分:同一张表拆分到不同的数据库中
垂直拆分:不同的表拆分到数据库中
例:一个商城有用户表,商品表,评论表
垂直拆分:把这三张表拆分放在不同的数据库中
水平拆分:假设为用户表,把用户表数据水平拆分放在不同的数据库中,如:1-1000放在A库,1000-2000放在B库
五,MySQL的拓展性瓶颈
MySQL数据库也经常存储一些大文本字段,导致数据库表非常大,在做数据库恢复的时候就导致非常慢,不容易快速恢复,比如:1000万条4KB数据的文本就接近40GB,如果把这些数据从MySQL升去,MySQL将变得非常小,关系型数据库很强大,但它不能应付所有的应用场景,MySQL的拓展性差(需要复杂的技术来实现)大数据下IO压力大,表结构更改困难,正是使用MySQL数据库的面临的问题
六,为什么使用NoSql数据库
今天通过第三平台,我们很容易访问和爬取数据。用户的信息,社交网络,地点位置,用户生成的日志数据的成倍增加,我们如果要对这些用户数据进行数据分析,数据挖掘,那么SQL数据库不适合这样的场景,NoSql数据库的发展却能很好的满足需求
二,NOSQL数据库
一,NOSQL数据库的概述
NoSql数据库的特点:
1,易拓展
2,大数据量高性能
3,多样灵活的数据模型
易拓展: NoSql数据库种类繁多,但是有一个共同的特点就是去掉关系数据库中的关系特征,数据之间无关系,这样就非常容易拓展,也无形之中,在架构层面带来了可拓展能力
据量高性能 大数: Nosql数据库不同于sql数据库,它具有更强的读写性能,尤其在大数据量下,同样表现优秀,这得益于它无关系,结构简单
一 般MySQL使用Query Cache,每次表更新Cache就会失效,Cache粒度比较大,在针对web2.0的交互频繁的应用,Cache性能不高
多样灵活的数据模型: NoSql无需事先为要存储的数据建立字段,随时可以存储指定义的数据格式,而在关系型数据库中,增删字段是一件非常麻烦的事情,如果非常大数据量的表,增加字段非常麻烦
RDBMS 和Nosql的比较:
RDBMS:
高度组织化的结构性数据
结构性查询(SQL)
数据的关系都存储在单独的表中
数据操纵语言,数据定义语言
严格的一致性
基础事务
NoSql:
没有声明性查询语言
没有预定义的模式
键-值对存储,列存储,文档存储,图形数据库
最终一致性,而非ACID属性
非结构化和不可知的数据
CAP定理
高性能,高可用和高伸缩性
3V和3高:
大数据时代的3V:
互联网需求的3高:
二,NOSQL数据库的四大分类
1,KV键值:redis,memcache
2,文档性数据库:mongoDB,CouchDB
3,列存储数据库:Hbase,Cassandra
4,图关系数据库:不是放图形的,主要放的是社交关系,推荐系统,专注于推荐图谱,主要有Neo4j,InfoGrid
mongoDB:基于分布式文件存储系统的数据库,由c++编写,是一个介于关系性和非关系型数据库的产品,是非关系型数据库中功能最丰富,最想关系型数据库的
三,分布式数据库中CAP+BASE
一,传统的ACID和分布式的CAP
ACID:
CAP:
二,CAP的三进二
CAP:一个分布式系统不可能同时很好的满足强一致性,可用性,分区容错性这三个需求,最多只能满足两个
根据CAP的原理将NoSql数据库分成了满足CA,CP,AP原则的三大类:
注:其中分区容错性是必须要实现的,所以我们只能在一致性和可用性之间权衡,分布式架构需要做出取舍
三,BASE
BASE就是为了解决关系性数据库强一致性引起的问题而产生的解决方案
BASE:
它的思想是让系统放松某一时刻的数据一致性来换取系统的整体可用性和伸缩性,由于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成,我们必须用另一种方式来完成,BASE就是一个较好的解决方案
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109