系统架构设计师教程(第四版)笔记整理(四)——数据库系统(四)

3.4 事务管理

数据库系统运行的基本工作单位是事务

事务相当于操作系统中的进程,是用户定义的一个数据库操作序列,这些操作序列要么全做要么全不做,是一个不可分割的工作单位,事务的特性

(1)原子性(Atomicity):数据库的逻辑工作单位。

(2)一致性(Consistency):使数据库从一个一致性状态变到另一个一致性状态。

(3)隔离性(Isolation):不能被其他事务干扰。

(4)持续性(永久性)(Durability):一旦提交,改变就是永久性的。

事务通常以BEGIN TRANSACTION (事务开始)语句开始,以COMMIT或ROLLBACK语句结束。

COMMIT:事务提交语句,表示事务执行成功的结束。

ROLLBACK:事务回退语句,表示事务执行不成功的结束。

3.4.1 并发控制

 在多用户共享系统中,许多事务可能同时对同一数据进行操作,称为“并发操作”,

此时数据库管理系统的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,同时避免用户得到不正确的数据。

数据库的并发操作带来的问题有:丢失更新问题不一致分析问题(读过时的数据)依赖于未提交更新的问题(读了“脏”数据)

这三个问题需要DBMS的并发控制子系统来解决。

处理并发控制的主要方法是采用封锁技术。它有两种类型:排他型封锁(X封锁)和共享型封锁(S封锁),

 (1)排他型封锁(简称:X封锁)。

  如果事务T对数据A(可以是数据项、记录、数据集,乃至整个数据库)实现了X封锁,那么只允许事务T读取和修改数据A,其他事务要等事务T解除X封锁以后,才能对数据A实现任何类型的封锁。

  X封锁只允许一个事务独锁某个数据,具有排他性。

(2)共享型封锁(简称:S封锁)。

  X封锁只允许一个事务独锁和使用数据,要求太严,如果允许并发读,但不允许修改,就可以采用S封锁。

  S封锁的含义:如果事务T对数据A实现了S封锁,那么允许事务T读取数据A,但不能修改数据A,在所有S封锁解除之前绝不允许任何事务对数据A实现X封锁。

  数据库是一个共享资源,它允许多个用户程序并行地存取数据库中的数据,同时系统也对并行操作进行控制,保证数据库的完整性。

  在多个事务并发执行的系统中,主要采取封锁协议来进行处理。

(1)一级封锁协议。

  事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。

  一级封锁协议可防止丢失修改,并保证事务T是可恢复的。

  但不能保证可重复读和不读"脏"数据。

(2)二级封锁协议。

  一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁

  二级封锁协议可防止丢失修改,还可防止读“脏”数据,但不能保证可重复读。

(3)三级封锁协议。

  一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放

  三级封锁协议可防止丢失修改、防止读“脏”数据与防止数据重复读。

(4)两段锁协议。所有事务必须分两个阶段对数据项加锁和解锁。

  扩展阶段是在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;

  收缩阶段是在释放一个封锁之后,事务不能再申请和获得任何其他封锁。

若并发执行的所有事务均遵守两段封锁协议,则对这些事务的任何并发调度策略都是可串行化的。

遵守两段封锁协议的事务可能发生死锁。

  封锁的粒度即是被封锁数据目标的大小。在关系数据库中,封锁粒度有属性值、属性值集、元组、关系、某索引项(或整个索引)、整个关系数据库、物理页(块)等几种。

  封锁粒度小则并发性高,但开销大;封锁粒度大则并发性低,但开销小。

  综合平衡照顾不同需求以合理选取适当的封锁粒度是很重要的。

  

  采用封锁的方法是可以有效防止数据的不一致性,但封锁本身也会产生一些麻烦。最主要的就是死锁问题。

  所谓死锁是指多个用户申请不同封锁,由于申请者均拥有一部分封锁权而又需等待另外用户拥有的部分封锁而引起的永无休止的等待。

  死锁避免的方法

  (1)预防法。此种方法是:采用一定的操作方式以保证避免死锁的出现,

    顺序申请法、一次申请法等即是此类方法。

    顺序申请法是指:对封锁对象按序编号,在用户申请封锁时必须按编号顺序(从小到大或反之)申请,这样能避免死锁发生。

    一次申请法是指:用户在一个完整操作过程中必须一次性申请它所需要的所有封锁,并在操作结束后一次性归还所有封锁,这样也能避免死锁的发生。

  (2)死锁的解除法。此方法允许产生死锁,并在死锁产生后通过解锁程序以解除死锁。

  这种方法需要两个程序,一是死锁检测程序,用它测定死锁是否发生,

  另一是解锁程序,一旦经测定系统已产生死锁则启动解锁程序以解除死锁。

