noSQL

1. noSQL的产生背景

noSLQ并是不是没有SQL而是不仅仅是SQL

1.1 单机关系型数据库时代

- 一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。
更多的都是静态网页,动态交互类型的网站不多。
- 上述架构下,我们来看看数据存储的瓶颈是什么?
    1.数据量的总大小 一个机器放不下时
    2.数据的索引(B+ Tree)一个机器的内存放不下时
    3.访问量(读写混合)一个实例不能承受
     如果满足了上述1 or 3个,架构就需要改变

1.2 Memcached(缓存)+MySQL+垂直拆分

- 随着数据量的增大,服务器的压力剧增,开始使用缓存来分担服务器的压力Memcached出现了,
- Memcached作为一个独立的分布式的缓存服务器,为多个web服务器提供了一个共享的高性能
    缓存服务,在Memcached服务器上,又发展了根据hash算法来进行多台Memcached缓存服务的
    扩展,然后又出现了一致性hash来解决增加或减少缓存服务器导致重新hash带来的大量缓存
    失效的弊端

1.3 主从读写分离

由于数据库的写入压力增加,Memcached只能缓解数据库的读取压力。读写集中在一个数据库
上让数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写性能
和读库的可扩展性。Mysql的master-slave模式成为这个时候的网站标配了。

1.4 分表分库+水平拆分+数据库集群

在Memcached的高速缓存,MySQL的主从复制,读写分离的基础之上,这时MySQL主库的写压力
开始出现瓶颈,而数据量的持续猛增,由于MyISAM使用表锁,在高并发下会出现严重的锁问题
大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM。

该方式提高了可靠性但是效率额仍然无法突破瓶颈.

1.5 noSQL的到来

> NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,

泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,
特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以
克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库
的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,
包括超大规模数据的存储。

(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

2. noSLQ的特点

2.1 大数据高性能

- NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。
    这得益于它的无关系性,数据库的结构简单。
- 一般MySQL使用Query Cache,每次表的更新Cache就失效,是一种大粒度的Cache,
    在针对web2.0的交互频繁的应用,Cache性能不高。
- NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说就要性能高很多了

2.2 关系型数据库和noSQL的比较

RDBMS
- 高度组织化结构化数据
- 结构化查询语言(SQL)
- 数据和关系都存储在单独的表中。
- 数据操纵语言(DML),数据定义语言(DDL)
- 严格的一致性
- 基础事务(ACID)

NoSQL
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
- 键:值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID属性
- 非结构化和不可预知的数据
- CAP定理
- 高性能,高可用性和可伸缩性

2.3 noSQL的6个核心特点

3V和3高
1. 3V
- 海量Volume
- 多样性Variety
- 实时性Velocity
2. 3高
- 高并发
- 高扩展性
- 高性能

2.4 传统RDBMS和noSQL比较

  1. RDBMS事务(ACID)
    ①Atomicity(原子性):简单来说,一组操作,要么一起成功,要么一起失败.
    ②Consistency(一致性):数据库从一个一致状态到另外一个一致状态.
    ③Isolation(隔离性):每个访问数据库的事务单独开启一个事务,互相独立.
    ④Durability(持久性):事务一旦提交,改变就是永久的.

  2. noSQL (CAP)
    ①Consisency(强一致性)
    ②Availiable(高可用性)
    ③Partion tolerance(分区容错性)

但是对于noSQL来说,CAP只能满足连个条件.即:一个分布式系统不可能同时满足很好的一致性,可用性,分区容错性.

  • 传统关系型数据库满足CA原则.
  • 对于分布式系统必须满足P,所以分布式系统只有AP和CP
    • AP:大多数网络的选择
    • CP:Redis,Mongdb

3. BASE 的概念

为了解决关系型数据库强一致性的导致可用的性能下降而出现的解决方案.

3.1 解释

  • BA:(Basiclly Available)基本可用,字大数据量的压力下保证可用.
  • S:(Soft State)软状态 ,系统弹性伸缩性.
  • E:(Eventurally Consistent)最终一致性.

3.2 两个概念的介绍

3.2.1 分布式

由多台计算机和通信软件组成的,通过计算机网络链接,是一个建立在网络上的软件系统.
不同的多台服务器上不部署的不同的服务模块,他们之间通过RPC/RMI通信和调用,对外提供服务和组内协作.

3.2.2 集群

不同的服务器上部署相同的功能模块,通过分布式调度算法进行统一的调度.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值