在开始了解GreenPlum之前,应该对这种产品的诞生有基本的了解,搭建一个基本的知识框架。对以下历史有基本了解之后应对下文术语进行基本阅读。
阅读目标: 阅读完成后需要对相关术语以及greenplum有基础理解。
文案基本互联网相关blog进行整体汇总,原文全部在参考链接中。
Greenplum 数据库是一个大规模并行处理 (MPP) SQL 数据库(与硬件无关),它基于 PostgreSQL 构建并构建。它可以扩展到数 PB 级的数据工作负载,而不会出现任何问题,并且它允许访问功能强大的服务器集群,这些服务器将在单个 SQL 界面中协同工作。
它的架构专门设计用于管理大规模数据仓库和商业智能工作负载,这个功能丰富的数据库可对可扩展到 PB 级的数据进行强大而快速的分析。
处理大量复杂数据或大数据时,您的主机可能会开始被它必须处理的所有数据压垮,以产生您的分析结果。Greenplum使用MPP架构,如下文数据中MMP,你可能是一个图书馆管理员,并且有很多助手。助手管理很多组员。或者可以称为你是领导节点,助手是计算节点。你在Greenplum中称为“master”,告诉所有其他节点,在Greenplum中称为段(计算节点),该怎么做,并合并它们的响应以创建最终答案。(当查询进入主节点时,它会被解析、计划并调度到所有段以执行查询计划并返回请求的数据或将查询结果插入数据库表。结构化查询语言,版本SQL:2003,用于向系统呈现查询。事务语义符合称为 ACID 的约束。)
MPP 数据库通过添加更多计算资源(节点)进行水平扩展,而不必担心升级到越来越昂贵的单个服务器(垂直扩展)。
基于PostgreSQL架构,Greenplum基本上在一个Greenplum集群中一次利用多个PostgreSQL数据库实例。PostgreSQL用户可以快速熟悉这种数据库类型,因为Greenplum中的许多特性,配置和功能都是相同的,并且包括旨在优化PostgreSQL如何为商业智能(BI)任务和工作负载工作的功能。
Greenplum还引入了许多PostgreSQL中不可用的功能,例如并行数据加载,资源管理,存储增强和高级查询优化,与PostgreSQL类似,Greenplum利用一个主服务器或主机,它是数据库的入口点,接受连接和SQL查询。但是,PostgreSQL利用备用节点在地理上分布其部署,Greenplum使用存储和处理数据的分段主机。Greenplum段是独立的,每个段存储一部分数据,处理大部分查询处理。您可以利用少至两段主机,并扩展到无限容量。如果启用了镜像,则必须以至少 2 的增量增加分段主机。
Greenplum 有一个独特设计的数据管道,可以有效地将数据从磁盘流式传输到 CPU,而无需依赖适合 RAM 内存的数据。这为Greenplum部署提供了巨大的性能提升,而不是需要足够内存来存储其数据的内存系统,或者基于RDBMS的非RDBMS系统,这些系统是内存中处理引擎,为每个并发查询分配RAM。
Greenplum的高性能消除了大多数RDBMS扩展到PB级数据的挑战,因为它们能够线性扩展以有效地处理数据。
Greenplum 具有基于成本的查询优化器,适用于大规模大数据工作负载。利用我们上面介绍的性能,Greenplum 将交互式和批处理模式分析扩展到 PB 级,而不会降低查询性能。
这允许Greenplum在其不同段之间分配负载,并并行使用系统的所有资源来处理查询。
随着Greenplum 6中OLTP(在线事务处理)工作负载的改进,单个查询性能比Greenplum 5提高了3.5c以上。通过此更新,Greenplum消除了许多锁竞争,因此主CPU使用率可以超过90%,从而通过提高主节点的硬件性能来提高查询性能。
开源
Greenplum数据库是一个基于PostgreSQL开源核心的开源数据仓库项目,允许用户利用PostgreSQL背后数十年的专家开发,以及Greenplum针对大数据应用的针对性定制。
Greenplum可以在任何Linux服务器上运行,无论是托管在云中还是本地,并且可以在任何环境中运行
多态数据存储
Greenplum的多态数据存储允许您控制表和分区存储的配置,并可以随时自由执行和压缩其中的文件。
这将允许您根据访问特定数据的方式设计表,进而具有面向行或列的存储层次结构。
在Greenplum中创建表时,可以通过选择面向列或面向行的数据来控制方向。面向列通常更适合完整扫描,而面向行的则更适合小型扫描或查找。
主要用例
Greenplum提供了大规模并行处理数据库和高级数据分析的强大组合,使其能够为数据科学家和架构师创建一个框架,以根据人工智能和机器学习收集的数据做出业务决策。
Greenplum提供的高级分析正在许多垂直领域使用,包括金融,制造,汽车,政府,能源,教育,零售等,以解决各种各样的问题。Pivotal强调的一些Greenplum数据库分析功能包括分析多种数据类型,利用现有的SQL知识以及通过使用MPP架构在更短的时间内训练更多模型的能力。
此外,Greenplum还提供数据库内分析,允许您直接在数据库中运行分析,而不是在外部分析引擎中导出和运行数据。
作为为企业工作负载量身定制的数据库,它提供了探索大型数据集所需的功能,以及通过跨可用分段主机并行分析而实现的高性能。
还可以通过Greenplum利用各种功耗分析工具,包括MADlib,R统计语言,SAS和预测建模标记语言(PMML)。
Greenplum是一个优秀的机器学习数据库 - 研究通过经验自动改进的计算机算法。Apache MADlib是一个开源的,基于SQL的机器学习库,在Greenplum和PostgreSQL上运行数据库。这种组合可帮助您提高 Greenplum 机器学习部署的并行性、可扩展性和预测准确性。 MADlib 还提供用于机器学习的数据转换和特征工程功能,包括描述性和推理性统计、透视、会话化和编码分类变量。
例如,一家政府欺诈收入保留公司正在利用Greenplum机器学习功能以及GemFire执行大规模欺诈检测,以防止身份盗用,每年检测和保留50亿美元,每天处理800万起案件。
人工智能(AI)虽然类似于机器学习,但是指机器可以智能执行任务的更广泛概念。Greenplum 是希望通过智能机器模仿人类能力的应用程序的绝佳数据库选择。
凭借Greenplum高速摄取大量数据的能力,它使该数据库成为需要基于无限数量的独特场景进行智能交互的智能应用程序的强大工具。
该技术是由一家总部位于加利福尼亚州圣马特奥的同名公司于2005年左右创建的。Greenplum 于 2010 年 7 月被 EMC 公司收购。
从2012年开始,其数据库管理系统软件被称为通过Pivotal Software销售的Pivotal Greenplum数据库。Pivotal开源了核心引擎,并由Greenplum数据库开源社区和Pivotal继续开发。
从 2020 年开始,Pivotal 被 VMware 收购,VMware 继续赞助 Greenplum 数据库开源社区,并以 VMware Tanzu Greenplum 品牌将该技术商业化。
技术
Pivotal的Greenplum数据库产品使用大规模并行处理(MPP)技术。每个计算机群集由一个主节点、备用主节点和分段节点组成。所有数据都驻留在分段节点上,目录信息存储在主节点中。段节点运行一个或多个段,这些段是修改后的 PostgreSQL 数据库实例,并分配有内容标识符。
对于每个表,数据根据用户在数据定义语言中指定的分布列键在段节点之间划分。对于每个段内容标识符,都有一个不在同一物理主机上运行的主段和镜像段。
争对手包括主要供应商提供的其他MPP数据库管理系统,如Teradata,Amazon Redshift,Microsoft Azure,Alibaba AnalyticDB以及过去的IBM Netezza。其他竞争来自其他较小的竞争对手,面向列的数据库,如HP Vertica,Exasol和非MPP架构的数据仓库供应商,如Oracle Exadata,IBM Db2和SAP HANA。
MMP
Massively Parallel Processing (or MPP for short) 大规模并行处理(简称MPP)
虽然存储和计算能力在过去几十年中取得了长足的进步,但不幸的现实是,它们没有跟上现代数据存储和分析的需求。
MPP数据库通过将所需的处理能力分配给几个不同的节点来最有效地分析大型数据集,从而解决了这个问题。
水平缩放,而不是垂直缩放
例子:
让我们假设你是一名研究人员,你毕生的梦想是计算国会图书馆的总字数。在华盛顿特区亲自注册后你被授予访问权限,你从书架上拿起你看到的第一本书,然后开始计数。
在此示例中,您表示一台服务器正在浏览数据(国会图书馆)并处理查询(单词总和),并且很容易看出这个问题:根据维基百科,国会图书馆包含超过 1.67 亿个独特的项目。
以正常的阅读速度,你需要数万年才能读完每一篇课文。认识到这一点,您尝试提高阅读速度(垂直缩放)。您投资速读课程,并购买了一些昂贵的工具来帮助您更快地打开书籍和翻页。这使您可以在一分钟内将能够数出的单词数增加一倍,但即使以这种增加的速度,很明显,您要到数千年后才能完成任务。
如果您没有投资提高处理能力,而是向国会图书馆雇用的 3,000 人寻求帮助,该怎么办?虽然你只能更快地计算单词,但你通过吸引更多人来水平扩展的能力几乎是无限的。
图书馆馆长认为这个项目将很好地利用纳税人的钱,并将每个员工都奉献给这项任务,并让您负责每个人。想一想这种情况:什么最有意义?您将如何组织每个人以确保快速、高效和准确地获得结果?
最简单的方法可能是为每个人分配一个看起来大致相等的图书馆部分来处理,比如…每个人都有一个架子。它不会完全相等,但它会足够接近。
当每个人都在阅读他们指定的书架上的文本并计算单词时,你作为领导者正在组织一切:你确保每个人都分配了一个架子,他们根据需要获得零食、水和洗手间休息时间,当几个人打电话请病假时,你找一些临时工来填补。
当员工数完书架上的所有单词后,他们会在便利贴上写下数字,然后走到你的办公桌前递给你。然后,您将便笺上的数字添加到总字数中。
当每个人都完成他们的货架时,你就有了最终的计数!
这是大规模并行处理的实际应用,只是使用人类而不是计算机。将简单但较大的任务拆分为多个存储桶并同时处理这些存储桶将比一个人单独工作快得多,无论这个人有多熟练。
简而言之,MPP 数据库是一种数据库或数据仓库,其中数据和处理能力在几个不同的节点(服务器)之间分配,具有一个领导节点和一个或多个计算节点。在MPP中,领导者(你)将被称为领导者节点 - 你告诉所有其他人该做什么并对最终计数进行排序。图书馆员工,你的助手,将被称为计算节点 - 他们处理所有数据,运行查询并计算单词。MPP 数据库可以通过添加更多计算资源(节点)进行水平扩展,而不必担心升级到越来越昂贵的单个服务器(垂直扩展)。 向群集添加更多节点允许数据和处理分布在更多计算机上,这意味着查询将更快地完成。
替代方案:
大规模并行处理并不是促进处理大量数据的唯一技术。Hadoop Hive和Redshift。总而言之,与Hadoop不同,MPP数据库使用“无共享”架构。数据集不会重叠,所有通信都通过网络进行。
每个节点或服务器都包含它负责的数据(书架)和分析这些数据的计算能力(图书馆员)。这使得 MPP 数据库更易于部署和维护。云MPP数据库,如亚马逊的Redshift数据库,也具有成本效益,并支持基于SQL的商业智能工具,如Looker和Tableau。
MPP数据库结构化数据和MPP数据库的常见问题不支持非结构化数据,甚至结构化数据,例如来自MySQL或PostgreSQL数据库的数据,都需要一些处理以确保它符合MPP结构。
这是因为 MPP 数据库通常是列式的,这使得分析查询的处理速度更快。
列式数据库
传统数据库按每行存储数据。每条记录的字段按顺序存储。
此二维表将存储在面向行的数据库中,如下所示:
1,Benny Smith,23 Workhaven Lane,52683,14033335568,Lethbridge,Canada,43;2,Keith Page,1411 Lillydale Drive,18529,16172235589,Woodridge,Australia,26;3,John Doe,1936 Paper Blvd.,92512,14082384788,Santa Clara,USA,33;
记录的字段是逐个存储的,然后存储下一条记录的字段,然后是下一条记录的字段,依此类推
优点
- 仅涉及面向行的数据库列的查询
- 针对大量数据的聚合查询
- 按列压缩
缺点
- 增量数据加载
- 联机事务处理 (OLTP) 使用情况
- 仅针对几行的查询
参考
- Columnar Storage
- Wikipedia: Column-Oriented DBMS
维基百科:面向列的DBMS- Scalability of Amazon Redshift Data Loading and Query Speed
Amazon Redshift 数据加载和查询速度的可扩展性
ACID
在数据库和数据存储系统的上下文中,事务是被视为单个工作单元的任何操作,它要么完全完成,要么根本不完成,并使存储系统处于一致状态。交易的典型例子是当您从银行账户中提取资金时会发生什么。
钱要么离开了你的银行账户,要么没有——不可能有中间状态。
A.C.I.D. 属性:原子性Atomicity、一致性Consistency、隔离性Isolation和持久性Durability
ACID 是一个首字母缩略词,指的是定义事务的 4 个关键属性的集合:原子性、一致性、隔离性和持久性。如果数据库操作具有这些 ACID 属性,则可以将其称为 ACID 事务,应用这些操作的数据存储系统称为事务系统。ACID 事务保证表的每次读取、写入或修改都具有以下属性:
- 原子性 - 事务中的每个语句(读取、写入、更新或删除数据)都被视为单个单元。要么执行整个语句,要么不执行任何语句。此属性可防止在流数据源在中途发生故障时发生数据丢失和损坏。
- 一致性 - 确保事务仅以预定义的、可预测的方式对表进行更改。事务一致性可确保数据中的损坏或错误不会对表的完整性造成意外后果。
- 隔离 - 当多个用户同时从同一个表中读取和写入时,隔离其事务可确保并发事务不会相互干扰或影响。每个请求都可以像一个接一个地发生一样发生,即使它们实际上是同时发生的。
- 持久性 - 确保成功执行的事务对数据所做的更改将被保存,即使在系统故障的情况下也是如此。
ACID 事务可确保尽可能高的数据可靠性和完整性。它们确保您的数据永远不会因为仅部分完成的操作而陷入不一致状态。例如,如果没有 ACID 事务,如果您正在将一些数据写入数据库表,但意外断电,则可能只保存了部分数据,而其中一些数据则不会保存。您的数据库处于不一致状态,从中恢复起来非常困难且耗时。
参考
databricks-acid-transactions
RDBMS
关系数据库管理系统
RDBMS是用于维护关系数据库的程序。
RDBMS是所有现代数据库系统的基础,如MySQL,Microsoft SQL Server,Oracle和Microsoft Access。
RDBMS 使用 SQL 查询来访问数据库中的数据。
w3schools-RDBMS
维基百科
greenplum官方网站
integrate-greenplum
dzone-greenplum