数据库技术诞生至今,发展创新的脚步从未停歇,本文将带你全面了解数据库架构的演进路线和趋势。
引言
“数据库”一词问世于20世纪60年代,其发展经历了多个阶段。
起初,以Oracle、DB2、SQLServer为代表的关系型数据库占据大部分市场,纵横数据库江湖数年。
20世纪90年代,伴随着基于MPP架构的Netezza和Teradata数据库的产生,尤其是大数据技术的产生以及分布式处理Hadoop技术的出现,使得占主导地位的Oracle、DB2、SQLServer等传统产品在分析型场景上面临严峻的考验。
然而,Hadoop架构并无法完全解决企业的需求。随着云计算时代的到来,Hadoop架构在延迟、拓展性、小文件处理和读写灵活性等方面的局限日益凸显,促使行业拥抱云架构下的云原生数据库。
数据库架构发展主要阶段
基于SMP架构数据库
基于MPP架构数据库
基于Hadoop/HDFS架构数据库
基于云原生架构数据库
接下来,我们将对以上几种数据库架构的特点逐一进行解读。
基于SMP(对称多处理)架构数据库
自20世纪80年代初以来,数据库市场一直由Oracle、Microsoft和IBM主导,他们提供了满足当时用户的通用解决方案,其底层硬件和数据库系统架构是在20世纪70年代开发的,使用的是对称多处理(SymmetricalMulti-Processing,SMP)架构,核心原理是多处理器共享统一的内存和磁盘等,应用场景以单机为主。
上图展示了Windows任务管理器,它显示了8个处理器正在SMP架构数据库服务器上执行指令。基于SMP架构数据库具有以下特点:
优点
成本和性能:SMP架构是经过验证的成熟体系结构,产品部署成本相对较低,其性能和吞吐量有一定的保证。
部署方式:SMP架构数据库几乎可以在任何硬件上运行,包括大型服务器和中型商用硬件,还可以运行在云平台的虚拟服务器。SMP架构基于多核,支持物理核和虚拟核。
数据一致性:下图展示了SMP架构的数据库基本特性,即直接连接到本地或者网络磁盘的单台计算机。实际上,SMP架构数据存在一份副本,因此可以保证数据一致性,这与许多NoSQL解决方案相比较存在一定的优势。
缺点
可扩展性不足:SMP架构虽然可以通过增加服务器配置进行扩展,但是实际上可扩展性十分有限,单纯的增加服务器配置未必可以线性提高性能,同时也带来较高的人力物力成本。
资源浪费:由于SMP架构可扩展性不足,因此很多项目在最初规划时候,一步到位 化地部署资源,以此保证规划的资源足以满足一定期限内的需求,这种超前配置在项目前期造成了资源浪费。
工作负载管理:基于SMP架构的数据库,由于架构的特殊性,很难同时满足快速响应和高吞吐量的需求。下图说明了一种常见的方案,即面向客户的在线事务处理(OLTP)系统可以提供快速响应时间,同时该系统定期将数据同步到单独的联机分析处理(OLAP)数据仓库平台。
弹性和可用性:由于SMP架构使用的是单一的平台,因此为了提供弹性和可用性,需要部署一套单独的备用数据库,整体而言,代价较大。
基于MPP(大规模并行处理)架构数据库
年,基于MPP架构的TeraData交付了 个TB级生产数据库。两年后,福布斯杂志将TeraData授予“年度产品”称号。此后,MPP架构被Netezza,MicrosoftParallelDataWarehouse(PDW)和HPVertica等采用。
下图提供了MPP架构的图示,该架构的典型特点是单独的服务器接收用户的SQL语句,然后再被分配到多个独立运行的数据库服务器上。这些数据库服务器都是一 立的计算机,具有自己的CPU、内存和磁盘,这些服务器连接起来作为单个集群运行,服务器之间通过内部网络进行通信。
MPP架构为数据仓库和数据分析平台提供了出色的解决方案,查询可以分散到节点并行执行,可以显著地提高性能。但是,与SMP架构不同,MPP架构的数据分布方式至关重要,直接影响到数据库吞吐量和响应时间。下图展示了三种常用的MPP数据分布方式。
复制方式:通常用于较小的表,采用此方式分布数据,在每个节点上都重复着所有数据,存在一定的浪费。此方式在维度表时可以考虑,因为维度表通常需要与一个数据量大的事实表进行关联,这样就类似在集群的每个节点的本地磁盘进行关联计算,从而避免了跨节点的数据转移。
一致性Hash:通常适用于较大的事实表,主要是通过一定方式生成键值,将每一行记录分配到相应的服务器上,此方式可以保证数据均匀分配,但是如果键值生成方式不恰当,导致节点数据分布不均匀,会影响整体性能。
轮循方式:此方式主要是以循环方式依次对将数据依次写入节点中,这种方式适合临时层的表,这些表通常只被读写一次。它的优点是能保证数据均匀分布。使用此方式,需要将所有的表轮循分配到所有的节点,否则整体性能会比较差。
相比于SMP架构,基于MPP架构数据库具有以下优缺点:
优点
性能:由于数据分散在不同的节点上,节点是使用独立的资源,节点之间性能隔离,每个节点执行一部分计算任务,并行处理,可以提高整体执行性能。
可扩展性和并发性:MPP架构可以通过横向扩展服务器节点数,提升处理能力。基于MPP架构的计算能力,可以支持多用户同时访问数据库。
低成本的高可用:一些MPP架构的数据库在廉价的商用硬件上运行,数据通过副本提供冗余保护,自动故障探测和管理,自动同步元数据和业务数据,这样可以有效地利用资源,相比于SMP架构的冗余设备,成本有所降低。
读写吞吐量:由于读写操作可以在集群的不同计算节点上并行执行,因此可以实现高吞吐量。
缺点
成本高:MPP架构的复杂性较高,TeraData和Netezza为最早的MPP数据库产品,使用一体机架构,使得用户的成本居高不下。
数据分布方式至关重要:MPP架构,如果数据分布方式不恰当,会引起某些节点计算过载而部分节点闲置,这将直接影响数据库的吞吐量和查询响应时间。如果没有正确选择表关联字段作为数据分布字段,在执行关联时候,会导致节点之间过多的数据交换,也会引发性能问题。下图展示了数据在不同节点之间的交换。
扩缩容复杂:MPP架构的数据库、计算和存储是紧耦合的,如果需要扩缩容,需要对数据重新分布,这样会严重影响数据库的性能,甚至需要停机。
只支持横向扩展:MPP架构计算和存储是紧耦合的,所以只支持横向扩展,通过增加节点方式进行扩展。
资源浪费:由于计算和存储紧耦合,无法单独增加计算资源或者存储资源,在增加存储的同时,需要增加计算资源,势必造成资源的浪费。
基于Hadoop/HDFS架构数据库
上图展示了-年之间行业内对大数据技术的
转载请注明:http://www.0431gb208.com/sjszlfa/3723.html