ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Database

2020-12-15 15:30:29  阅读:159  来源: 互联网

标签:事务 Database 数据库 一致性 数据库系统 数据 数据模型


*数据库系统的实现和现代发展*

*1数据库系统的基本概念*

数据库系统是数据管理的有效技术,是计算机科学的重要分支。数据库系统是由数据库、数据库管理系统、应用程序和数据库管理员组成的组织、存储、管理、处理和维护数据的系统。

*1.1数据库系统的发展趋势*

数据模型是数据库系统的核心和基础。依据数据模型的进展,数据库系统的发展可以相应地分为三个发展阶段,即第一代的层次、网状数据库系统,第二代的关系数据库系统,以及最新一代的数据库家族。

层状模型和网状模型都是格式化模型,它们从体系结构到数据库语言都具有相同的特征,是第一代数据库系统。支持关系数据模型的关系数据库系统是第二代数据库系统,对比于第一代数据库系统,它具有模型简单、理论基础好、数据独立性强以及数据库语言非过程化等优点。第一、二代数据库系统的数据模型虽然描述了数据的结构和某些重要的数据之间的联系,但是仍然不能捕捉和表达数据所具有的丰富且重要的含义。新一代数据库系统以丰富的数据模型为基础,与众多领域交叉,满足复杂的新应用的要求。

*1.2数据模型的基本概念*

数据库技术的发展是沿着数据模型的主线推进的,现有的数据库系统均是基于某种数据模型的,因此数据模型是数据库系统的基础和核心。

数据模型是严格定义的一组概念的集合,这些概念精准地描述了基于该数据模型的数据库系统的静态特性、动态特性和完整性约束条件。因此数据模型是由 数据结构、数据操作和数据完整性约束条件三个部分组成:

① 数据结构描述数据库的组成对象以及对象之间的联系。

② 数据操作是指对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则。

③ 数据完整性约束条件是一组完整性规则,完整性规则是数据库的组成对象以及对象之间的联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确,有效和相容。

*1.3关系数据模型*

关系数据模型是最重要的一种数据模型。目前广泛应用的数据库系统多为关系数据库系统,而关系数据库系统采用关系模型作为数据的组织方式。

区别于传统的格式化模型(层次模型和网状模型),关系模型是建立在严格的数学概念的基础上的。关系模型将关系作为其唯一的数据结构,而在用户看来,关系其实就是一张扁平的二维表。关系模型将关系代数作为其数据操作:关系代数的运算对象是关系,其运算结果也是关系;并、交、笛卡尔积、选择、投影是关系代数最基本的运算,构成了关系代数的最小完备集。关系模型中有三类完整性约束条件:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为关系的两个不变性。

*2数据库系统的实现*

数据库系统的实现包括数据存储、查询处理及优化和事务管理。

*2.1数据库系统的存储结构和系统缓冲区*

数据库是大量数据有结构的综合性集合,要将这样一个庞大的数据集以最优的形式存放在外存是一个非常重要的问题,最优体现在存储空间耗费低并且存取效率高。数据库的实现基础是文件,对数据库的任何操作最终都要转化为对文件的操作,因此设计一个良好的文件组织是数据库实现的基本问题。数据库系统是文件系统的发展,文件系统中每个文件存储同类实体的数据,各文件是孤立的,没有体现实体之间的联系,而数据库系统中数据库的存储结构必须体现实体之间的联系,支持数据库的逻辑结构,即数据模型。数据库必须存储两方面的数据:

① 元数据,即数据的描述。有关数据的描述存储在数据库的数据字典中。在关系数据库中,数据字典的存储结构和数据本身的存储结构相同。数据字典按照不同的内容分为若干张表,具体实现上,将多个数据字典表对应单个文件,由数据库管理系统负责存储管理。

② 数据本身及数据之间的联系。数据库中数据的存储结构和数据之间的联系是紧密结合的,在数据的存储结构中必须显式或隐式地体现数据之间的联系。关系数据库实现了数据表示的单一性:数据本身及数据之间的联系均用一种数据结构——“表”来表示。因此数据本身及数据之间的联系两者存储结构相同。

