数据库基础

一、关系型数据库和非关系型数据库基础

一.1数据库读取/更新问题

  ①数据库的脏读: 数据库的一个事务正在使用一个数据但没有提交,另外一个事务也访问到了这个数据,还使用了这个数据,这就是数据的脏读。

  ②数据库的不可重复读:反复读取同一个数据却得到不同的结果,这是因为在反复几次读取的过程中,数据被修改了,这就导致我们使用了未更新的旧数据。

  ③幻读: 事务A读取与搜索条件相匹配的若干行。事务B插入或删除行等方式来修改事务A的结果集,先执行了事务B,然后再执行事务A。

一.2关系型数据库的ACID规则(针对事务):

  ①A(Atomicity)原子性: 事务的最小单位就是事务。

  ②C(Consistency)一致性: 事务前后,数据状态不变。要么全部成功,要么全部失败。

  ③I(Isolation)隔离性:隔离性表示各个事务之间不会影响,数据库提供了多种隔离级别(isolation Level)。(像sql server的隔离级别有:①READ UNCOMMITTED(未提交读取) ②READ COMMITTED(已提交读取) ③REPEATABLE READ(可重复读取) ④SERIALIZABLE(可序列化))

  ④D(Durability)持久性:一个成功的事务将永远性改变系统的状态,所以在它结束之前,所有导致状态的变化都记录在一个持久的事务日志中。如果我们的系统受到系统崩溃或断电,那么所有未完成已提交的事务可能会重新执行。

一.3四种隔离级别和会出现的数据库读取问题。

下图是主流数据库的默认隔离界别:

DatabaseDefault isolation Level
OracleREAD_COMMITTED
MYSQLREPEATABLE_READ
SQL SERVER READ_COMMITTED
POSTGRESQLREAD_COMMITTED


下图是SQL SERVER四种隔离级别介绍和读取问题出现情况: 

Isolation Level脏读不可重复读幻读Isolation Level说明
READ UNCOMMITED(读取未提交的事务)允许允许允许 读取包含未提交数据。
READ COMMITTED(读取已提交事务)不允许允许允许 这个模式主要作用是避免脏读。
REPEATABLE READ(重复读)不允许不允许允许 事务内的数据,读取到数据后,会把数据锁定,不允许当前事务意外的数据去读取到目标数据。
SERIALIZABLE不允许不允许不允许 事务开启后,对涉及(查询、更新、删除、插入)到的数据表都进行锁定,不允许其他事务对这些表进行增删改操作。

CAP定理,又称为布鲁尔定理,指出对于一个分布式系统,不可能同时满足以下三点:①一致性(Consistency)(所有的节点在同一时间具有相同的数据) ②可用性(Availability)(保证每个请求不管成功或者失败都有响应) ③分隔容忍(Partition tolerance)(系统任意信息的丢失或失败不会影响系统的继续运作)

BASE原则:BASE原则是NoSQL数据库通常对可用性及一致性的弱要求原则:①Basic Availble(基本可用) ②Soft-state(软状态/柔性事务) ③Eventual Consistency(最终一致性,也是ACID的最终目的);

二、MongoDB和Redis比较

MongoDB是一个基于分布式文件存储的数据库。

Redis是一个Key-value存储系统。MongoDB建议集群部署,更多的考虑到集群方案,Redis更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。

MongoDB和Redis比较

数据库  MongoDBRedis
   简介     基于分布式文件存储的数据库,是非关系数据库当中功能最像数据库的。是一个面向集合的、模式自由的文档型数据库。键值对存储的数据库                                                                                                     
 特征 最大的特点是:支持的查询语言非常强大,还支持对数据建立索引。数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行。还有丰富的数据结构类型,还支持数据备份。 
 数据类型 BSON、一种类型Json的二进制键值对数据。①string(字符串) ②hash(哈希) ③list(列表) ④set(集合) ⑤zset(有序集合) 
 特征说明

 ①面向集合。集合就相当于关系型数据库里面的表。

②文档型。文档就是一种类似于JSON的BSON格式二进制数据。(键值对)

③模式自由。不同格式之间的文档可以组成一个集合。

MongoDB的原子性限制在文档级别,对文档的保存、修改和删除都是原子操作。

 
比较比较适用数据量大的时候使用。QPS高,没那么安全。因为mongodb的弱类型支持,如果不确定实体类型,可以用mongdb替代传统型关系数据库比较适合做缓存或者锁。读取速度快,TPS高。

关系型数据库和非关系型数据库(NoSQL)比较

 


 

转载于:https://www.cnblogs.com/luoluoluoD/p/10869642.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值