3.4.2 故障与恢复

   数据库的故障可用事务的故障来表示,主要分为四类:

  (1)事务故障。

  事务在运行过程中由于种种原因,如输入数据的错误、运算溢出、违反了某些完整性限制、某些应用程序的错误,以及并发事务发生死锁等,使事务未运行至正常终止点就被撤销,这种情况称为“事务故障”。

  (2)系统故障。

  系统在运行过程中,由于某种原因

(如操作系统或数据库管理系统代码错误、

操作员操作失误、

特定类型的硬件错误(如CPU故障)

突然停电等造成系统停止运行),

致使事务在执行过程中以非正常方式终止,这时内存中的信息丢失,但存储在外存储设备上的数据不会受影响。

  (3)介质故障。

  系统在运行过程中,由于某种硬件故障,如磁盘损坏、磁头碰撞或由于操作系统的某种潜在的错误、瞬间强磁场干扰,使存储在外存上的数据部分损失或全部损失,称为“介质故障”。

  这类故障比前两类故障的可能性虽然小得多,但破坏性却最大。

  (4)计算机病毒。

  计算机病毒是一种人为破坏计算机正常工作的特殊程序。

  通过读写染有病毒的计算机系统中的程序与数据,这些病毒可以迅速繁殖和传播,危害计算机系统和数据库。

  目前大多数病毒是在PC和其兼容机上传播的。有的病毒一侵入系统就马上摧毁系统,有的病毒有较长的潜伏期,有的病毒则只在特定的日期发生破坏作用,有的病毒感染系统所有的程序和数据,有的只影响特定的程序和数据。

  在数据库系统中,恢复的基本含义就是恢复数据库本身。也就是说,在发生某种故障使数据库当前的状态已经不再正确时,把数据库恢复到已知为正确的某一状态。

  目前数据库系统中最常用的恢复方法是转储和登记日志文件,根据故障的不同类型,采用不同的恢复策略。

  2.故障的恢复

  (1)事务故障的恢复。

  事务故障是指事务未运行至正常终止点前被撤销,这时恢复子系统应对此事务做撤销处理。

  事务故障的恢复是由系统自动完成的,不需要用户干预,

  步骤如下:

    1、反向扫描文件日志,查找该事务的更新操作。

    2、对该事务的更新操作执行逆操作。

    3、继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。

    4、如此处理下去,直至读到此事务的开始标记,事务故障恢复完成。

  (2)系统故障的恢复。

    系统故障发生时,造成数据库不一致状态的原因有两个:

    一是由于一些未完成事务对数据库的更新已写入数据库;

    二是由于一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库。

     系统故障的恢复是在重新启动时自动完成的,不需要用户干预,

    步骤如下:

      1、正向扫描日志文件,

    找出在故障发生前已经提交的事务,将其事务标识记入重做(Redo)队列。

    同时找出故障发生时尚未完成的事务,将其事务标识记入撤销(Undo)队列。

      2、(1)对撤销队列中的各个事务进行撤销处理:

          反向扫描日志文件,对每个Undo事务的更新操作执行逆操作。

        (2)对重做队列中的各个事务进行重做处理:

          正向扫描日志文件,对每个Redo事务重新执行日志文件登记的操作。

  (3)介质故障与病毒破坏的恢复。

      在发生介质故障和遭病毒破坏时,磁盘上的物理数据库被破坏,这时的恢复操作分三步:

1>.装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。

2>.从故障点开始反向读日志文件,找出已提交事务标识将其记入重做队列。

3>.从起始点开始正向阅读日志文件,根据重做队列中的记录,重做所有已完成事务,

将数据库恢复至故障前某一时刻的一致状态。

  (4)具有检查点的恢复技术。检查点记录的内容可包括:

  建立检查点时刻所有正在执行的事务清单。

这些事务最近一个日志记录的地址。采用检查点的恢复步骤如下:

  从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。

  由该检查点记录得到检查点建立时所有正在执行的事务清单队列(A)。

     建立重做队列(R)和撤销队列(U),把A队列放入U队列中,R队列为空。

       从检查点开始正向扫描日志文件,若有新开始的事务T1,则把T1放入U队列,若有提交的事务T2,则把T2从U队列移到R队列,直至日志文件结束。

  对U队列的每个事务执行Undo操作,对R队列的每个事务执行Redo操作。

  DBA要做的基本操作是:

  重装最近转储的后援副本。

       运行日志文件,执行系统提供的恢复命令。

  数据库安全和恢复是数据库系统正常运行的保证。

大型数据库管理系统一般都提供了实现安全机制的保证,即由系统提供了相应的功能,但小型的数据库管理系统并非都具有相应功能,因此有时需要人工的辅助措施,用以保证数据库的安全和恢复。

  3.5 备份与恢复

  数据库中的数据一般都十分重要,不能丢失,因为各种原因,数据库都有损坏的可能性(虽然很小),需要事先制定一个合适的、可操作的备份和恢复计划至关重要。

  备份和恢复计划的制定要遵循以下两个原则:

  (1)保证数据丢失的情况尽量少或完全不丢失,因为性价比的要求,这要取决于现实系统的具体要求。

  (2)备份和恢复时间尽量短,保证系统最大的可用性。

    数据库备份按照不同方式可分为多种,这里按照备份内容分为物理备份逻辑备份两类。

  (一)物理备份:

  是在操作系统层面上对数据库的数据文件进行备份,

  物理备份分为冷备份热备份两种。

  (1)冷备份:

  将数据库正常关闭,在停止状态下利用操作系统的copy、cp、tar、cpio等命令将数据库的文件全部备份下来,当数据库发生故障时,将数据文件复制回来,进行恢复。

  (2)热备份:

  分为两种:

一种是不关闭数据库,将数据库中需要备份的数据文件依次置于备份状态,相对保持静止,

  然后再利用操作系统的copy、cp、tar、cpio等命令将数据库的文件备份下来,

  备份完毕后再将数据文件恢复为正常状态,

  当数据库发生故障时,恢复方法同冷备份一样。

另一种方式:是利用备份软件(例如:veritas公司的netbackup,legato公司的额network等)

  在数据库正常运行的状态下,将数据库中的数据文件备份出来。

  

 为提高物理备份的效率,通常将完全增量累积三种备份方式相结合。

  完全备份是将数据库的内容全部备份,作为增量、累积的基础;

  增量备份备份上次完全、增量或累积备份以来修改的数据

  累积备份是备份自上次完全或累积备份以来修改过的数据。

  一个备份周期通常由一个完全备份和多个增量、累积备份组成。

  由于增量或累计备份导出的数据少,所以其导出的文件较小,所需的时间较少。

  

利用一个完全备份和多个增量、累积备份恢复数据库的步骤如下:

  (1)首先从完全备份恢复数据库。 

   (2)然后按照时间顺序从早到晚依次导入多个增量和累积备份文件。

  

  (二)逻辑备份:

是指利用各数据库系统自带的工具软件备份恢复数据库的内容,

例如,

Oracle的导出工具为exp,导入工具为imp ,可以按照表空间用户全库等四个层次备份和恢复数据;

Sybase 的全库备份命令是dump  database

https://www.2cto.com/database/201212/178583.html

备份命令格式为:
dump database 数据库名 to 路径