数据库的系统缓冲区由内存组成。系统缓冲区的设立带来了两个优点:一是它将除外存外的其它系统成分与实际的外存隔离,外存的变更不会影响到其它系统成分;二是提高了存取效率。关系数据库利用系统缓冲区缓存数据,当用户从数据库读取数据时,服务器进程首先在系统缓冲区中搜索所需的数据,只有当系统缓冲区不存在该数据时才真正从外存读入该数据所在的页面;当用户写回数据到数据库时,服务器进程并不把该数据立即写回外存,仅将该数据所在的系统缓冲区页面作一标记,表示可以释放,只有当该用户事务结束或缓冲区已满时,才按照一定的淘汰策略把系统缓冲区中有释放标记的页面写回外存。采用以上策略可以减少内外存交换的次数,提高存取效率。

*2.2查询处理和查询优化*

查询处理是关系数据库管理系统执行查询语句的过程,可以分为四个阶段:查询分析、查询检查、查询优化和查询执行。

① 查询分析。数据库管理系统判断查询语句是否符合SQL语法规则。

② 查询检查。数据库管理系统根据数据字典中有关的定义检查语句中的数据库对象是否存在且有效,并且根据数据字典中的安全性和完整性定义检查用户是否有相应的权限或是否违反了完整性约束条件。通过查询检查的查询语句就已经转换为等价的关系代数表达式。

③ 查询优化。每个查询都会有许多可以选择的执行策略和操作算法,查询优化就是选择一个高效的查询执行计划。

④ 查询执行。数据库管理系统根据优化器得到高效的查询执行计划,由代码生成器生成这个查询执行计划的代码,加以执行,回送查询结果。

在四个阶段中,查询优化有着非常重要的地位,是影响关系数据库系统性能的关键因素。关系数据库系统的查询优化不仅是关系数据库系统实现的关键技术,还是其优点所在。查询优化的优点不仅在于用户只需提出“干什么”,而不必指出“怎么干”,而且在于系统在优化上做得更好。

查询优化分为代数优化和物理优化。代数优化是指按照一定的规则,通过对关系代数表达式进行等价变换,改变其中的操作次序和组合,使查询执行计划更加高效。物理优化是指操作算法的选择。因为关系代数表达式根据一定的规则可以进行等价变换,所以一个关系代数表达式可以生成若干棵查询树,将这些查询树视为一个集合。代数优化的目标就是在这个查询树集合中选择最优查询树。而物理优化的目标则是基于启发式规则、代价计算及语义优化相结合的方式,选择高效合理的操作算法将代数优化得到的最优查询树变为具体的查询执行计划。

*2.3事务的基本概念*

事务是用户定义的一个数据库读写操作序列,这些读写操作要么全做,要么全不做,是一个不可分割的工作单位。事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。

① 原子性。事务是数据库的逻辑工作单位。

② 一致性。事务执行的结果必须是使数据库从一个一致性状态到另一个一致性状态。因此如果数据库中事务成功提交,这时数据库就处于一致性状态;如果数据库中某些事务被迫中断,这些未完成的事务对数据库所作的修改一部分已写入外存,一部分未写入外存,这时数据库就处于不一致性状态。可见数据库一致性与原子性是密切相关的。之所以要以事务为逻辑工作单位,是因为单个的读写操作不能够保证关联数据的一致性,而事务包含一系列读写操作,这些读写操作要么都做,要么都不做,这样就使得数据库在事务开始时和事务提交后都处于一致性状态。

③ 隔离性。一个事务内部使用的数据对其他并发执行的事务是隔离,这样就保证了并发执行的事务之间互不干扰,进而保证了数据的一致性。

④ 持续性。一个事务一旦提交,其对数据库的修改就是永久的,接下来可能发生的故障不应该对其执行结果有任何的影响。

*2.4数据库恢复*

