轻量化的企业级OLAP方案2(轻量化ar)
mhr18 2025-07-07 21:16 3 浏览 0 评论
上一篇文章讲了一个轻量化的企业级OLAP方案,这一篇文章继续介绍另外一个方案。
方案2:Greenplum
1 Greenplum介绍
1.1 Greenplum概念
Greenplum数据库是一种基于PostgreSQL开源技术的大规模并行处理(MPP)数据库服务器,其本质上是多个PostgreSQL面向磁盘的数据库实例一起工作形成的一个紧密结合的数据库管理系统
PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),相比MySQL,PostgreSQL在稳定性、存储引擎、支持的数据类型有更大的优势。
1.2 Greenplum组成
Greenplum由Master、Segment、Interconnect组成。
Master:Greenplum数据库的Master是整个Greenplum数据库系统的入口,它接受连接和SQL查询并且把工作分布到Segment实例上。
Segment:Greenplum数据库的Segment实例是独立的PostgreSQL数据库,每一个都存储了数据的一部分并且执行查询处理的主要部分。
Interconnect:Interconect是Greenplum数据库架构中的网络层,采用了一种标准的以太交换网络。出于性能原因,推荐使用万兆网或者更快的系统。
Greenplum架构示意图如下:
1.3 Greenplum的特性
- 支持PB级以上的海量存储和处理
- 支持业务数据实时BI分析
- 支持主流的sql语法
- 支持线性扩展
- 支持数据库内部压缩
1.4 Greenplum使用场景
Greenplum数据引擎是为新一代数据仓库和大规模分析处理而建立的软件解决方案,其最大的特点是不需要高端的硬件支持仍然可以支撑大规模的高性能数据仓库和商业智能查询。在数据仓库、商业智能、海量数据的处理上Greenplum表现出极其优异的性能。
2 Greenplum的部署
2.1 部署准备
- 操作系统:
- Red Hat Enterprise Linux 64-bit 7.x
- Red Hat Enterprise Linux 64-bit 6.x
- CentOS 64-bit 7.x
- CentOS 64-bit 6.x
- Ubuntu 18.04 LTS
Tips:Red Hat和CentOS的6.x版本需要升级内核版本到2.6.32-696;Red Hat和CentOS的7.x版本最好使用7.3
- Java:
- Open JDK 8或者11
- Oracle JDK 8或者11
- 存储:
- Greenplum仅支持XFS文件系统
- Greenplum数据库可以部署在虚拟化系统中,前提使用块设备存储,并且可以挂载为XFS文件系统
- 容量估算:
系统的总存储容量大于用户总数据的1.4倍
- 最小硬件要求:
- CPU:兼容x86_64
- 内存:16G
- 存储空间:每个用户150MB,每个segment元数据300MB
- 网络:IPv4、IPv6
2.2 部署步骤
具体可参考文档的第五节:
https://cn.greenplum.org/wp-content/uploads/2020/08/第一节课-腾讯云.pptx.pdf
3 Greenplum的使用
3.1 创建和管理表
使用CREATE TABLE命令创建一个表。当用户创建一个表时,需要定义:
- 该表的列以及它们的数据类型;
- 任何用于限制列或者表中能包含的数据的表或者列约束;
- 表的分布策略;
- 表存储在磁盘上的方式;
- 大型表的表分区策略
其中第一点和第二点与MySQL语法一样,第五点与Hive分区表语法一样,因此只对第三点和第四点做详细说明。
分布策略:
- DISTRIBUTED BY(哈希分布):默认的分布策略,对指定的列做Hash进行数据分布,做Hash的列的数据类型不能是几何类型和用户自定义类型
- DISTRIBUTED RANDOMLY(随机分布):当没有列能满足做Hash分布时采用随机分布,采用轮询分发数据
- DISTRIBUTED REPLICATED(复制分布):每个segment节点都存储数据。当业务场景有大表join小表时,可将小表做复制分布
表存储方式:
- 堆存储:默认存储模式,在OLTP类型负载下表现最好,这种环境中数据会在初始载入后被频繁地修改。堆表最适合于较小的表,例如维度表,它们在初始载入数据后会经常被更新
- 追加优化存储:追加优化表存储在数据仓库环境中的规范化事实表表现最好,追加优化表的存储模型是为批量数据装载优化的,因此不推荐单行的INSERT语句
- 面向行或者面向列存储:面向行:频繁的更新表中数据;频繁INSERT。面向列:必须是追加优化表,且有压缩数据的需求
- 使用压缩(只适用于追加优化表):可以采用面向整表级的压缩或者列级别的压缩方式
Greenplum创建数据库、查询数据等操作与MySQL基本一致,在这不进行赘述。
3.2 GreenPlum备份与恢复
Greenplum支持并行备份与非并行备份。
并行备份:每台Segment主机都同时把其数据写入到本地的磁盘存储上
非并行备份:数据通过网络从Segment发送到Master进行存储
相比于并行备份,非并行备份由于需要把数据发送给Master,因此会占用大量的IO,并且还占用了Master的存储空间。因此正常情况下使用并行备份即可,如果需要将数据迁移到其他数据库供应商的系统,推荐使用非并行备份。
3.3 GreenPlum数据同步
Greenplum的数据同步主要通过PXF提供的连接器访问存储在Greenplum数据库外部源中的数据。这些连接器将外部数据源映射到Greenplum数据库的外部表(external table)中。
PXF封装了读取和写入外部数据存储所需要的实现细节,目前提供创建与Hadoop (HDFS,Hive,Hbase),对象存储(Azure,Google Cloud Storage, Minio, S3)和sql数据库(包括MySQL, ORACLE, PostgreSQL, Apache Ignite)的连接器。
具体的实现方式可以根据业务需求参考:
http://47.92.231.67:8080/6-0/pxf/overview_pxf.html
4 项目开发
目前可以通过JDBC的方式连接Greenplum数据库,有两种JDBC连接包可以实现连接:一种是通过PostgreSQL的接口库连接,另一种就是官方partner提供的连接库(greenplum.jar)。
通过PostgreSQL的接口库连接的maven配置如下:
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
db.properties文件配置如下:
posgresql_driver=org.postgresql.Driver
posgresql_url=
jdbc:postgresql://192.168.xx.xx:5432/数据库名称(即schema)
posgresql_user=账号
posgresql_password=密码
由于maven中没有greenplum.jar,因此采用官方的方式连接Greenplum需要自己下载jar包(
https://gpdb.docs.pivotal.io/6-3/datadirect/datadirect_jdbc.html#topic_ylk_pbx_2bb),相应的db.properties如下:
greenplum_driver=com.pivotal.jdbc.GreenplumDriver
greenplum_url=jdbc:pivotal:
greenplum://192.168.xx.xx:5432;DatabaseName=数据库 名称(即 schema)
greenplum_user=账号
greenplum_password=密码
到此轻量级的企业级OLAP方案就介绍完毕了,以后会带来其他技术的分享以及一些常见的java或者大数据面试问题。
相关推荐
- jdk17安装和配置环境变量(jdk安装步骤环境变量配置)
-
简单介绍JDK17是Java的一个长期支持(LTS)版本,于2021年9月发布。作为LTS版本,它将获得Oracle的长期支持,这意味着会获得安全更新和错误修复,直到2...
- jdk8安装和配置环境变量(jdk8配置环境变量win10)
-
简单介绍JDK8是Java开发工具包的一个重大版本,于2014年3月发布。它引入了许多重要的新特性,极大地改进了Java编程的体验,并提高了代码的效率和可读性。总结JDK8是一...
- Java开发环境的准备流程!(java开发环境的准备流程有哪些)
-
准备开发环境工欲善其事,必先利其器。在学习本书的技术内容之前,应先将开发环境搭建好。本书所涉及的基础环境将在本章准备,包括JDK、IntelliJIDEA和Maven。如果读者对这些环境较为熟悉,可...
- skywalking-全链路跟踪(链路追踪sleuth)
-
一、概述1、skywalking简介SkyWalking是一款广受欢迎的国产APM(ApplicationPerformanceMonitoring,应用性能监控)产品,主要针对微服务、Clou...
- Oracle项目管理系统之成本状态跟踪
-
卷首语成本费用管理模块功能分为公司级、项目级两个层级,其中公司级功能包括概预算管理、概预算定额管理、预算模板管理,以及控制估算管理等功能。费用与成本成本费用管理主要是为了合理利用资金资源,控制企业的成...
- 从入门到精通,Java最全学习路线(java自学路线)
-
最近好多小伙伴询问,该如何学习java?那些视频适合零基础学习呢?大多数都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,在这给大家整理出一些学习路线。Java学习路线在这...
- SPARC M7最新技术 甲骨文首度在台发表
-
甲骨文首度在台发表SPARCM7最新技术,宣布推出全新SPARC系统產品系列,採用革命性的32内核、256执行绪SPARCM7微处理器。这套SPARC系统提供:先进的入侵防护和加密的Securit...
- 轻量化的企业级OLAP方案2(轻量化ar)
-
上一篇文章讲了一个轻量化的企业级OLAP方案,这一篇文章继续介绍另外一个方案。方案2:Greenplum1Greenplum介绍1.1Greenplum概念Greenplum数据库是一种基于Po...
- 时序数据库在水电站领域的应用(时序数据库优缺点)
-
大家好,上期经过了王宏志教授对数据库前沿领域的介绍,不知道小伙伴们是否对数据库领域有了更深的认识呢,本期让我们回归时序数据库,再来聊一聊时序数据库在水电站领域的应用。本文仅代表个人观点,如有偏颇之处,...
- 数据库SQL引擎比较(数据库引擎有哪些,有什么区别)
-
数据库SQL引擎的典型工作机制及详细分析如下,涵盖查询处理全流程中的核心机制与实际案例:一、SQL引擎核心处理流程1.解析与校验阶段词法/语法解析:SQL语句被拆解为Token序列,构建...
- Ubuntu系统密码(root密码)的修改方法
-
本文介绍在Linux系统的Ubuntu电脑中,修改账户用户密码(同时也修改了root用户密码)的方法。首先,如果此时处于登录页面(也就是意识到自己忘记密码的那个页面),就先点击右上角的关闭按钮...
- TablePlus:一个跨平台的数据库管理工具
-
TablePlus是一款现代化的跨平台(Window、Linux、macOS、iOS)数据库管理工具,提供直观的界面和强大的功能,可以帮助用户轻松管理和操作数据库。TablePlus免费版可以永久...
- 云满足用户对通过单一视图了解整体运营和数据的需求
-
ZD至顶网软件频道消息:云在简化IT和业务的同时也带来了新问题,这很有趣,不是吗?毫无疑问,云大幅降低了企业运行基础设施和应用的复杂性和成本;但您仍然面临一个老生常谈的问题——孤岛,只不过这次是在云...
- SQL_TOP(显示数据条数)(sqlserver显示查询的行数)
-
(8)SELECT(9)DISTINCT(11)<topNum><selectlist>(1)FROM[left_table](3)<join_type>...
- php搭建小型部门网站(php构建网站)
-
熟悉前端html,js,css,后端熟悉php,python,java只能称得上一般,还有很多坑待踩。鉴于所学很杂,决定利用对业务的熟悉来搞一个部门网站来简化大家的工作流程。初步设计方案后端用p...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle 空为0 (51)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)