全库恢复命令是load database,另外也可利用BCP命令来备份和恢复指定表。

 (BCP 是SYBASE公司提供专门用于数据库表一级数据备份的工具。)

与备份过程一样,打开SQL Advantage,连接Server,依次执行如下命令。

load database test from  "D:/Test.dmp"
online database test
    注:如果不执行online database test,test数据库上会出现问号,数据库不能正常使用。

     

在数据库容量不大的情况下逻辑备份是一个非常有效的手段,即简单方便,但现在随着数据量的越来越大,利用逻辑备份来备份和恢复数据库已力不从心,速度也很慢

针对大型数据库的备份和恢复一般结合磁带库采用物理的完全、增量、累积三种备份方式相组合来进行。

 但无论任何时候逻辑备份都是一种非常有效的手段,特别适合于日常维护中的部分指定表的备份和恢复

  3.6 分布式数据库系统

  3.6.1分布式数据库的概念

   分布式数据库系统是相对于集中式数据库系统而言的,是将数据库技术与网络技术相结合的产物。

  分布式数据库(Distributed DataBase,DDB)是由一组数据组成的,

  这组数据分布在计算机网络的不同计算机上,网络中的每个结点具有独立处理的能力,成为场地自治,它可以执行局部应用,

同时,每个结点也能通过网络通信子系统执行全局应用。