数据库系统出现故障是不可避免的,所以数据库管理系统必须具有把数据库从错误状态恢复到某一已知的一致性状态的功能,这个功能就称为数据库的恢复。恢复的基本原理就是使用冗余数据,即数据库中不正确的数据或被破坏的任何一个部分都可以使用冗余数据来重建。恢复技术可以简单分为两步:一是建立冗余数据,二是遭遇故障时,利用这些冗余数据进行数据库恢复。

建立冗余数据最常用的技术是数据转储和登记日志文件。数据转储就是定期将全部或部分数据库复制到存储介质上保存起来的过程,这些备用的数据称为后备副本。日志文件是用来记录事务对数据库的更新操作的文件。为了保证数据库的可恢复性,登记日志文件时必须遵循以下两条原则:一是登记的次序严格按照并发事务执行的时间次序,二是必须先登记日志文件,后更新数据库:如果先更新数据库,再登记日志文件,则恢复时就无法将数据库恢复到更新前的状态,这样就会破坏数据库的一致性;而如果先登记日志文件,再更新数据库,则恢复时只不过是多执行一次没有必要的撤销操作,并不会影响数据库的一致性。

在发生软件故障后,数据库处于不一致状态,数据库管理系统采用的恢复步骤是:正向扫描日志文件,找出在故障发生前已经提交的的事务,对其进行重做操作;找出故障发生时尚未完成的事务,对其进行撤销操作。而在发生硬件故障后,数据库本身被破坏,数据库管理系统采用的恢复步骤是:首先装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态,然后装入相应的日志文件,重做故障发生前已经提交的事务,撤销故障发生时尚未完成的事务。从上述的恢复步骤中,我们可以看到使用日志文件进行恢复时必须搜索整个日志文件,而且很多已提交的事务实际上已经写入外存,恢复时又重新执行了重复的操作,这样就造成了大量的时间浪费。为了解决这些问题,目前技术将一般的日志文件发展为具有检查点的日志文件。这种技术在日志文件中增加了一类新的记录,即检查点记录,保证在检查点之前的已完成事务已经写入外存。这样在恢复时,就无需搜索整个日志文件以及进行不必要的重复操作,提高了恢复效率。

*2.5并发控制*

事务是并发控制的基本单位,为了保证事务的隔离性进而保证事务的一致性,数据库管理系统必须要进行正确的并发调度。要进行正确的并发调度首先要明确什么样的并发调度是正确的调度:一个给定的并发调度,当且仅当它是可串行化的,才认为其是正确的调度。然而判断一个并发调度是否是一个可串行化调度是一个NPHard问题,所以我们退而求其次,判断一个并发调度是否是一个冲突可串行化调度,其中冲突可串行化调度是可串行化调度的子集。一个并发调度Sc1在保证两个事务冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc2,如果Sc2是串行的,则称Sc1为冲突可串行化的调度,其中冲突操作是指两个事务对同一数据的读写操作和写写操作,其余操作是不冲突操作。

由事务的原子性和一致性可知,在事务开始时和事务提交后数据库一定处于一致性状态。但是在事务内部正在使用的数据不能保证其一致性,所以应通过加锁的方式使事务内部正在使用的数据对其它并发执行的事务是隔离的,从而保证了数据的一致性。而为了保证并发调度的正确性,目前技术普遍采用两段锁协议。所谓两段锁的含义是,事务分为两个阶段,第一阶段是获得封锁,事务可以申请获得任何数据上的任何类型的锁,但是不能释放任何锁;第二阶段是释放封锁,事务可以释放任何数据上的任何类型的锁,但是不能再申请任何锁。如果一个并发调度遵守两段锁协议,那么它一定是一个可串行化的调度,即正确的调度。

*3数据库系统的现代发展*

