NOSQL数据库学习,NoSQL总结(四)

2022-02-15 15:44:29 浏览数 (1)

NoSQL四大分类

KV键值:

新浪:BerkeleyDB redis

美团:redis tair

阿里、百度:memcache redis

文档型数据库(bson格式比较多):

CouchDB

MongoDB

MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为 WEB 应用提供可

扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰

富,最像关系数据库的。

列存储数据库:

Cassandra, HBase

分布式文件系统

图关系数据库

它不是放图形的,放的是关系比如:朋友圈社交网络、广告推荐系统

社交网络,推荐系统等。专注于构建关系图谱

Neo4J, InfoGrid

四者对比

CAP BASE

传统的ACID分别是什么?

关系型数据库遵循ACID规则,事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个

特性:

A (Atomicity) 原子性

C (Consistency) 一致性

I (Isolation) 隔离性

D (Durability) 持久性

CAP(三进二)

原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务

里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

比如银行转账,从A账户转100元至B账户,分为两个步骤:

1)从A账户取100元;

2)存入100元至B账户。

这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100

元。

1

2

3

4

5

1 事务前后数据的完整性必须保持一致。

所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修

改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。比如现有有个交易是从A

账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加

的100元的

1

1 持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。C : Consistency(强一致性)

A : Availability(可用性)

P : Partition tolerance(分区容错性)

CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。

而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容错性是我们必须需要实现的。

所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。

注意:分布式架构的时候必须做出取舍。

一致性和可用性之间取一个平衡。多余大多数web应用,其实并不需要强一致性。

因此牺牲C换取P,这是目前分布式数据库产品的方向

一致性与可用性的决择

对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地

数据库事务一致性需求

很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低, 有些场合对写一致性要求并不

高。允许实现最终一致性。

数据库的写实时性和读实时性需求

对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应

用来说,并不要求这么高的实时性,比方说发一条消息之 后,过几秒乃至十几秒之后,我的订阅者才看

到这条动态是完全可以接受的。

对复杂的SQL查询,特别是多表关联查询的需求

任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的报表查询,特

别是SNS类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主

键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,

最多只能同时较好的满足两个。因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP

原则和满足 AP 原则三 大类:

CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。

CP - 满足一致性,分区容忍必的系统,通常性能不是特别高。

AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

0 人点赞