负责分布式数据库的建立、查询、更新、复制、管理和维护的软件,称为:分布式数据库管理系统(Distributed DataBase Management System, DDBMS)。

     分布式数据库管理系统分布式数据库系统的核心。

     1.分布式数据库系统特点:

  (1)数据的分布性。

   分布式数据库中的数据分布于网络中的各个结点,它既不同于传统的集中式数据库,也不同于通过计算机网络共享的集中式数据库系统。

  (2)统一性。

   数据在逻辑上的统一性和数据在管理上的统一性两个方面。

    逻辑上的统一性: 分布式数据库系统通过网络技术把局部的、分散的数据库构成一个在逻辑上单一的数据库。呈现在用户面前就像是一个统一的、集中式的数据库。

   不同于由网络互联的多个独立数据库。

  分布式数据库是由分布式数据库管理系统统一管理和维护的,这种管理上的统一性使它不同于一般的分布式文件系统。

  (3)透明性。

    用户在使用分布式数据库时,跟使用集中式数据库一样,无需知道其关心的数据存放在哪里,存储了几次。用户需要关心的仅仅是整个数据库的逻辑结构。

   

  与集中式数据库相比,分布式数据库的优点

  (1)坚固性好。

    因为分布式数据库系统是由多个位置上的多台计算机构成的,在个别结点或个别通信链路发生故障的情况下,它仍然可以降低级别继续工作,如果采用冗余技术,还可以获得一定的容错能力。因此,系统的坚固性好,即系统的可靠性和可用性好。

  (2)可扩充性好。

  可根据发展的需要增减结点,或对系统重新配置,这比用一个更大的系统代替一个已有的集中式数据库容易得多。 

  (3)可改善性能。

  在分布式数据库中可按就近分布,合理冗余的原则来分布各结点上的数据,

  构造分布式数据库,使大部分数据可以就近访问,避免了集中式数据库中的瓶颈问题,减少了系统的响应时间,提高了系统的效率,而且也降低了通信费用。

  (4)自治性好。

  数据可以分散管理,统一协调,即系统中各结点的数据操纵和相互作用是高度自治的,不存在主从控制,

  因此,分布式数据库较好地满足了一个单位中各部门希望拥有自己的数据,管理自己的数据,同时又想共享其他部门有关数据的要求。

  

  虽然分布式数据库系统与集中式数据库相比有不少优点,但同时也需要解决一些集中式数据库所没有的问题。

  首先,异构数据库的集成问题是一项比较复杂的技术问题,目前还很难用一个通用的分布式数据库管理系统来解决这一问题。

  其次,如果数据库设计得不好,数据分布不合理,以致远距离访问过多,尤其是分布连接操作过多,不但不能改善性能,反而会使性能降低。

  2.分布式数据库的分类

  分布式数据库及其分布式数据库管理系统,根据许多因素有不同的分类方法,总的原则是:分布式数据库及DDBMS   分布式数据库管理系统(Distributed Database Management System,DDBMS)必须是其数据和软件必定分布在用计算机网络连接的多个场地上。

  从应用需要或本身的特征方面考虑可划分为以下几个方面:

  (1)按DDBMS软件同构度来分。

  当所有服务器软件(或每个LDBMS  Local DataBase Management System,局部数据库管理系统)和所有客户软件均用相同的软件时称为同构型分布式数据库;反之,则称为异构型分布式数据库。

  (2)按局部自治度来分。

  当对DDBMS的存取必须通过客户软件,则系统称为无局部自治;

  当局部事务允许对服务器软件进行直接存取,则系统称为有一定的局部自治。

  自治的两个分别是无局部自治和联邦型DDBMS或称多数据库系统。

  多数据库系统本质上是集中式与分布式的混合体:

    对一个局部用户而言,它是自治的,那么是一个集中式DBS;

    对一个全局用户而言,则是一个分布式DBS,但这个DDBS没有全局概念模式,只有一个由各局部数据库提供给全局允许共享的有关模式的集成。

  (3)按分布透明度来分。

  分布透明度又叫:模式集成度。

  若用户可以对集成模式操作不需要涉及任何片段、重复、分布等信息时,则这类DDBMS称为有高度分布透明(或高度模式集成);

  若用户必须知道所有有关片段、分配、重复等信息时,则这类DDBMS没有分布透明,没有模式集成度

  当系统不提供分布透明,用户查询时必须指定特定的场地、特定的片段等信息,当然DDBMS可以部分分布透明(介于两者之间)。

  3.分布式数据库的目标

   理想的分布式系统使用时应该精确得像一个非分布式系统。概括有12条具体规则和目标。(P89)

  (1)局部结点自治性。

    网络中的每个结点是独立的数据库系统,它有自己的数据库,运行它的局部DBMS,执行局部应用,具有高度的自治性。

  (2)不依赖中心结点。

    即每个结点具有全局字典管理、查询处理、并发控制和恢复控制等。

  (3)能连续操作。

    该目标使中断分布式数据库服务情况减至最少,当一个新场地合并到现有的分布式系统或从分布式系统中撤离一个 场地不会导致任何不必要的服务中断;

    在分布式系统中可动态地建立和消除片段,而不中止任何组成部分的场地或数据库;应尽可能在不使整个系统停机的情况下对组成分布式系统的场地的DBMS进行升级。

  (4)具有位置独立性(或称位置透明性)。

    用户不必知道数据的物理存储地,可工作可像数据全部存储在局部场地一样。

    一般位置独立性需要有分布式数据命名模式和字典子系统的支持。

  (5)分片独立性(或称分片透明性)。

    分布式系统如果可将给定的关系分成若干块或片,可提高系统的处理性能。

    利用分片将数据存储在最频繁使用它的位置上,使大部分操作为局部操作,

    减少网络的信息流量。

    如果系统支持分片独立性,那么用户工作起来就像数据全然不是分片的一样。

  (6)数据复制独立性。

  是指将给定的关系(或片段)可在物理级用许多不同存储副本或复制品在许多不同场地上存储。

  支持数据复制的系统应当支持复制独立性,用户工作可像它全然没有存储副本一样地工作。

     (7)支持分布式查询处理。

  在分布式数据库系统中有三类查询:局部查询、远程查询和全局查询。

  局部查询和远程查询仅涉及单个结点的数据(本地的或远程的),查询优化采用的技术是集中式数据库的查询优化技术。

  全局查询涉及多个结点上的数据,其查询处理和优化要复杂得多。

  (8)支持分布事务管理。

  事务管理有两个主要方面:恢复控制并发控制

  在分布式系统中,单个事务会涉及多个场地上的代码执行,会涉及多个场地上的更新,可以说每个事务是由多个“代理”组成的,每个代理代表在给定场地上的给定事务上执行的过程。

  在分步式系统中必须保证事务的代理集或者全部一致交付,或者全部一致回滚。

  (9)具有硬件独立性。

  希望在不同硬件系统上运行同样的DBMS。

  (10)具有操作系统独立性。

  希望在不同的操作系统上运行DBMS。

  (11)具有网络独立性。

  如果系统能够支持多个不同的场地,每个场地有不同的硬件和不同的操作系统,则要求该系统能支持各种不同的通信网络。

  (12)具有DBMS独立性。

  实现对异构型分布式系统的支持。理想的分布式系统应该提供DBMS独立性。

  上述的全功能分布式数据库系统的准则和目标起源于:一个分布式数据库系统,对用户来说,应当看上去完全像一个非分布式系统。

  值得指出的是,现实系统出于对某些方面的特别考虑,对上述各方面做出了种种权衡和选择。

    