新一代数据库系统以丰富的数据模型为基础,与众多领域交叉,满足复杂的新应用的要求。数据库技术与网络技术相结合,出现了Web数据库,进而发展了语义网技术;数据库技术与人工智能技术相结合,出现了演绎数据库和知识图谱;数据库技术与大数据技术相结合,出现了分布式、面向列族的NoSQL数据库Hbase;数据库技术与分布处理技术相结合,出现了分布式数据库系统,进而发展了区块链技术。数据库系统在科学技术高速发展的今天,仍然熠熠生辉,散发出生机勃勃的活力。

*3.1数据库技术在网络中的应用*

当前互联网已经成为人们获取和发布信息的重要平台,面对来自不同信息域的巨量数据,如何进行实时处理、高效信息融合与共享,如何满足不同用户快速查找信息并有效维护信息的需求,这些问题对现有的技术提出了很多挑战。

解决上述问题一种行之有效的技术是语义网(Semantic Web),而要理解语义网必须要先理解语义网的基石:RDF。RDF(Resource Description Framework),即资源描述框架,其本质是一个数据模型。它提供了一个统一的标准,用于描述实体。RDF形式上表示为SPO三元组(Subject-Predicate-Object),具体来说RDF由节点和边组成,节点表示实体和属性,边则表示实体和实体之间以及实体和属性之间的关系。

如果将RDF和XML结合,就建立了描述层的格式与语法环境,但是这并不能赋予数据以语义,即数据的含义和各种数据之间的联系。而语义网正是为了使得网络上的数据变得机器可读而提出的一个通用框架。“Semantic”就是用更丰富的方式来表达数据背后的含义,让机器能够理解数据;“Web”则是希望这些数据相互链接,组成一个庞大的信息网络,正如互联网中相互链接的网页,只不过基本单位变为粒度更小的数据。在语义网的实现中,元数据管理作为最关键的一部分,应具备较强的计算与协作能力,可以获得与其它语义环境下的资源交互而必需的信息支持。为了能够更好地表述语义网元数据,我们可以将本体技术引入到元数据管理中来。本体(Ontology)概念源自于哲学领域,是用形式化的方法来表达某一领域的概念、概念之间的关系以及概念和关系的属性定义,使得这些概念既可以被机器所理解,也能够被广大用户所共享。

*3.2数据库技术在人工智能中的应用*

知识图谱(Knowledge Graph)最先由谷歌公司提出,其开发了基于知识图谱的项目并将知识图谱应用在语义搜索方面,通过构建起来的知识图谱可以精准的搜索出需要的信息。

事实上,知识图谱与语义网有着千丝万缕的联系:知识图谱是由本体作为Schema层,和RDF数据模型兼容的结构化数据集。知识图谱同样以RDF为基石,而RDF的表达能力有限,无法区分类和对象,也无法定义和描述类的关系/属性,也就是说RDF是对具体事物的描述,缺乏抽象能力,无法对同一个类别的事物进行定义和描述。不论是在智能的概念上,还是在现实的应用当中,这种泛化抽象能力都是相当重要的;同时,这种能力也是知识图谱本身十分强调的。因此我们引入模式语言/本体语言(Schema/Ontology Language)来解决RDF表达能力有限的困境。模式语言/本体语言是用来描述RDF数据的,类比于关系数据库:在关系数据库中,一个模式(Schema)通常包括多个表。我们可以认为数据库中的每一张表都是一个类,表中的每一行都是该类的一个对象,表中的每一列就是这个类所包含的属性。模式语言/本体语言与关系数据库中的模式十分类似,即模式语言/本体语言本质上是一些预定义词汇构成的集合,用于对RDF进行类似的类和对象定义及其属性的定义。

基于深度学习的知识图谱的构建是将某一领域的数据信息通过深度学习算法构建“实体—关系—实体”的三元组模型,并将其存储在图结构数据库中。知识图谱的构建主要分为两大数据采集与数据处理两部分。数据采集是指选择构建知识图谱的“原材料”,基于深度学习的知识图谱需要大量的训练数据进行模型训练,因此数据采集是知识图谱的重要的构建步骤。数据处理是指针对采集的数据进行相关算法操作,完成相应的任务。在通过一系列算法实现对非结构化数据进行命名实体识别(NER)和关系抽取(RC)之后,将其存储在数据库中。通常使用的数据库为关系数据库,但是关系数据库无法直接处理具有关系类别的数据,若要表达不同数据之间的关系需要构建外码,并通过引用方式进行关联,这就涉及到众多连接操作,对于百万级别数据来说,会严重影响到查询速度以及后期的数据更新与维护,因此需要一个能够体现不同实体的关系的数据库,即图结构数据库。

