• 数据库理论(课件)


    数据库

    1.1 分布式数据库的数据管理

    1、什么是数据库系统
    数据库系统 = 数据库管理系统 + 数据库
    2、什么是数据库管理系统?
    数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。主要任务就是对外提供数据,对内要管理数据。
    在这里插入图片描述
    3、数据处理方式:集中式VS分布式
    集中式数据库是指数据库中的数据集中存储在一台计算机上,数据的处理也集中在一台机器上完成。
    分布式数据库是指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。
    在这里插入图片描述
    4、CAP理论
    2000年,Eric Brewer教授在PODC(principles of distributed computing)的研讨会上提出了一个猜想:一致性(Consistency)、可用性(Availability)和分区容错性(Availability)三者无法在分布式系统中被同时满足,并且最多只能满足其中两个。
    在这里插入图片描述
    1)C:一致性(consistency)(强一致性)
    它是指任何一个读操作总是能够读到之前完成的写操作的结果。所有节点在同一时间具有相同的数据。
    在这里插入图片描述
    2)A:可用性(Availability)(高可用性)
    每个请求都能在确定时间内返回一个响应,无论请求是成功或失败。
    在这里插入图片描述
    3)P:分区容忍性(Partition Tolerance)
    它是指当出现网络分区情况时,即系统中的一部分节点无法和其他节点进行通信,分离的系统也能正常运行。也就是说,系统中任意信息的丢失或失败不会影响系统的继续运作。
    在这里插入图片描述
    当处理CAP的问题时,可以有几个明显的选择:

    1. CA:也就是强调一致性(C)和可用性(A),放弃分区容忍性(P),最简单的做法是把所有与事务相关的内容都放到同一台机器上。
    2. CP:也就是强调一致性(C)和分区容忍性(P),放弃可用性(A),当出现网络分区的情况时,受影响的服务需要等待数据一致,因此在等待期间就无法对外提供服务
    3. AP:也就是强调可用性(A)和分区容忍性(P),放弃一致性(C),允许系统返回不一致的数据

    设计原则:在C、A、P之中取舍
    在这里插入图片描述
    关系模型操作的关联和事务的C, 比起CAP的读写一致要求要高得多。在分布式环境下,保证C都会严重影响系统效率,因此就有关系数据库由于自身特性 不得不放弃P

    P是网络性质,CA是分布式系统性质,分区容忍性不是设计系统时可以选择的东西(因为无论如何,它都要发生,无法控制),CAP合理表述是:在一个允许网络发生故障的系统中,分布式系统该选择一致性C还是可用性A。

    NoSQL数据库理论基础-CAP原理

    重新理解CAP:
    2012年,Eric Brewer发表文章指出:实践过程中应用CAP理论时不得不进行“三选二”存在误导性。
    P发生的概率很小,不应该在设计之初直接放弃A或者C。
    即使在AC之间进行取舍,也不应该粗暴地在系统层面取A舍C或 取C舍A,应该针对不同粒度,子系统差异化。
    三者之间也不是非此即彼,应看做连续互相影响,因此可以采用如下策略:绝大多数未分区的情况下,尽可能保证CA,当发生网络分区时,系统应能识别P状况,降低CA并进行相应处理。

    1.3 NOSQL数据库理论基础

    1.3.1 ACID与BASE

    ACID、BASE与一致性

    1、ACID是什么?
    指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

    • 原子性:一个事务的所有系列操作被堪称是一个动作,所有的步骤要么全部成功要么都不会完成,不存在中间状态。

    • 一致性:事务执行前后,数据库的状态都满足所有的完整性约束,不能发生表与表之间存在外键约束,但是有数据却违背这种约束

    • 隔离性:并发执行的事务是隔离的,保证多个事务互不影响,隔离能够确保并发执行的事务能够顺序一个接一个执行,通过隔离,一个未完成事务不会影响另外一个未完成事务

    • 持久性:一个事务一旦提交,他对数据库中数据的改变就应该是永久性的,不会因为和其他操作冲突而取消这个事务

    2、BASE原则是什么?
    BASE原则=基本可用性(Basically Available)+软状态(Soft state)+最终一致性(Eventuallyconsistent)

    1. 基本可用性:分布式系统在出现故障的时候,允许损失部分可用性,即保证核心功能或者当前最重要功能可用,但是其他功能会被削弱。
    2. 软状态:允许系统数据存在中间状态,但不会影响到系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步时存在延时
    3. 最终一致性:要求系统数据副本最终能够一致,而不需要实时保证数据副本一致。最终一致性时弱一致性的一种特殊情况。

    而在实际工程实践中,最终一致性分为5种:因果一致性、读己之所写(因果一致性特例)、会话一致性、单调读一致性、单调写一致性。
    在这里插入图片描述
    4、用什么办法才能实现数据的一致性?
    Quorum系统NRW策略、SequoiaDB采用的Raft算法等
    NWR是一种在分布式存储系统中用于控制一致性级别的一种策略。
    三个关键字N、R、W。
    N — 数据复制的份数
    W — 更新数据时需要保证写完成的节点数
    R — 读取数据时需要保证读完成的节点数

    NRW策略
    如果W+R>N,写的节点和读的节点重叠,则是强一致性。
    如果W+R<=N,不能保证读写有重叠,则是弱一致性

    不同的N,W,R组合,是在可用性和一致性之间取一个平衡
    在这里插入图片描述
    不同的N,W,R组合,能在可用性和一致性之间取平衡,和CAP互相印证:

    N:系统整体可用性,正相关(副本越多,整体可用性越高)
    W:系统的写可用性,负相关(每次需要同步写入的副本越多,则写可用性越低)
    R:系统的读可用性,负相关(每次需要读取的副本数越多,则读可用性越低)
    而W+R>N代表强一致性,可见一致性和W+R成正相关,和N成负相关,
    总体上看,一致性和可用性成负相关。

    不同的N,W,R组合,还可以调整读/写操作的性能:

    如果W=N,R=1,全部节点写入成功才算有效,任何一个写节点失效,都会导致写失败,因此写可用性会降低。只读取1个节点,读性能提高,适合读比写多的场景。
    如果R=N,W=1,全部节点读出成功才算有效,任何一个读节点失效,都会导致读失败,因此读可用性会降低。只写入1个节点就算成功,写性能提高,适合读取要求不高的场景。

    分类举例典型应用场景数据模型优点缺点
    键值数据库redis内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。key指向Value 的键值对,通常用hash table来实现查找速度快数据无结构化,通常只被当作字符串或者二进制数据
    列族数据库Cassandra, HBase, Riak分布式的文件系统以列簇式存储,将同一列族数据存在一起吞吐量大,可扩展性强,更容易进行分布式扩展功能相对局限
    文档型数据库CouchDB, MongoDBWeb应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)Key-Value对应的键值对,Value为结构化数据数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构查询性能不高,而且缺乏统一的查询语法
    图形数据库Neo4J, InfoGrid, Infinite Graph社交网络,推荐系统等。专注于构建关系图谱图结构利用图结构相关算法。比如最短路径寻址,N度关系查找等很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。

    1、键值数据库
    键值数据库(Key-Value Database)会使用一个哈希表,这个表中有一个特定的key和一个指针指向特定的value。key可以用来定位value,即存储和检索具体的Value。
    在这里插入图片描述
    2、列族数据库
    列族数据库采用的是列族数据模型,由多个行构成,每行数据包含多个列族,不同行可以有不同数量的列族。属于同一列族的数据被存在一起。每行数据是通过键值来定位。
    在这里插入图片描述
    3、文档型数据库
    数据模型是结构化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。
    在这里插入图片描述
    4、图型数据库
    图型数据库以图论为基础,一个图是一个数学概念,用来表示一个对象集合,包括顶点及连接顶点的边。图数据库使用图作为数据模型来存储数据。
    在这里插入图片描述
    Nosql数据库主要有哪几类?分别说出类型名称和代表产品?
    键值数据库:Redis
    列族数据库:HBase
    文档数据库:MongoDB
    图形数据库:Neo4j

    记录

  • 相关阅读:
    SpringBoot
    中小企业怎么去挑选ERP系统?
    拓端tecdat|GIS遥感数据可视化评估:印度河流域上部的积雪面积变化
    CleanMyMac X4.16免费版mac电脑一键清理电脑垃圾工具
    【Gradle-8】Gradle插件开发指南
    一文教你如何使用Node进程管理工具-pm2
    大三0基础 java学习求助?
    (附源码)计算机毕业设计SSM居民个人健康服务平台
    毕业论文写作技巧
    sass基本使用总结
  • 原文地址:https://blog.csdn.net/qq_43652666/article/details/126902025