3.6.2 分布式数据库的架构

  分布式数据库系统的模式结构有六个层次,实际的系统并非都具有这种结构。

  各级模式的层次清晰,可以概括和说明任何分布式数据库系统的概念和结构。

   从整体上可以分为两大部分:下半部分是集中式数据库的模式结构,代表了各局部场地上局部数据库系统的基本结构;

  上半部分是分布式数据库系统增加的模式级别。

  (1)全局外模式。

    全局应用的用户视图,是全局概念模式的子集。

  (2)全局概念模式。

    定义分布式数据库中数据的整体逻辑结构,数据就如同根本没有分布一样,可用传统的集中式数据库中所采用的方法定义。

    全局概念模式中所用的数据模型应该易于向其他层次的模式映像,通常采用关系模型。这样,全局概念模式包括一组全局关系的定义。

  (3)分片模式。

    每一个全局关系可以划分为若干不相干的部分,每一部分称为一个片段,即“数据分片”。

    分片模式就是定义片段及全局关系到片段的映像。这种映像是一对多的,即每个片段来自一个全局关系,而一个全局关系可对应多个片段

  (4)分布模式。

    由数据分片得到的片段仍然是DDB的全局数据,是全局关系的逻辑部分,每一个片段在物理上可以分配到网络的一个或多个不同结点上。

    分布模式定义片段的存放结点。

    分布模式的映像类型确定了分布式数据库是冗余的还是非冗余的。

  若映像是一对多的,即一个片段分配到多个结点上存放,则是冗余的分布数据库,否则是不冗余的分布数据库。

  根据分布模式提供的信息,一个全局查询可分解为若干子查询,每一子查询要访问的数据属于同一场地的局部数据库。

  由分布模式到各局部数据库的映像(映像4)把存储在局部场地的全局关系或全局关系的片段映像为各局部概念模式采用局部场地的DBMS所支持的数据模型。

  分片模式分布模式均是全局的,分布式数据库系统中增加的这些模式和相应的映像使分布式数据库系统具有了分布透明性。

  (5)局部概念模式。

  一个全局关系经逻辑划分成一个或多个逻辑片段,每个逻辑片段被分配在一个或多个场地上,称为该逻辑片断在某场地上的物理映像或物理片断。

  分配在同一场地上的同一个全局概念模式的若干片段(物理片断)构成了该全局概念在该场地上的一个物理映像。

  一个场地上的局部概念模式是该场地上所有全局概念模式在该场地上物理映像的集合。由此可见,全局概念模式与场地独立,而局部概念模式与场地相关。

  (6)局部内模式。

  局部内模式是DDB中关于物理数据库的描述,类似于集中式DB中的内模式,但其描述的内容不仅包含局部本场地的数据的存储描述,还包括全局数据在本场地的存储描述。

  

