精华内容
下载资源
问答
  • 集中式数据库性能优化
    2022-03-05 23:18:56

    升级硬件优化数据库设计优化索引优化查询

    数据库性能调优是一个系统工程,不是一件容易的事情。对于集中式数据库的性能优化(有别于分布式数据库),大约可以从以下几个方面入手:

    一、升级硬件

    购买性能更高的服务器,或者升级机器硬件,包括CPU、内存、磁盘,以及加大带宽,提高网络传输速率。

    加内存可以将更多的数据保存在缓冲区,以减少硬盘IO操作,从而提升数据库的整体性能。

    磁盘子系统的性能提升体现在2个方面:
    1)采用速度更快的磁盘系统,比如固态硬盘代替机械硬盘;或者采用SCS接口硬盘
    2)合理分配磁盘IO到多个设备,提高并行操作能力,比如磁盘阵列

    以上就是所谓垂直扩展,集中式数据库的性能提升方式。如果是分布式数据库,则可以水平扩展,以增加服务器的数量来提升服务能力。

    二、优化数据库设计

    在数据库设计阶段,就可以着手考虑性能优化问题。数据库的设计优化,可以包括逻辑设计优化和物理设计优化。

    1、逻辑设计优化
    主要是适度反规范化。

    数据库规范化程度提升,使得数据库冗余信息减少,但也引入了新的问题。由于规范化使得关系模式不断被拆解,在使用数据时需要频繁进行连接操作,而连接操作是最耗时的,是数据库性能的制约因素。因此,适度反规范化,合理增加冗余属性,可以改善系统性能。常用的措施如下:

    1)增加派生列(计算列),将常用的计算属性(例如总和、最大值等)存储到数据库中

    2)重新定义实体(即重新设计表),增加冗余列,以减少连接等操作

    3)水平或垂直分割表,提升并行访问度

    2、物理设计优化
    1)属性的数据类型应该反映数据所需的最小存储空间,特别是对于建立索引的属性。比如,能够用smallint类型的,就不要用integer。这样索引可以更快被读取,而且一条记录的长度越小,每页返回的记录数量就越多,减少了IO操作,性能得以提升。

    2)将一个大表分割,分别存放在不同的物理磁盘上,并发读取,减轻IO压力,提升读取速度。

    3)数据库中文本或图像属性的数据存放在单独的物理设备上,原理同上。

    三、优化索引策略

    1、选用经常查询、且很少更新的属性建立索引。

    2、使用最多索引重点进行优化

    3、数据量非常小的表不必建立索引(主键除外),全表扫描更有效

    4、一个表不要建立太多索引。索引过多会影响update、insert、delete性能。

    四、优化查询

    查询优化(SQL优化)也称为应用程序优化,是数据库优化最重要的一环。SQL优化的策略很多,如:
    1、建立物化视图或尽可能减少多表查询

    2、只检索需要的属性

    3、用IN条件子句等价替换OR子句

    4、事务晚开启,早关闭,经常commit,及早释放锁

    5、非相干子查询代替相干子查询
    非相干子查询在一条SQL语句中,是独立的子查询,不依赖于外部的查询,相干子查询相反。比如

    1)非相干子查询

    SElECT *
      FROM Readers
      WHERE 读者编号 IN
      (
        SELECT 读者编号
        FROM [Borrow History]
      )
    

    2)相干子查询

    SELECT FROM Books As a
      WHERE 价格 >
      (
        SELECT AVG(价格)
        FROM Books AS b
        WHERE a.类编号=b.类编号
      )
    

    3)总结
    非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。

    相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。

    故非相关子查询比相关子查询效率高。

    更多相关内容
  • #资源达人分享计划#
  • 分布式数据库与集中式数据库的主要区别是什么?数据库技术选型一般都有哪些方法?如何从集中式数据库向分布式数据库演进
  • 处理意外查询的有效方法是通用数据库管理系统成功的关键先决条件。 提出了多种提高查询评估算法性能的方法:基于逻辑的语义转换,基本操作的快速实现以及用于在替代访问计划之间生成和选择的组合或启发算法。 本文...
  • 物料清单管理系统(BMMS)是一个实时协作软件应用程序,专门用于组织和管理电子零件和物料清单数据。... 它与Ciiva电子组件搜索API完全集成,可将组件库和物料清单与所有其他相关信息源无缝集成到一个集中式数据库中。
  • 对于视频中的3D和其他信息的集中式数据库.zip
  • #资源达人分享计划#
  • 关系数据库会按照集中式数据和分布式数据库分开总结,集中式数据库平时接触的比较多,所以主要介绍分布式关系数据库 1 集中式数据库 参考下文:http://book.51cto.com/art/200911/160355.htm 集中式数据库...

    在介绍Mongo DB之前 为了更好的丰富知识架构的完整性,会对关系数据库做一个简单介绍。

    关系数据库会按照集中式数据和分布式数据库分开总结,集中式数据库平时接触的比较多,所以主要介绍分布式关系数据库

    1 集中式数据库

    参考下文:http://book.51cto.com/art/200911/160355.htm

    集中式数据库系统是由一个处理器、与它相关联的数据存储设备以及其他外围设备组成,它被物理地定义到单个位置。系统提供数据处理能力,用户可以在同样的站点上操作,也可以在地理位置隔开的其他站点上通过远程终端来操作。系统及其数据管理被某个或中心站点集中控制。下图给出了集中式数据库系统的示例。

    一个处理器----数据存储设备(磁盘)---外围设备。主要的数据管理控制集中在某个站点或者中心站点。也就是说只有一个位置主要控制。

    特点:逻辑上集中,物理上也集中

    1.集中式数据库系统的优点

    大多数功能(如修改、备份、查询、控制访问等)都很容易实现。

    数据库大小和它所在的计算机不需要担心数据库是否在中心位置。例如,小企业可以在个人计算机(PC)上设立一个集中式数据库,而大型企业可以由大型机来控制整个数据库。

    2.集中式数据库系统的缺点

    当中心站点计算机或数据库系统不能运行时,在系统恢复之前所有用户都不能使用系统。

    从终端到中心站点的通信开销是很昂贵的。

    为了克服集中式数据库系统的缺点,可使用并行或分布式数据库系统



    分布式数据库:

    参考:http://www.cnblogs.com/cxd4321/archive/2008/11/14/1333554.html


    由于分布式数据库克服了集中式数据库的许多缺点,并且自然地适应于许多单位地理上分散而逻辑上统一的组织结构,因此,20多年以来从理论到实践都得到了迅速发展,并取得了决定性成果。

      分布式数据库结构

      分布式数据库的典型定义是:分布式数据库是一个数据集合,这些数据在逻辑上属于同一个系统,但物理上却分散在计算机网络的若干站点上,并且要求网络的每个站点具有自治的处理能力,能执行本地的应用。每个站点的计算机还至少参与一个全局应用的执行。

            特点:逻辑上集中,物理分布上分散

      所谓全局应用,要求使用通讯子系统在几个站点存取数据。这个定义强调了分布式数据库的两个重要特点:分布性和逻辑相关性。


    图1给出了典型的分布式数据库系统(DDBS)的物理结构。其中在不同地域的3台计算机分别控制本地数据库及各终端用户T;每台计算机及其本地数据库组成了此分布式数据库的一个站点,各站点用通讯网络连接起来,可以是局域网或广域网。


    图1 DDBS的物理结构图

      图2给出了分布式数据库的逻辑结构。其中,DDBMS是分布式数据库管理系统,用来支持分布式数据库的建立和维护。LDBMS是局部数据库管理系统,也就是通常的集中式数据库管理系统,用来管理本站的数据。


    图2 DDBS的逻辑结构

    DDBS的工作原理

      DDBMS是分布式数据库系统的核心部分,就其性质可分为匀质和异质两种。若每个站点的LDBMS相同,则是匀质的;若至少有两个LDBMS不同,则是异质的。

      异质DDBMS要在不同LDBMS的不同数据模型间进行转换,因而比匀质DDBMS更复杂。一般来说,若从头开始研制一个DDBS,则选择匀质较方便,且通常都选用关系模型。这是由于关系模型易于分布管理,但若DDBS是建立在已有的若干数据库之上,则这些数据库很可能有的是基于关系模型的,有的是基于层次或网络模型的,即它们是不同质的,因此要建立异质的DDBMS。

      图3给出了分布式数据库管理系统DDBMS的工作原理的参考模型。


    图3 DDBMS工作原理参考模型

      用户处理器根据外模式和概念模式把用户命令翻译成格式更适合于机器的规范化命令,并实施完整性约束,同时它负责将规范化格式的数据转换成用户结果格式。

      数据处理器根据概念模式和内模式选择通向物理数据的最优或近乎最优的访问路径,用规范化命令翻译成物理命令,并发执行物理命令,并送回结果。它还负责将物理数据转换成规范化数据。 这一部分功能通常由LDBMS完成。

      全局数据库控制和通讯系统的组成如图4所示。分解器根据分布模式负责将来自用户处理器的规范化命令翻译成一个分布执行策略,指明各数据处理器应完成的命令。分布式执行监测器负责分布策略的正确执行以及保证分布环境中事务的原子性。通讯子系统负责在网络的各计算面站点问传输命令和数据。局部执行监视器负责监视执行分布策略中的本地部分。合并器把来自几个数据处理器的结果组合起来,形成最终结果。


    图4 DDB控制和通讯系统的组成

      此参考模型支持了DDBMS的4个特性:响应时间快和费用低,结构独立性,位置独立性以及并发和重复的独立性。

    各站点计算机的自治程度也是分布式数据库系统的一个重要特性。它与分解器和分布执行监视器所处的位置密切相关。若分解器和分布式执行监视器处在外部模式以上,这时分布模式实际只存在于程序员的脑海之中,是一种由程序员来联系的系统。若它们处在外部模式以下概念模式以上,则是联邦式DBMS。若它们处在概念模式以下内部模式以上(如图3),则称为紧耦合的分布式DBMS。若它们在内模式以下,则是集中式DBMS的体系结构。分解器和分布式执行监视器所处的位置越往下,站点的自治能力越弱。

      DDBMS技术

      图5给出了DDB的参考体系结构。分布式数据库设计包括外模式、全局模式、分段模式、分配模式和各站点内模式的定义。


    图5 DDB的参考体系结构

      设计应考虑到下述目标:提高处理的本地性以提高响应速度和降低处理成本;提高数据的可用性和可靠性;合理地分布工作负荷以提高并行处理的能力等。

      将关系分段的方法有水平分段(叉分简单水平分段和诱导水平分段),垂直分段和混合分段。设计分段时应该遵守完整性约束规则,重构性条件规则和不相交性条件规则。

      复制副本的方法可以提高数据的可用性和可靠性以及处理的局部性。但对副本要加以控制,使得对用户是透明的,即对用户来说好象只存在一个副本一样。一般来说,查询只需对一个副本进行;而更新则要对所有副本进行,这使得更新的算法变得复杂。

      目录管理

      分布式数据库的目录中存放了系统为保证正确而有效地访问数据而要使用的全部信息。一般应包括各级模式的描述、访问方法的描述、关于数据库的统计数据和一致性信息等。系统根据这些信息将用户查询转换为物理数据库上的查询,并进行查询优化选择一条最佳的存取路径,进行事务管理,进行安全性和完整性检查等。

      目录的管理有多种方式。最基本的3种方式是:集中式目录,只有一个站点存放目录;全复制目录,每个站点都存放目录;局部目录,每个站点只含有本地数据库的目录。可以把目录本身作为一个特殊的系统库来对待,则对它也有检索、更新、并发控制等访问和维护问题。

      查询处理及其优化

      这是分布式数据库的主要技术问题之一。相应于图5的DDB参考体系结构,图6给出了分布式查询处理模型。


    图6 分布式查询处理模型

      分布式查询处理负责将用户查询转换为各站点上的物理查询,并负责合并各子查询结果以得到最后结果。

      查询的效率问题是个关键。因此对用户查询程序应加以优化,寻找一种使查询费用最少的执行策略,这个费用等于传输费用和局部费用之和。有时局部费用相对于传输费用可以忽略不计,如大型广域网联接的系统。但在高速的局域网中,局部费用也必须考虑。

     

    分布式并发控制技术

      事务是一个应用或一个应用的一部分,它是数据库的一致性单位,即在事务的执行前后数据库都必须是一致的。分布事务管理必须保证事务具有原子性、持久性、可串行性和隔离性。在大多数系统中是这样得到的,即在现有的本地事务管理程序上面用两阶段托付协议来获得可靠性,用两阶段锁定来进行并发控制,以及用超时来解决死锁检测。

      两阶段托付协议确保同一事务的子事务全部托付或全部终止,不管有无发生故障;两阶段托付在不丢失运行记录信息的情况下可从任何故障恢复。两阶段锁定机构要求全部子事务在生长阶段获得锁定而在收缩阶段释放锁定。用于死锁检测的超时机构在那些事务可能因死锁而等待时简单地使它们终止。

      并发控制是分布式事务管理的基本任务之一,其目的是保证分布式数据库系统中多个事务的并发、高效、正确执行。并发控制用来保证事务的可串行性,即事务的并发执行等价于它们按某种次序的串行执行,从而为用户提供了并发透明性。

      目前已提出了大量的并发控制方法,最基本的有封锁方法、时间印方法和乐观方法等。时间印方法和乐观方法理论上研究得较多,大多数原型DDBMS和商品化DDBMS采用二段锁方法。

      封锁法

      对于由于共享而产生的冲突,一般可采用封锁技术。即在对数据操作之前,先向并发控制机构提出封锁申请,如果不与其他事务发生冲突,申请被批准,系统对数据加上锁标志;否则令其等待,直至其他事务释放对此数据的封锁。

      封锁方法中的一个重要问题是封锁粒度的选择。理想的情况是只封锁与操作有关的数据集,通常称为完整性相关域。为了保持数据完整性,至少应封锁完整性相关域中的数据,从而使其中任何施加于现有数据集合的操作所影响的数据都置于封锁之中。封锁分为读锁和写锁,也称共享锁和排它锁。当事务出现冲突操作时,通过加锁原则及锁的相容性机制实现。

      冲突操作的可串行化调度:当数据共享时,事务并行执行;当数据排它时事务串行执行。使用锁模型实现并发的最著名的算法是两段锁协议。其基本方法是任何事务对数据项操作之前先加锁。加锁的方法是,在事务中的全部加锁操作在第一次解锁操作前完成。锁方式中要进行死锁消除、预防、检测处理。在集中式数据库管理系统中通过两段锁协议可以破坏死锁的形成条件,以保证事务调度的正确性。

      但是,在分布式数据库管理系统中,要对各自分散而又有共享要求的数据进行集中统一的管理,并用统一的描述使分散在各地的应用数据在用户看来全局统一在一个数据库中,这给事务的并发控制提出了更高要求。

      在分布式环境下,如果在分布式数据库系统中没有重复存储的数据,可以使用分布式锁技术。其实现方法是,对每个结点保留一个局部锁管理器,处理对存储在本地的数据加锁和释放锁的请求。当分布式数据库系统中有多处重复存储的数据时,可采用集中式锁技术,即仅有一个锁管理器,该管理器放在惟一一个结点上,所有的加锁和释放锁的请求都在该结点上处理。此外,在分布式环境下的锁方法,还有混合锁技术、主副本锁协议等。

      封锁法实现了一种并发控制,可以满足一般数据库应用对并发控制的要求,但是也有自身的缺点,那就是开销大。事务加锁都有一定的开销,还会降低事务的并发性。以锁为基础的并发控制算法在实际DDBMS中应用较为广泛,例如,在Oracle系统中并发控制的实现就是采用锁方法。

      时间印法

      所谓时间印法就是在每个事务启动运行时,并发控制机制赋予其惟一一个时间印(通常为事务的启动时间),以实现多事务的可串行性。后继事务有较大的时间印,事务的时间印一直保持到事务结束。

      此外,每个数据实体都有时间印,分为读时间印和写时间印。读时间印即数据上一次被读出的时间,写时间印即数据最近被写入的时间。只有当时间印比数据项上的时间印大或者相当的事务才能执行对数据的操作并在操作完成后置数据项的时间印为事务和数据项时间印的最大值,否则拒绝令操作重启。这种方法使事务的并行等价于特定的串行序列,即按时间印递增的序列,一般不会产生死锁。

      在分布式环境下,如果能够解决所有事务生成惟一时间印的策略,集中式时间印技术就可以直接应用于分布式数据库管理系统。实际上,在分布式策略中,每个结点都使用本地的逻辑计数器或时钟产生局部的时间印,全局的时间印通过在局部的时间印前加上各结点的标识符来获得,这样获得的时间印是惟一的,如图7所示。


    图7 产生惟一时间印的分布策略

      惟一时间印

      采用时间印的并行控制算法主要有两种:基本时间印法和保守时间印法。主要缺点是使事务重新启动的次数较多。为解决这个问题,提出保守时间印法,该方法的主要特点是不会拒绝任何操作,从而不会重启事务。

      处理方法是当出现冲突操作时,把年轻的缓冲起来,等待年老的操作执行完成后再执行被缓冲起来的操作。这就需要确定何时所有的事务操作均已执行完。但这可能引发死锁的情况,也可能出现某一场地被阻断的情况。事实上,避免死锁的惟一方法是超时后发送一个空操作。

      在分布式数据库管理系统中,数据的可用性和可靠性从某种角度看是矛盾的。对于可用性和可靠性要求较高的应用,可以采用封锁和时间印相结合的方法,可以避免错误、避免死锁,必要时要考虑采用容错和重构技术来提高可靠性。



    展开全文
  • 【摘要】随着互联网金融场景的不断拓展,海量的数据访问和处理造成传统的集中式数据库开始表现出性能瓶颈,分布式数据库的研究和场景使用应运而生,而数据的安全和合规也随着企业对数据使用的要求越来越高更加重视。...
    【摘要】随着互联网金融场景的不断拓展,海量的数据访问和处理造成传统的集中式数据库开始表现出性能瓶颈,分布式数据库的研究和场景使用应运而生,而数据的安全和合规也随着企业对数据使用的要求越来越高更加重视。因此在这种场景下,分布式数据库应具备高性能、可扩展、高可用和高容错等特性,而传统的集中式数据库难以同时满足,本文重点介绍分布式数据的特性及种类,根据相应的业务场景对分布式数据库选型进行分析,并对分布式数据库的细分领域的发展进行探讨。
    【作者】顾黄亮,十年技术老兵,历经研发和运维,了解基础架构、安全、中间件、数据库,专注于智慧运维体系的打造。曾供职于航天晨光、上汽集团云计算中心,现任苏宁消费金融安全运维部总监。


    1 引言

    近年来,随着国际信息安全形式的日益严峻,国家信息安全策略逐步深入。因此,一行两会连续针对金融业数据库技术受制于人的严峻形势出台了相关政策,以满足构建安全可靠可控的信息技术体系的要求。

    纵观近年来普惠金融的发展,多用户、低额的客单价带来的主要挑战是数据量、交易额的大幅提高,并伴随着数十倍的交易高峰压力以及交易复杂度的增加。而传统数据库在处理此类应用场景的时,在扩展性、性能、吞吐量和可靠性等方面遇到了明显的瓶颈,只能通过业务拆分、升级硬件的方式来提升性能,造成设备投入和人员成本的不断攀升。面对着互联网金融业态不断的发展,数据的交互和存储也呈现指数级增长,这样的方式也无法保证业务连续性。在此形式下,在分布式数据库的选型上,根据不同的业务场景和关键系统中选择不同的开源产品,通过对开源数据库的深入研究和应用,满足了互联网金融业务场景的事务处理和数据处理的要求。


    2 传统数据库的那些事

    个人认为,分布式数据库是起源于传统的关系型数据库,两者的设计场景不同,前者面对企业级应用,运行在独立的服务器上,而后者的应用更多的是面对互联网用户。随着用户相应的数据量极具增加,传统的关系型数据库在可扩展性的弊端日益显现,一般有下面几个方面:

    (1)单点处理的性能瓶颈,即单点的数据库系统无法处理大规模的并发请求和计算;

    (2)单点运行风险高,容灾容错能力差;

    (3)单点存储能力有限,只能纵向扩展,不能横向扩展;

    (4)应用扩容升级难度大,设备投入高。

    对于数据库本身来说,传统的分布式数据库都有各自的集群解决方案,不过这不是真正意义上的分布式,仅仅是为了解决高可用场景下数据库的负载均衡问题。这种特性是每个数据库都是冗余的,所谓冗余,那就是每个数据库的数据都是完全一样的,所以数据量上升到一定的程度,对集群中的每个数据库都会造成很大的压力。

    然而,云计算的出现引爆了这一切。当资源不再是瓶颈的时候,分布式数据库的春天来了。


    3 说说分布式数据库

    分布式数据库的概念不再阐述,大体描述就是数据库技术和网络技术的亲生孩子。在此,我们为什么选择分布式数据库,理由有如下:

    (1)具有灵活的体系结构;

    (2)适应分布式的管理和控制机构;

    (3)经济性能优越;

    (4)系统的可靠性高、可用性好;

    (5)局部的应用响应快;

    (6)优越的可扩展性,易于集成现有的系统。

    那分布式数据库应该怎么用?基于分布式数据库的选型该怎么做?

    首先,基于特性,分布式数据库大致可以分为三类:

    (1)支持持久化存储的分布式存储系统,如MySQL,OceanBase;

    (2)偏向于计算的分布式计算框架,如Hadoop HDFS,Ceph,Swift,Blob,Cinder,Lustre;

    (3)分布式消息队列,如Redis,RMQ,CMQ,Kafka。

    其次,基于不同的应用场景,根据特性继续细化,又可以分为以下:

    (1)分布式协同数据库系统;

    (2)分布式任务;

    (3)流式计算;

    (4)分布式文件系统;

    (5)分布式nosql存储;

    (6)分布式关系数据库;

    (7)分布式消息队列。

    回到最核心的问题,如何进行分布式数据库技术路线的选择?

    分布式一般分为三条技术路线:分布式访问客户端、分布式中间件模式、分布式数据库模式。其中分布式访问客户端对应用侵入性大,改造难度很高;分布式中间件则类似MyCAT等产品,在数据库和应用间架一层Proxy,这种方案无法支持分布式事务、也无法支持跨库关联,分布式数据库方案则将分库分表等中间件实现的功能下推到数据库层面来做,对应用透明,应用就像使用单机数据库来使用分布式数据库,同时天然地支持分布式事务。


    4 常用的分布式数据库和场景选型

    针对以上概述,列举ElasticSearch、Redis、MySQL分布式集群、MongoDB四个分布式数据库进行举例,分别从简介、应用场景、优点、缺点、备份/持久化进行对比和分析。其中MySQL分布式集群包括以下几种集群方式:Proxy,Cluster,Mha,Mgr,基于MySQL协议的NewSQL,如MyCAT,OceanBase不在此范围之内。

    (1)简介

    v2-33db59193e930e6a36e86f5c667a67e6_b.jpg

    (2)应用场景

    v2-1f8acabcb8e51f30aa64568fddcf1cc9_b.jpg

    (3)优点

    v2-e5d5de9056ebf0161a67b1812db673c4_b.jpg

    (4)缺点

    v2-a4ab8502413d3193e65d730608dad468_b.jpg

    (5)备份/持久化方案

    v2-9160b2f8e9d37fc958b9cef0fad64c69_b.jpg

    5 项目中的一些问题

    在项目中,针对分布式数据库的设计,一般有几个难点。

    (1)分布式事务的问题,在分布式数据库中,分布式事务的实时一致性是很难保证的,而容错性的设计一定要考虑全面,通过牺牲相应的可用性来保证一致性。

    (2)性能方面,为了保证事务的全局一致性,分布式数据库需要一个全局的事务管理器,用于分配全局事务的工作,不同的分布式数据库或许有不一样的功能,如果数据量和请求达到一个量级的时候,事务管理器或许就成为一个新的瓶颈。

    (3)高可用的问题,当分布式数据库集群中有节点宕机的时候,宕机数量和选举工作会影响整个集群提供服务的质量,这一点跟业务的容忍性密切相关。

    在运维阶段,针对分布式数据库是从认识、熟悉到经过的过程,一个新的产品或者功能的运维是离不开很多准备工作。因此,进入运维阶段,一般要考虑下面几步。

    (1)准备好常用的运维脚本、应急手册、运维手册;

    (2)做好分布式数据库的监控,尤其是关键指标的监控;

    (3)技术手册的培训,准入条件的限制;

    (4)定期做好演练工作,及时发现问题。


    6 分布式数据库发展的一些思考

    在企业中,对于新技术新产品的选型不仅仅为了满足当前业务场景的需求,还要考虑到这个产品未来三到五年的发展道路和方向,以及是否能够不断迭代以满足未来的需求。因此,用户仅了解每一种技术的现状是远远不够的,只有当认识到一种技术的发展策略以及其架构的局限性后,才能够预见和洞察未来。架构局限性并不等于功能的缺失。很多新型技术 在开始时都无法提供像Oracle一样完备的企业级功 能,但并不意味着用户必须要等到全部功能完备后才 开始考虑学习和使用。用户在评估一种新产品和技术时,产品的功能点需要满足几个必备的基础功能,而一些高级功能则不需要立刻具备。

    对于分布式数据库来说,随着业务场景和数据的使用处理方面的需求趋于成熟和明朗,分布式数据库的以场景和功能的区分更为细化,主要发展发现基本可以分为分布式联机数据库和分布式计算数据库两种,而针对非结构化小文件需求也在考验分布式数据库是否在这个领域能够打出一片天地,可以展望,小型的分布式的针对非结构化的文件存储数据库也可能后期的战场之一。


    原作者:顾黄亮
    原文链接: 分布式数据库的场景选型及趋势分析解读 - 顾黄亮 - twt企业IT交流平台
    原出处:twt企业IT交流平台

    v2-4d4cccb2b9aae3b11741e93b2f876ed0_b.gif

    展开全文
  • 数据库系统---分布式数据库系统

    千次阅读 2018-08-23 11:57:41
     分布式数据库系统是相对于集中式数据库系统而言的,是将数据库技术与网络技术相结合的产物。分布式数据库(Distributed DataBase,DDB)比较确切的定义是:分布式数据库是由一组数据组成的,这组数据分布在计算...

    分布式数据库系统

        近年来,随着计算机技术与网络技术的发展,特别是 Internet 的兴起,分布式数据库系统得到了很快的发展和应用。

    1 分布式数据库的概念 

        分布式数据库系统是相对于集中式数据库系统而言的,是将数据库技术与网络技术相结合的产物。分布式数据库(Distributed DataBase,DDB)比较确切的定义是:分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个结点具有独立处理的能力,成为场地自治,它可以执行局部应用,同时,每个结点也能通过网络通信子系统执行全局应用。负责分布式数据库的建立、查询、更新、复制、管理和维护的软件,称为分布式数据库管理系统(Distributed DataBase Management System, DDBMS)。分布式数据库管理系统保证分布式数据库中数据的物理分布对用户的透明性。一个计算机网络组成的计算机系统,在配置了分布式数据库管理系统,并在其上建立了分布式数据库和相应的应用程序后,就称其为分布式数据库系统(Distributed  DataBase System,DDBS)。分布式数据库管理系统是分布式数据库系统的核心。

        1.分布式数据库的特点从上面的定义可以看出分布式数据库系统有以下几个特点:

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

        (2)统一性。主要表现在数据在逻辑上的统一性和数据在管理上的统一性两个方面。分布式数据库系统通过网络技术把局部的、分散的数据库构成一个在逻辑上单一的数据库,从而呈现在用户面前的就如同是一个统一的、集中式的数据库。这就是数据在逻辑上的统一性,因此,它不同于由网络互联的多个独立数据库。分布式数据库是由分布式数据库管理系统统一管理和维护的,这种管理上的统一性又使它不同于一般的分布式文件系统。

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

        与集中式数据库相比,分布式数据库具有下列优点:

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

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

        (3)可改善性能。在分布式数据库中可按就近分布,合理地冗余的原则来分布各结点上的数据,构造分布式数据库,使大部分数据可以就近访问,避免了集中式数据库中的瓶颈问题,减少了系统的响应时间,提高了系统的效率,而且也降低了通信费用。

        (4)自治性好。数据可以分散管理,统一协调,即系统中各结点的数据操纵和相互作用是高度自治的,不存在主从控制,因此,分布式数据库较好地满足了一个单位中各部门希望拥有自己的数据,管理自己的数据,同时又想共享其他部门有关数据的要求。

       虽然分布式数据库系统与集中式数据库相比有不少优点,但同时也需要解决一些集中式数据库所没有的问题。首先,异构数据库的集成问题是一项比较复杂的技术问题,目前还很难用一个通用的分布式数据库管理系统来解决这一问题。其次,如果数据库设计得不好,数据分布不合理,以致远距离访问过多,尤其是分布连接操作过多,不但不能改善性能,反而会使性能降低。

        2.分布式数据库的分类

        分布式数据库及其分布式数据库管理系统,根据许多因素有不同的分类方法,总的原则是分布式数据库及 DDBMS 必须是其数据和软件必定分布在用计算机网络连接的多个场地上。从应用需要或本身的特征方面考虑可将它从以下几个方面来划分:

        (1)按 DDBMS 软件同构度来分。当所有服务器软件(或每个 LDBMS)和所有客户软件均用相同的软件时称为同构型分布式数据库;反之,则称为异构型分布式数据库。

        (2)按局部自治度来分。当对 DDBMS 的存取必须通过客户软件,则系统称为无局部自治;当局部事务允许对服务器软件进行直接存取,则系统称为有一定的局部自治。自治的两个分别是无局部自治和联邦型 DDBMS 或称多数据库系统。多数据库系统本质上是集中式与分布式的混合体:对一个局部用户而言,它是自治的,那么是一个集中式 DBS;对一个全局用户而言,则是一个分布式 DBS,但这个 DDBS 没有全局概念模式,只有一个由各局部数据库提供给全局允许共享的有关模式的集成。

        (3)按分布透明度来分。分布透明度的另一个概念是模式集成度。若用户可以对集成模式操作不需要涉及任何片段、重复、分布等信息时,则这类 DDBMS 称为有高度分布透明(或高度模式集成);若用户必须知道所有关于片段、分配、重复等信息时,则这类 DDBMS 没有分布透明,没有模式集成度。当系统不提供分布透明,用户查询时必须指定特定的场地、特定的片段等信息,当然 DDBMS 可以部分分布透明(介于两者之间)。

        3.分布式数据库的目标

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

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

        (2)不依赖中心结点。即每个结点具有全局字典管理、查询处理、并发控制和恢复控制等功能。

        (3)能连续操作。该目标使中断分布式数据库服务情况减至最少,当一个新场地合并到现有的分布式系统或从分布式系统中撤离一个 场地不会导致任何不必要的服务中断;在分布式系统中可动态地建立和消除片段,而不中止任何组成部分的场地或数据库;应尽可能在不使整个系统停机的情况下对组成分布式系统的场地的 DBMS 进行升级。

        (4)具有位置独立性(或称位置透明性)。用户不必知道数据的物理存储地,可工作可像数据全部存储在局部场地一样。一般位置独立性需要有分布式数据命名模式和字典子系统的支持。

        (5)分片独立性(或称分片透明性)。分布式系统如果可将给定的关系分成若干块或片,可提高系统的处理性能。利用分片将数据存储在最频繁使用它的位置上,使大部分操作为局部操作,减少网络的信息流量。如果系统支持分片独立性,那么用户工作起来就像数据全然不是分片的一样。

        (6)数据复制独立性。是指将给定的关系(或片段)可在物理级用许多不同存储副本或复制品在许多不同场地上存储。支持数据复制的系统应当支持复制独立性,用户工作可像它全然没有存储副本一样地工作。

        (7)支持分布式查询处理。在分布式数据库系统中有三类查询:局部查询、远程查询和全局查询。局部查询和远程查询仅涉及单个结点的数据(本地的或远程的),查询优化采用的技术是集中式数据库的查询优化技术。全局查询涉及多个结点上的数据,其查询处理和优化要复杂得多。

        (8)支持分布事务管理。事务管理有两个主要方面:恢复控制和并发控制。在分布式系统中,单个事务会涉及多个场地上的代码执行,会涉及多个场地上的更新,可以说每个事务是由多个“代理”组成的,每个代理代表在给定场地上的给定事务上执行的过程。在分布式系统中必须保证事务的代理集或者全部一致交付,或者全部一致回滚。

        (9)具有硬件独立性。希望在不同硬件系统上运行同样的 DBMS。

        (10)具有操作系统独立性。希望在不同的操作系统上运行 DBMS。

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

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

        上述的全功能分布式数据库系统的准则和目标起源于:一个分布式数据库系统,对用户来说,应当看上去完全像一个非分布式系统。值得指出的是,现实系统出于对某些方面的特别考虑,对上述各方面做出了种种权衡和选择。

    2 分布式数据库的架构

        分布式数据库系统的模式结构有六个层次,如图 3-8 所示,实际的系统并非都具有这种结构。在这种结构中各级模式的层次清晰,可以概括和说明任何分布式数据库系统的概念和结构。

        图 3-8 的模式结构从整体上可以分为两大部分:下半部分是集中式数据库的模式结构,代表了各局部场地上局部数据库系统的基本结构;上半部分是分布式数据库系统增加的模式级别。

        (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.数据分片和透明性

        将数据分片,使数据存放的单位不是关系而是片段,这既有利于按照用户的需求较好地组织数据的分布,也有利于控制数据的冗余度。分片的方式有多种,水平分片和垂直分片是两种基本的分片方式,混合分片和导出分片是较复杂的分片方式。

        分布透明性指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分配细节,也不必关心局部场地上数据库的数据模型。从图 3-8 的模式结构可以看到分布透明性包括:分片透明性、位置透明性和局部数据模型透明性。

        (1)分片透明性是分布透明性的最高层次。所谓分片透明性是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。当分片模式改变时,只要改变全局模式到分片模式的映像(映像 2),而不影响全局模式和应用程序。全局模式不变,应用程序不必改写,这就是分片透明性。

        (2)位置透明性是分布透明性的下一层次。所谓位置透明性是指,用户或应用程序应当了解分片情况,但不必了解片段的存储场地。当存储场地改变时,只要改变分片模式到分配模式的映像(映像 3),而不影响应用程序。同时,若片段的重复副本数目改变了,那么数据的冗余也会改变,但用户不必关心如何保持各副本的一致性,这也提供了重复副本的透明性。

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

        3.分布式数据库管理系统分布式数据库管理系统的任务,首先就是把用户与分布式数据库隔离开来,使其对用户而言,整个分布式数据库就好像是一个传统的集中式数据库。换句话说,一个分布式数据库管理系统与用户之间的接口,在逻辑上与集中式数据库管理系统是一致的。但是考虑到分布式数据库的特点,其物理实现上又与集中式数据库不同。下面以一种分布式数据库管理。

        以系统 DDBMS 的结构为例来分析它的主要成分和功能,如图 3-9 所示。

     

        由图 3-9 可以看出,DDBMS 由 4 部分组成:

        (1)LDBMS(局部 DBMS)。局部场地上的数据库管理系统的功能是建立和管理局部数据库,提供场地自治能力、执行局部应用及全局查询的子查询。

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

        (3)全局数据字典。存放全局概念模式、分片模式、分布模式的定义及各模式之间映像的定义;存放有关用户存取权限的定义,以保证全局用户的合法权限和数据库的安全性;存放数据完整性约束条件的定义,其功能与集中式数据库的数据字典类似。

        (4)CM(Communication Management,通信管理)。在分布数据库各场地之间传送消息和数据,完成通信功能。

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

        (1)全局控制集中的 DDBMS。这种结构的特点是全局控制成分 GDBMS 集中在某一结点上,由该结点完成全局事务的协调和局部数据库转换等一切控制功能,全局数据字典只有一个,也存放在该结点上,它是 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)次。

    展开全文
  • 集中式架构与分布式架构比较

    千次阅读 2019-01-29 10:01:14
    集中式架构的典型案例是 IOE(IBM, Oracle,EMC)提供的计算设备、数据库技术和存储设备共同组成的系统。 近年来,分布式架构在 Google、 Amazon、Facebook、阿里巴巴、腾讯等互联网公司广泛应用基础上、也...
  • mysql集群与分布式数据库的区别

    万次阅读 2019-08-29 20:13:29
    分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获得更大的存储容量和更高的并发访问量。近年来,随着数据量的增长,分布式数据库技术也得到了快速的发展,传统...
  • 11月15日,2019第九届数据技术嘉年华大会在北京召开,华为IT产品线副总裁、智能数据与存储领域总裁周跃峰受邀出席并发表主题演讲,围绕中国未来需要什么样的数据库、华为GaussDB数据库的发展历程,与参会嘉宾、学者...
  • 可扩展的分布式数据库架构

    千次阅读 2018-05-27 08:26:09
    引 言 数据库的可用性和扩展性一直是...这种集中式数据库的架构,使得数据库成为了整个系统的瓶颈,已经越来越不适应海量数据对计 算能力的巨大需求。近些年来,分布式系统成为了一种趋势,我们希望用廉价的设...
  • Gauss数据库初识

    千次阅读 2020-08-11 20:50:49
    数据库产业发展与回顾 数据库发展历史 进入云数据库时代 数据增长概念 数据管理面临的挑战 高斯数据库介绍 包含两种数据库 【注】上图GausssDB A是GaussDB 200,上图写成100了。 OLTP主要用于一些实时的业务,...
  • 分布式数据库概述

    2021-03-04 12:05:11
    这时集中式数据库系统表现出它的不足:数据按实际需要已在网络上分布存储,再采用集中式处理,势必造成通信开销大;应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统受到影响,可靠性不高;集中式...
  • 分布式数据库的应用场景

    千次阅读 2021-12-12 23:02:56
    分布式数据库的应用场景
  • 数据库体系结构-分布式数据库

    千次阅读 2019-10-05 20:56:57
    (1)集中式:DBMS和应用程序都存放在一台计算机上; (2)主从式(客户机/服务器):DBMS存放在服务器上,应用程序存放在客户机上; (3)分布式:数据库在物理上分布在不同的场地,而逻辑上属于一个整体。 (4) (5)...
  • H3C智能管理中心部署指导(集中式部署 本地数据库).pdf
  • 1.分布式数据库是多个数据库,而rac只是一个库多个实例; 2.rac事务上没有协调的问题,而分布式数据库由于是多个库需要事务上的协调; 3.分布式数据库数据是分散存储在各个节点,但是设备一般都是廉价的设备,经常...
  • 分布式数据库系统(DDBS) 概述

    千次阅读 2018-09-02 11:46:06
     分布式数据库系统(DDBS:Distributed Database System)是在集中式数据库系统的基础上发展来的。是数据库技术与网络技术结合的产物。  分布式数据库系统有两种:一种是物理上分布的,但逻辑上却是集中的。这种...
  • 随着传统的数据库、计算机网络和数字通信技术...与集中式数据库相比它有如下主要优点:  · 解决组织机构分散而数据需要相互联系的问题。  · 均衡负载。负载在各处理机间分担,可避免临界瓶颈。  · 可靠性高。数据
  • 数据库原理第四章,数据库管理系统引论
  • Web2.0网站,数据库并发负载非常高,往往达到每秒上万次的读写请求 2,高容量存储和高效存储 Web2.0网站通常需要在后台数据库中存储海量数据,如何存储海量数据并进行高效的查询往往是一个挑战 3,高扩展性和高...
  • 随着计算机和信息技术的迅猛发展,行业应用系统的规模迅速扩大,行业应用所产生的数据量呈爆炸式增长,动辄达到数百TB甚至数百PB的规模,已远远超出传统计算技术和信息系统的处理能力,集中式数据库面对大规模数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 147,479
精华内容 58,991
关键字:

集中式数据库

友情链接: Sail_v1.2_SC_GBK.zip