zoukankan      html  css  js  c++  java
  • 数据库基础

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

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

      脏读:读取到了别人未提交的事务的数据,而且这个事务,到后面还会滚了。使用数据库的READ_COMMITTED以上的隔离级别可以避免。
      不可重复度: 先读取了数据,有其他的功能修改了数据,导致现在的数据和数据库的不相等。使用数据库的REPEATABLE_READ以上的隔离级别可以避免。
      幻读:先读取了数据,后面其他的应用功能再往这个数据表中插入或者删除了数据,导致的数据不一致。

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

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

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

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

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

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

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

    Database Default isolation Level
    Oracle READ_COMMITTED
    MYSQL REPEATABLE_READ
    SQL SERVER  READ_COMMITTED
    POSTGRESQL READ_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比较

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

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

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

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

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

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

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

     


     

  • 相关阅读:
    了解大数据的特点、来源与数据呈现方式
    作业四 简单四则运算
    阅读《构建之法》1-5章有感
    分布式版本控制系统Git的安装与使用
    第一次作业-准备
    dubbo相关
    SSL相关
    关于serialize和serializearray在JS和JQuery的区别
    Log4j 的日志级别
    关于CSS中display
  • 原文地址:https://www.cnblogs.com/luoluoluoD/p/10869642.html
Copyright © 2011-2022 走看看