
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据库架构开发在许多软件编程开发项目中都得到了广泛的应用,而本文我们就再来了解一下,分析型数据库应用分析。
MPP数据库一般会包含多个控制节点和多个计算节点,控制节点负责计算任务的编译、执行计划的生成和计算结果的聚合,而计算节点负责计算划分到具体数据库实例的计算任务。为了更好的可扩展性,MPP数据库一般采用Shared-nothing架构,每个数据库节点之间没有数据共享。MPP数据库一般可以通过增加数据库计算能力,此外因为多个实例,数据库总体的数据加载性能相比较单实例数据库也有很高的提升。
数据分片是能够实现并行化计算的核心,MPP数据库有多种数据分片方式,主要包括3大类:
Hash模式一般适用于事实表或大表,根据一条记录的某个字段或组合字段的hash值将数据分散到某个节点上,hash函数可以有多种方式。通过根据对给定字段的hash值来做数据分布,一个大表可以均匀的分散到MPP数据库的多个节点上,当对这个表查询时,MPP数据库编译器可以根据SQL中相应的检索字段将查询快速定位到某个或几个相关的数据库节点并将SQL下发,对应的数据库节点就可以快速响应查询结果。Hash模式在真实生产中使用的比较多,不过它也有几个较明显的问题:一是Hash取值一般是跟数据库节点数量密切相关,如果数据库添加或者减少节点后,那么已经存在的数据的Hash分布就不再正确,因此需要做数据库的数据重分布,带来较大的运维成本;二是在实际操作中需要根据业务特点来设计或选择Hash字段,否则容易出现性能热点等影响数据库整体性能的问题。
均匀分布模式一般适用于一些过程中的临时表,在对表的数据的持久化过程中按照均匀分布的方式在每个数据库节点上均匀写入数据。这个模式下数据库的IO吞吐可以得到大化利用,无论是读取还是写入,仅适合表只做一次读写的场景。
全复制模式一般适合记录数比较少的表,一般情况下在各个数据库节点都完整的存储一份数据。这类表一般情况下用于大量的分析类场景,事务类操作比较少,因此虽然存储上有明显的浪费,但是在分析性场景下不再需要将这个表在多个数据库节点上传输或复制,从而提升分析性能。
基于数据分片的方式实现了数据无共享架构,因此可以通过增加数据库实例的方式来提升数据库的性能,因此与早期的SMP共享架构数据库(代表OracleRAC)相比,MPP数据库的分析性能要远远超出。此外数据库的整体并发响应,以及数据库的读写吞吐量,MPP数据库都能够通过有效的业务优化达到一个很高的水平。
Greenplum集群中有三种角色组件,Master、Segment、Interconnect。数据的分片方式以及SQL计算的分解/聚合和通用的MPP数据库原理基本一致,在此不做赘述。
Master是Greenplum数据库系统的入口,接受客户端连接及提交的SQL语句,将工作负载分发给其它数据库实例(segment实例),由它们存储和处理数据。Master也负责持久化和查询系统级元数据,负责认证用户连接,接收来自客户端的SQL处理请求,终汇总Segments的结果并返回客户端。MasterServer本身采用主备方式来保证高可用。
Segment是独立的PostgreSQL数据库,负责数据存储和分析的具体执行,集群中的数据分布在各个Segment上,用户不直接与Segment通信,而是通过Master交互。每个Segment的数据冗余存放在另一个Segment上,数据实时同步,当PrimarySegment失效时,MirrorSegment将自动提供服务。
Interconnect负责不同PostgreSQL实例之间的通信,它默认使用UDP协议以提供更好的网络性能,并通过对数据包的检验来保证可靠性。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。