在图3-8的六层模式结构中,全局概念模式、分片模式和分布模式是与场地特征无关的,是全局的,它们不依赖于局部DBMS的数据模型。

  在低层次上,需要把物理映像映射成由局部DBMS支持的数据模型。这种映像由局部映射模式完成。

  具体的映射关系,由局部DBMS的类型决定。在异构型系统中,可在不同场地上拥有类型的局部映射模式。

  这种分层的模式结构为理解DDB提供了一种通用的概念结构。它有三个显著的特征:

  (1)数据分片和数据分配概念的分离,形成了“数据分布独立型”概念。

  (2)数据冗余的显示控制。

    数据在各个场地的分配情况在分配模式中一目了然,便于系统管理。

  (3)局部DBMS的独立性。(也称为:“局部映射透明性”)。

  允许在不考虑局部DBMS专用数据模型的情况下研究DDB管理的有关问题。

  1.分布式数据库系统与并行数据库系统的区别

  分布式数据库系统与并行数据库系统具有很多相似点:

   都是通过网络连接各个数据处理结点的,

  整个网络中的所有结点构成一个逻辑上统一的整体,

  用户可以对各个结点上的数据进行透明存取等。

分布式数据库系统与并行数据库之间存在着区别,主要表现在以下几个方面:

  (1)应用目标不同。

  并行数据库系统的目标是充分发挥并行计算机的优势,利用系统中的各个处理机结点并行地完成数据库任务,提高数据库的整体性能。

  分布式数据库系统主要目的在于实现各个场地自治和数据的全局透明共享,不要求利用网络中的各个结点来提高系统的整体性能。

  (2)实现方式不同。

  由于应用目标各不相同,在具体实现方法上,并行数据库与分布式数据库之间也有着较大的区别。

  在并行数据库中,为了充分发挥各个结点的处理能力,各结点间采用高速通信网络互联,结点间数据传输代价相对较低。

  当负载不均衡时,可以将工作负载过大的结点上的任务通过高速通信网络送给空闲结点处理,从而实现负载平衡。

  当分布式数据库系统中,各结点(场地)间一般通过局域网或广域网互联,网络带宽比较低,各场地之间的通信开销较大,因此在查询处理时一般应尽量减少结点间的数据传输量。

  (3)各结点的地位不同。

    在并行数据库中,各结点之间不存在全局应用和局部应用的概念。各个结点协同作用,共同处理,而不可能有局部应用。

    在分布式数据库系统中,各结点除了能通过网络协同完成全局事务外,还有自己结点场地的自治性。

  也就是,分布式数据库系统的每个场地又是一个独立的数据库系统,除了拥有自己的硬件系统(CPU、内存和磁盘等)外,还拥有自己的数据库和自己的客户,可运行自己的DBMS,执行局部应用,具有高度的自治性。

这是并行数据库与分布式数据库之间最主要的区别。

2.数据分片和透明性

  将数据分片,使数据存放的单位不是关系而是片段,这既有利于按照用户的需求较好地组织数据的分布,也有利于控制数据的冗余度。

  分片的方式有多种,水平分片垂直分片是两种基本的分片方式,

  混合分片导出分片是较复杂的分片方式。

    分布透明性指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分配细节,也不必关系局部场地上数据库的数据模型。

  分布透明性包括:分片透明性位置透明性局部数据模型透明性

  (1)分片透明性是分布透明性的最高层次。

    指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。

    当分片模式改变时,只要改变全局模式到分片模式的映像(映像2),

    而不影响全局模式和应用程序。全局模式不变,应用程序不必改写,这就是分片透明性。

  (2)位置透明性是分布透明性的下一层次。

    所谓位置透明性是指,用户或应用程序应当了解分片情况,但不必了解片段的存储场地。

  当存储场地改变时,只要改变分片模式到分配模式的映像(映像3),而不影响应用程序。

  同时,若片段的重复副本数目改变了,那么数据的冗余也会改变,但用户不必关心如何保持各副本的一致性,这也提供了重复副本的透明性。

  (3)局部数据模型透明性

  是指用户或应用程序应当了解分片及各片断存储的场地,但不必了解局部场地上使用的何种数据模型。模型的转换及语言等的转换均由映像4来完成。

  3.分布式数据库  管理  系统分布式数据库管理系统的任务,

  首先就是把用户与分布式数据库隔离开来,使其对用户而言,整个分布式数据库就好像是一个传统的集中式数据库。

  一个分布式数据库管理系统与用户之间的接口,在逻辑上与集中式数据库管理系统是一致的。