图数据库本身属于NoSQL数据库中的一种,是基于数学中图论实现的一种数据库。不同于关系数据库将数据存在表字段中,图数据库将数据和数据之间的关系存在结点和边中,在图数据库中这被称作结点和连接结点的关系。图数据库对数据的抽象方式和关系数据库十分类似,每个结点记录一系列描述该结点特性的属性,但在表示关系的时候,图数据库就和关系数据库有很大的不同了:相对于关系数据库中的通过外码相互引用的各种关联表,图数据库中的关系可以通过关系能够包含属性这一功能来提供更为丰富的展现方式。因此在表示知识图谱中“实体—关系—实体”的三元组模型时,图数据库较传统的关系数据库更为适合。

*3.3数据库技术在区块链中的应用*

区块链(blockchain)是借由密码学串接并保护内容的区块,每一个区块包含了前一个区块的加密散列、相应时间戳记以及交易资料,总的来说,区块链是一个去中心化的分布式数据库。

区块链系统,首先是一个分布式系统。从传统的集中式单节点结构,演变到分布式多节点结构,要解决的首要问题就是一致性的保障。在分布式系统中,运行着多个相互关联的服务节点,因此不同于集中式单节点结构所体现的一致性,分布式多节点结构的一致性有着不同的含义。在分布式系统中,一致性是指集群中的多个服务节点,给定一系列的操作,在约定协议的保障下,使它们对外界呈现的状态是一致的,换句话说,也就是保证集群中所有服务节点中的数据完全相同并且能够对某个提案达成一致。在分布式系统中,要达成一致性必须满足以下要求:首先,达成一致的结果在有限的时间内完成,即有限性;其次,不同节点最终完成的结果是相同的,即约同性;最后,决策的结果必须是系统中某个节点提出来的,即合法性,也就是说,在分布式系统中,如果一个由节点提出的提案,能够用在有限的时间内,达到一致性的结果,我们就说该提案达到了一致性。

区块链系统还必须是去中心化的,去中心化的意思就是网络中的节点与节点之间相互信任,去除了常见分布式系统中的中心系统的概念。在一个去中心化的分布式系统中,由于去除了中心系统,数据的一致性又蜕变为共识性:一致性指分布式系统中多个副本对外呈现的数据的状态,而共识性则描述了分布式系统中多个节点之间,彼此对某个状态达成一致结果的过程,即一致性描述的是结果状态,而共识则是一种手段。具体来讲,要保障系统满足不同程度的一致性,核心过程往往需要通过共识算法来达成。最常用的共识算法当属基于概率统计的工作证明(PoW)算法,工作证明算法使得每个节点在传递信息之前要先对其进行工作证明,降低了信息传递的速率,增加了节点成为领导的难度,通过区块链的短暂分叉,完美地解决了拜占庭将军问题。对于基于概率统计的工作证明算法,共识结果则是临时的,随着时间推移或某种强化,共识结果被推翻的概率越来越小,成为事实上的最终结果。

去中心化和共识是两个相辅相成的概念,两者结合才是真正意义上的“去中心化”。去中心化有了共识,才具备了完全的可信度,否则仅仅是数据共享,无法确认这些共享的数据是否真实;共识有了去中心化,就具备了安全性,系统很难被攻破,信息也很难被篡改;再加上特殊的数据结构,整个的实现就是区块链。

标签:事务,Database,数据库,一致性,数据库系统,数据,数据模型
来源: https://blog.csdn.net/qq_44781747/article/details/111217903

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有