了解更多Greenplum技术干货,欢迎访问Greenplum中文社区网站
引言
4月17日,我们和阿里云合作,举行了《Greenplum内核揭秘》系列直播的第一场《架构解读》。在本次活动中,来自Greenplum全球总监杨瑜介绍了一些包括数据库、数据库管理系统、关系型数据库、关系模型等基本概念;详细解读了Greenplum的整体架构、存储管理、索引、查询执行、事务与日志等内容;
直播室里气氛热烈,大家都纷纷表示,此次活动演讲内容干货满满,收获多多。没有参加活动的小伙伴也不要气馁,这篇文章帮你牢固掌握本次直播的所有要点。读完别忘了前往askGP上测一测你的学习成果哦!
很高兴为大家直播《Greenplum内核揭秘》系列的第一场。本系列一共有十场直播,会对Greenplum的不同模块深入讲解。今天我将为大家详细解读Greenplum架构。在讲Greenplum的架构之前,我们先来看看数据库管理系统。
数据库管理系统
数据库管理系统的诞生是基于对数据有效管理和查询的需求。在没有数据库管理系统之前,采用的是基于文件的存储。 在以下的例子中,两张表分别代表了酒吧的信息和不同酒吧的销售信息,如果将这两类信息分别采用文件存储,为了统计每个店的啤酒销售额度,我们可以用两个for循环来完成。
这个操作虽然代码很短,但算法复杂性很高。除了算法的效率很低,用文件存储还有其他问题:
- 数据的一致性:例如销售记录中对应的酒吧在酒吧文件里并没有出现、导致无效数据存在;
- 对记录的修改:特别是字符串类型的变长属性的修改变得不容易维护;
- 查询的复杂、冗余和低效:每次查询都需要写遍历程序,遍历程序运行时间和空间负责度高;
- 对技术要求很高
- 除了上述提到的情况外,还有很多其它问题
于是数据库管理系统应运而生。很多人都会用数据库来简称数据库管理系统,事实上,数据库和数据库管理系统是两个概念。数据库指的是一堆有效组织的,相关联的,便于高效存储和查询的数据的集合。 而数据库管理系统是一种软件 ,用于管理数据库里的数据,除了能提供基本的增删改接口,还能提供高效的查询语言。针对数据的建模,会有不同的建模方法,包括基于Document,对象,KV等,而 基于关系模型作为底层数据模型的数据库管理系统就被称为关系型数据库管理系统,Greenplum也是一种关系型数据库管理系统, 简称关系型数据库。
关系型数据库有几个重要关注的技术点,例如数据是如何定义和存储的,如何保证数据的完整性,包括数据的一致性,事务和并发的控制等,如何支持用户易于使用的查询接口。
Greenplum整体架构
接下来我们看看Greenplum是如何解决上述问题的。 首先我们来看看Greenplum的整体架构。Greenplum是基于Postgres的开源分布式数据库,从拓扑结构上看,它是单机Postgres组成的数据库集群。但不限于此,Greenplum对外提供统一的数据库接口,让使用者感觉就在使用单机数据库一样,并且,Greenplum对集群处理做了大量优化。
从物理拓扑结构来说,Greenplum数据库是典型的Master-Segment结构,一个Greenplum集群通常是由一个Master节点、一个Standby节点和多个Segment节点组成,节点之间通过高速网络互连。Master是整个数据库的入口,终端用户连接Master执行查询,St