但是考虑到分布式数据库的特点,其物理实现上又与集中式数据库不同。

  以一种分布式数据库管理,以系统DDBMS的结构为例来分析它的主要成分和功能。

 

 

DDBMS由4部分组成:

  (1)LDBMS(局部DBMS)。

    局部场地上的数据库管理系统的功能是

    建立和管理局部数据库,提供场地自治能力、执行局部应用及全局查询的子查询。

  (2)GDBMS(全局DBMS)。

  全局数据库管理系统的主要功能是

  提供分布透明性,协调全局事务的执行,协调各局部DBMS以完成全局应用,保证数据库的全局一致性,执行并发控制,实现更新同步,提供全局恢复功能。

  (3)全局数据字典。

  存放全局概念模式、分片模式、分布模式的定义及各模式之间映像的定义;

  存放有关用户存取权限的定义,以保证全局用户的合法权限和数据库的安全性;

  存放数据完整性约束条件的定义,其功能与集中式数据库的数据字段类似。

  (4)CM(Communication Management ,通信管理)。

    在分布数据库各场地之间传送消息和数据,完成通信功能。

  DDBMS功能的分割和重复及不同的配置策略就导致了各种架构。

   (1)全局控制集中的DDBMS

    这种结构的特点是全局控制成分GDMS集中在某一结点上,由该结点完成全局事务的协调和局部数据库转换等一切控制功能,

全局数据字典只有一个,也存放在该结点上,它是GDBMS执行控制的依据。

  它的优点是控制简单,易实现更新一致性。

  但由于控制集中在某一特定的结点上,不仅容易形成瓶颈而且系统较脆弱,一旦该结点出故障,整个系统就会瘫痪。

  (2)全局控制分散的DDBMS。

  这种结构的特点是全局控制成分GDBMS分散在网络的每一个结点上,

全局数据字典在每个结点上有一份,每个结点都能完成全局事务的协调和局部数据库转换,每个结点既是全局的参与者又是协调者,

  一般称这类结构完全分布的DDBMS。

  它的优点是结点独立,自治性强,单个结点退出或进入系统均不会影响整个系统的运行,但是全局控制的协调机制和一致性的维护都比较复杂。

  (3)全局控制部分分散的DDBMS。

    这种结构是根据应用的需要将GDBMS和全局数据字典分散在某些结点上,是介于前两种情况之间的架构。

    局部DBMS的一个重要性质是:局部DBMS是同构的还是异构的。

    同构和异构的级别可以有三级:硬件、操作系统和局部DBMS。其中最主要的是局部DBMS这一级,因为硬件和操作系统的不同将由通信软件处理和管理。

  

  异构型DDBMS的设计和实现比同构型DDBMS更加复杂,它要解决不同的DBMS之间及不同的数据模型之间的转换。

  因此在设计和实现DDBMS时,若是用自顶向下的方法进行,即并不存在已运行的局部数据库,则采用同构型的结构比较方便。

  若是采用自底向上设计DDBMS的方法,即现已存在的局部数据库,而这些数据库可能采用不同的数据模型(层次、网状或关系),或者虽然模型相同但它们是不同厂商的DBMS(如Informix、Sybase、Db2、Oracle),这就必须开发异构型的DDBMS。

  要解决异构数据库模型的同种化问题,是研制异构型DDBMS的关键所在,

所谓同种化就是寻找合适的公共数据模型,采用公共数据模型与异构数据模型(局部)之间的转换,不采用各结点之间的一对一转换。这样可以减少转移次数。

  设有N个结点,用公共数据模型时,转换次数为2N,而各结点之间一对一转换则需N(N1)次。

   还有点没懂

原文地址:https://www.cnblogs.com/liyanli-mu640065/p/10108636.html