*** Greenplum*** 是一款开源数据仓库。基于开源的PostgreSQL改造,主要用来处理大规模数据分析任务,相比Hadoop,Greenplum更适合做大数据的存储、计算和分析引擎
它本质上是多个PostgreSQL面向磁盘的数据库实例一起工作形成的一个紧密结合的数据库管理系统(DBMS)。 它基于PostgreSQL 9.4开发,其SQL支持、特性、配置选项和最终用户功能在大部分情况下和PostgreSQL非常相似。 与Greenplum数据库交互的数据库用户会感觉在使用一个常规的PostgreSQL DBMS。
针对性的对海量的结构化数据进行处理
专门针对大数据的一种数据库
https://docs-cn.greenplum.org/v6/admin_guide/dml.html
对海量数据进行结构化处理,同时具备分布式架构的特色
由mpp架构衍生
mysql等传统数据库不具备海量数据处理的能力
“关系型数据库” or “分布式数据库”
PostgreSQL:关系型数据库
1、什么是GreenPlum
GreenPlum数据存储:将数据存储到每一个节点上面
Mysql数据存储:数据存储在表中
关系型数据库和非关系型数据库的区别:
- 关系型数据库的数据表格之间都具有关联性,而分布式数据库不具有关联性,因而又叫非关系型数据库。
- 关系型数据库在读写方面使用率非常高,就导致它的读写并发性也非常的高。分布式型数据库虽然对于读写的并发性要求不高,但在大数据量以及联系处理方面的要求就比较高。
- 关系型数据库因对于读写的量大,对于数据的敏感性方面就没有那么强。而分布式数据库在数据敏感性与大数据储存方面要求就比较高了。
- 关系型数据库只是支持基础的储存形式类型,而分布式数据库支持的储存形式就非常的多,有文档形式,图片形式,游戏形式等等。
综上所述,分布式数据库和关系型数据库区别还是很大的,而且不同的需求使用的数据库也不一样。分布式数据库应用场景就比较广泛,有金融行业,电信行业,电商行业等。
2、MPP架构的由来
MPP(也被称为shared nothing架构)指有两个或者更多个处理器协同执行一个操作的系统,每一个处理器都有其自己的内存、操作系统和磁盘。 Greenplum使用这种高性能系统架构来分布数T字节数据仓库的负载并且能够使用系统的所有资源并行处理一个查询。
3、GreenPlum的组成:
GreenPlum数据库是Master Server、Segement Server和Interconnect由三部分组成的
PostgreSql:单点故障问题,当MPP中的Master出问题了(挂掉)之后,所有集群都会处于瘫痪状态
运行流程:
客户端发起请求(例如写入一个sql)—> Master(主节点)处理,当主节点Master损坏了之后,旁边的Standby就发挥作用,体现出高可用性,接管客户端发来的请求---->到Segenment中存入数据,接收来自Master的查询计划,将数据结果再返回给Master------>Master将分析结果进行汇总再返回给客户端
Intertconncet网络通信组件(重要),中间层,利用网络通信 将数据进行来回整合和发送
Master:
(1) 建立与客户端的会话连接和管理
(2) SQL的解析并形成分布式的执行计划
(3) 将生成好的执行计划分发到每个 Segment 上执行
(4) 收集 Segment 的执行结果
(5) Master 不存储业务数据,只存储数据字典
(6) Master 主机可以一主一备,分布在两台机器上
(7) 为了提高性能, Master 最好单独占用一台机器
Segment:
(1) 业务数据的存储和存取
(2) 执行 Master 分发的 SQL 语句
(3) 对于 Master 来讲,每个 Segment 都是对等的,负责对应数据的存储和计算
(4) 每一台机器上可以配置一到多个 Segment
(5) 由于每个 Segment 都是对等的,建议采用相同的机器配置
(6) Segment 分 primary 和 mirror 两种,一般交错的存放在子节点上。
优缺点:
优点:
缺点:
但是,有个坏消息是 GreenPlum突然闭源了,网络上已经很难找到免费的资源包
PostgreSQL数据库
下载:
https://www.postgresql.org/download/linux/redhat/
PostgreSQL相对于MySQL的优势
- 在SQL的标准实现上要比MySQL完善,而且功能实现比较严谨。
- 对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强。
- PG主表采用堆表存放,MySQL采用索引组织表,能够支持比MySQL更大的数据量。
- PG的主备复制属于物理复制,相对于MySQL基于binlog的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。
- PostgreSQL支持JSON和其他NoSQL功能,如本机XML支持和使用HSTORE的键值对。它还支持索引JSON数据以加快访问速度,特别是10版本JSONB更是强大。
- PostgreSQL完全免费,而且是BSD协议,如果你把PostgreSQL改一改,然后再拿去卖钱,也没有人管你,这一点很重要,这表明了PostgreSQL数据库不会被其它公司控制。相反,MySQL现在主要是被Oracle公司控制。
MySQL相对于PG的优势 - innodb的基于回滚段实现的MVCC机制,相对PG新老数据一起存放的基于XID的MVCC机制,是占优的。新老数据一起存放,需要定时触 发VACUUM,会带来多余的IO和数据库对象加锁开销,引起数据库整体的并发能力下降。而且VACUUM清理不及时,还可能会引发数据膨胀。
- MySQL采用索引组织表,这种存储方式非常适合基于主键匹配的查询、删改操作,但是对表结构设计存在约束。
- MySQL的优化器较简单,系统表、运算符、数据类型的实现都很精简,非常适合简单的查询操作。
- MySQL相对于PG在国内的流行度更高,PG在国内显得就有些落寞了。
- MySQL的存储引擎插件化机制,使得它的应用场景更加广泛,比如除了innodb适合事务处理场景外,myisam适合静态数据的查询场景。
总结
从应用场景来说,PG更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),但不仅仅限制于此,PostgreSQL的json,jsonb,hstore等数据格式,特别适用于一些大数据格式的分析;而MySQL更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景(比如google、facebook、alibaba),当然现在MySQL的在innodb引擎的大力发展,功能表现良好
PG的社区
纯社区
他们为什么要贡献核心代码?
最终用户
- 希望社区长久,期望可以享受免费的、可持续发展的、开源的、不被任何商业公司、不被任何国家控制的企业级数据库。去O,去DB2 ,去Sybase;
- 不靠数据库赚钱;
- PG用到的人越多,越多人背书,使用越靠谱(事实也是如此);
- 抛砖引玉,企业投入2个研发持续贡献(一年可能一两百万),实际上整个PG社区有数千人在贡献,对最终用户来说,简直赚到了。使用商业数据库,除了LICENSE等成本,依旧需要投管理、研发、外包资源,一年数千万甚至上亿,公司越大,越有动力去贡献社区。从趋势来看,给PG贡献代码的大客户只会越来越多;
同为开源软件,PostgreSQL源码使用自由友好、商业应用不受任何公司实体所控制,而MySQL则在一定程度上有所限制。
PostgreSQL社区
http://www.postgres.cn/index.php/v2/home
阿里云的是需要购买的
华为云的可以试用一个月
一些资源链接:
csdn:PostgreSQL 教程:从入门到精通
https://blog.csdn.net/aaa134529/article/details/139107899
PostgreSQL 16.2 文档
https://postgresql.ac.cn/docs/current/index.html
图灵学院的PostgreSQL课程语雀连接
https://www.yuque.com/docs/share/0526da15-a8df-4d03-986c-01e68bdffde7?#
里面也有一些其他的课程内容:JavaWeb SpringMVC Gradle 等