论文部分内容阅读
数据库是各种IT系统中最常见的组成部分,从上世纪80年代初以来,在企业的各种基于数据库的应用系统中,关系型数据几乎一统天下,而进入云计算时代,由于互联网应用的兴起,关系型数据库受到了以大数据处理为主要卖点的NoSQL数据库的强力挑战。为满足云计算时代对数据处理的要求,特别是对高扩展、读写速度、支撑容量以及建设和运营成本方面的要求,关系型数据库自身不断做出调整,向分布式数据库演进。
处理非结构化数据
在数据库应用中,经常会涉及全文文本、图像、声音、影视、超媒体等信息类型,这些信息的字段长度可变,并且每个字段的记录又可以由可重复或不可重复的子字段构成,这就形成了典型的非结构化数据。在企业中非结构化数据主要有办公文档、披露的信息、Web发布的页面,以及工作中一些培训、宣传、监控用到的多媒体信息等。
如今,非结构化数据处理越来越普遍,而非结构化数据的处理也成为关系型数据库面临的一个很大挑战。一般而言,非结构化数据的组织主观性比较大,缺乏统一的规则,处理起来难度大,然而,非结构化数据越来越普遍,促使各关系型数据库厂商不得不对其产品进行拓展而使其具备管理非结构化数据的功能。
目前,主流的关系型数据库,包括Oracle、SQL Server、Sybase、DB2都或多或少对非结构化数据类型提供了支持,如SQL Server 2008中引入了文件流fileStream技术,支持非结构化文档的存储、查询和检索。Oracle数据库则采用大对象BLOB技术存储非结构化数据。面向对象的数据库中还有一个典型代表是Cache数据库,在非结构数据的支持上走得更远些。
云计算与分布式数据库
数据海量、类型复杂、响应速度要求高,这些都对现有数据库构成挑战。实际上,无论是内存数据库还是基于存储的数据库,当前的这些主流数据库都很难支持面向特大型非结构化数据的应用系统,而随着分布式计算、云计算技术的发展,数据库找到了一种应对办法,这就是数据库的分布式实现。
分布式数据库是从数据库与服务器组合关系来说的,它由若干个站集合而成,这些站又称为节点。分布式数据库系统通常使用较小的计算机系统,由多个计算机组成,每台计算机中都有数据的一份完整拷贝或一个分片,计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库。Oracle的并行数据库RAC就是一种分布式数据库,它的核心技术正是分布式计算。RAC共享了多种资源,采用统一的数据库命名空间和一套共享的存储。同样,GreenPlum也是一种分布式数据库,它实现了简单的共享,共享的内容是管理节点和数据库命名空间。
严格说来,分布式数据库并非因云计算环境而生,但却很适合云计算环境下的需求。这是因为云环境下要求数据库具备很强的横向扩充能力,这就要求节点之间尽量减少共享,而采用节点的分片技术来并行处理是解决办法之一。
云计算技术的一个重要内容是任务的分解和结果的汇总,然后通过后台的并行计算来完成大规模的处理。对于具体行业来说,云计算平台软件、虚拟化软件都不需要自己开发, 但面向特定行业的大规模数据处理应用软件没有通用的产品,需要针对特定的应用需求专门开发,其中会涉及诸如并行算法、索引查询优化技术研究以及系统的设计实现等。例如,提出云计算的Google公司为实现其搜索服务,专门设计了新文件系统(GFS)和存储库(Bigtable),采用调度器(Scheduler)的主从调度技术将存储信息和任务分片(Sharing),并采用映射归约(MapReduce)处理技术,从而实现了对网页的存储检索,最后将一个大型的数据库分成多片,调度器(Scheduler)负责任务分解,将结果分拆给节点。每个节点负责一个数据片,负责完成数据库的基本功能(插入、复制、查询),并把结果传给上层的调度器,从而使数据处理达到横向扩展(Scale Out)的能力。
在 RAC中,命名空间是一个逻辑概念,不会导致资源瓶颈。RAC数据库本身是一套基于磁盘的数据库,其服务器节点的磁盘操作、没在内存缓冲区的磁盘读写操作都需要共享的磁盘来完成,因而统一共享的存储是RAC的资源瓶颈之一,而RAC的性能瓶颈还会体现为后台磁盘的I/O瓶颈。Oracle推出的一体机Exadata,其中一个重要的特点是采用并行计算的存储服务器和闪存,以提高存储的I/O能力。在其满配的一体机中,数据库服务器有8台,存储服务器为14台,可见一体机设计中对存储I/O的偏重。
在GreenPlum体系中,在主机上规划查询项目,并将其分成若干部分在节点上并行执行,所有通信功能都在一个高宽带网络互连体系上实现。这种体系下每个节点都有一个通往本地磁盘的独立高速通道,因为没有共享存储,存储和节点都有很强的横向扩展性能力。
云环境下的数据库架构设计
基于云计算对灵活性和可扩展性方面的要求,云计算下的数据库可以使用多个分片数据库并行处理,来形成一个超级大数据库,这个数据库共享的组件尽量少,因而不太适合共享存储。而随着虚拟化技术的提高,特别是虚拟机的性能损耗符合一定要求时,分片数据库也可以架设在虚拟机上。借组云计算的资源调度技术,这样一个可伸缩的并行数据库可以在云计算环境中形成(参见附图)。
值得一提的是,云计算的发展使得数据库的扩展更为简单可行。其中,云管理平台负责资源的监控、自动调度,当查询类并行数据库的性能不足的时候,云管理平台可以自动为虚拟机(VM)增加资源,或通过增加新的虚拟机(VM) 来增加并行数据库的处理能力;而当系统面临的压力减少时可以通过减少分片处理数据库来减少资源需求,或通过减少所在虚拟机(VM)的资源。当然,这就要求查询类并行数据库的管理主机能感知资源和分片数据库的变化,而重新分配处理任务。
目前,云计算还处于发展过程之中,但一些云应用已经具备大规模处理能力,针对简单、同质、重复使用的应用(如一种数据处理、一个查询,邮件收发等标准化的功能),已经可以将大量的PC服务器组合,形成一个超级的计算资源来完成指定的任务,如在搜索、地震处理、气象分析、核爆模拟方面展现巨大的能力,通过相关软件可以将多服务器整合,形成超级处理资源,其应用软件设计并行处理能力可以将一个巨大但相似的计算任务分解到不同的处理节点,在管理节点的统一调度下,每个节点获得一部分数据,先独立处理,然后与管理节点协商,并与其他的节点相互通信,交换少量数据,最终将一个巨大的计算任务完成。
不过,总体上,数据库在可扩展性这一方面的能力还不是很强,目前,GreenPlum和VoltDB等分布式数据库正在朝这一方向努力,并且已经具备了一定的并行能力。相信只要有市场需求,分布式数据库一定会继续进步,不过,是否会出现一种真正的云数据库还值得观察。
处理非结构化数据
在数据库应用中,经常会涉及全文文本、图像、声音、影视、超媒体等信息类型,这些信息的字段长度可变,并且每个字段的记录又可以由可重复或不可重复的子字段构成,这就形成了典型的非结构化数据。在企业中非结构化数据主要有办公文档、披露的信息、Web发布的页面,以及工作中一些培训、宣传、监控用到的多媒体信息等。
如今,非结构化数据处理越来越普遍,而非结构化数据的处理也成为关系型数据库面临的一个很大挑战。一般而言,非结构化数据的组织主观性比较大,缺乏统一的规则,处理起来难度大,然而,非结构化数据越来越普遍,促使各关系型数据库厂商不得不对其产品进行拓展而使其具备管理非结构化数据的功能。
目前,主流的关系型数据库,包括Oracle、SQL Server、Sybase、DB2都或多或少对非结构化数据类型提供了支持,如SQL Server 2008中引入了文件流fileStream技术,支持非结构化文档的存储、查询和检索。Oracle数据库则采用大对象BLOB技术存储非结构化数据。面向对象的数据库中还有一个典型代表是Cache数据库,在非结构数据的支持上走得更远些。
云计算与分布式数据库
数据海量、类型复杂、响应速度要求高,这些都对现有数据库构成挑战。实际上,无论是内存数据库还是基于存储的数据库,当前的这些主流数据库都很难支持面向特大型非结构化数据的应用系统,而随着分布式计算、云计算技术的发展,数据库找到了一种应对办法,这就是数据库的分布式实现。
分布式数据库是从数据库与服务器组合关系来说的,它由若干个站集合而成,这些站又称为节点。分布式数据库系统通常使用较小的计算机系统,由多个计算机组成,每台计算机中都有数据的一份完整拷贝或一个分片,计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库。Oracle的并行数据库RAC就是一种分布式数据库,它的核心技术正是分布式计算。RAC共享了多种资源,采用统一的数据库命名空间和一套共享的存储。同样,GreenPlum也是一种分布式数据库,它实现了简单的共享,共享的内容是管理节点和数据库命名空间。
严格说来,分布式数据库并非因云计算环境而生,但却很适合云计算环境下的需求。这是因为云环境下要求数据库具备很强的横向扩充能力,这就要求节点之间尽量减少共享,而采用节点的分片技术来并行处理是解决办法之一。
云计算技术的一个重要内容是任务的分解和结果的汇总,然后通过后台的并行计算来完成大规模的处理。对于具体行业来说,云计算平台软件、虚拟化软件都不需要自己开发, 但面向特定行业的大规模数据处理应用软件没有通用的产品,需要针对特定的应用需求专门开发,其中会涉及诸如并行算法、索引查询优化技术研究以及系统的设计实现等。例如,提出云计算的Google公司为实现其搜索服务,专门设计了新文件系统(GFS)和存储库(Bigtable),采用调度器(Scheduler)的主从调度技术将存储信息和任务分片(Sharing),并采用映射归约(MapReduce)处理技术,从而实现了对网页的存储检索,最后将一个大型的数据库分成多片,调度器(Scheduler)负责任务分解,将结果分拆给节点。每个节点负责一个数据片,负责完成数据库的基本功能(插入、复制、查询),并把结果传给上层的调度器,从而使数据处理达到横向扩展(Scale Out)的能力。
在 RAC中,命名空间是一个逻辑概念,不会导致资源瓶颈。RAC数据库本身是一套基于磁盘的数据库,其服务器节点的磁盘操作、没在内存缓冲区的磁盘读写操作都需要共享的磁盘来完成,因而统一共享的存储是RAC的资源瓶颈之一,而RAC的性能瓶颈还会体现为后台磁盘的I/O瓶颈。Oracle推出的一体机Exadata,其中一个重要的特点是采用并行计算的存储服务器和闪存,以提高存储的I/O能力。在其满配的一体机中,数据库服务器有8台,存储服务器为14台,可见一体机设计中对存储I/O的偏重。
在GreenPlum体系中,在主机上规划查询项目,并将其分成若干部分在节点上并行执行,所有通信功能都在一个高宽带网络互连体系上实现。这种体系下每个节点都有一个通往本地磁盘的独立高速通道,因为没有共享存储,存储和节点都有很强的横向扩展性能力。
云环境下的数据库架构设计
基于云计算对灵活性和可扩展性方面的要求,云计算下的数据库可以使用多个分片数据库并行处理,来形成一个超级大数据库,这个数据库共享的组件尽量少,因而不太适合共享存储。而随着虚拟化技术的提高,特别是虚拟机的性能损耗符合一定要求时,分片数据库也可以架设在虚拟机上。借组云计算的资源调度技术,这样一个可伸缩的并行数据库可以在云计算环境中形成(参见附图)。
值得一提的是,云计算的发展使得数据库的扩展更为简单可行。其中,云管理平台负责资源的监控、自动调度,当查询类并行数据库的性能不足的时候,云管理平台可以自动为虚拟机(VM)增加资源,或通过增加新的虚拟机(VM) 来增加并行数据库的处理能力;而当系统面临的压力减少时可以通过减少分片处理数据库来减少资源需求,或通过减少所在虚拟机(VM)的资源。当然,这就要求查询类并行数据库的管理主机能感知资源和分片数据库的变化,而重新分配处理任务。
目前,云计算还处于发展过程之中,但一些云应用已经具备大规模处理能力,针对简单、同质、重复使用的应用(如一种数据处理、一个查询,邮件收发等标准化的功能),已经可以将大量的PC服务器组合,形成一个超级的计算资源来完成指定的任务,如在搜索、地震处理、气象分析、核爆模拟方面展现巨大的能力,通过相关软件可以将多服务器整合,形成超级处理资源,其应用软件设计并行处理能力可以将一个巨大但相似的计算任务分解到不同的处理节点,在管理节点的统一调度下,每个节点获得一部分数据,先独立处理,然后与管理节点协商,并与其他的节点相互通信,交换少量数据,最终将一个巨大的计算任务完成。
不过,总体上,数据库在可扩展性这一方面的能力还不是很强,目前,GreenPlum和VoltDB等分布式数据库正在朝这一方向努力,并且已经具备了一定的并行能力。相信只要有市场需求,分布式数据库一定会继续进步,不过,是否会出现一种真正的云数据库还值得观察。