Greenplum数据库设计开发规范
Greenplum构建实时数据仓库实践

读书笔记模板
01 思维导图
03 目录分析 05 读书笔记
目录
02 内容摘要 04 作者介绍 06 精彩摘录
思维导图
本书关键字分析思维导图
数据库
维度
技术
装载
实时
小结
模型
数据仓 库
数据
数据仓库
第章
监控
实时
数据
配置
数据仓库
系统
功能
安装
内容摘要
内容摘要
Greenplum分布式数据库具有可选存储模式、事务支持、并行查询与数据装载、容错与故障转移、数据库统 计、过程化语言扩展等方面的功能特性,因此Greenplum成为一款理想的分析型数据库产品。本书详解 Greenplum数据仓库构建与数据分析技术,配套示例源码。本书共分10章。内容包括数据仓库简介、数据仓库设 计基础、Greenplum与数据仓库、Greenplum安装部署、实时数据同步、实时数据装载、维度表技术、事实表技 术、Greenplum运维与监控、集成机器学习库MADlib。
2.6小结
3.1
1
Greenplum简
介
3.2
2
Greenplum系
统架构
3 3.3
Greenplum功 能特性
4
3.4为什么选 择Greenplum
5
3.5小结
1
4.1平台需求
2
4.2容量评估
3
4.3操作系统 配置
4 4.4安装
Greenplum软 件
5 4.5初始化
Greenplum数 据库系统
目录分析
本书内容 读者对象
源码下载 致谢
数据库建设规范

数据库建设规范数据库作为存储、管理和处理数据的重要工具,在现代信息化建设中起着至关重要的作用。
为了提高数据库的质量和效率,确保数据的安全性和准确性,需要制定一套数据库建设规范。
本文将从数据库设计、数据规范、性能优化和安全保障四个方面详细介绍数据库建设规范。
一、数据库设计在数据库建设的初期阶段,良好的数据库设计能够为后期的开发和维护工作奠定基础。
数据库设计应遵循以下几点规范:1. 数据库表命名规范表名应具有具体的描述性,能够准确表达其所存储的数据内容,并采用小写字母与下划线组合的方式命名,例如"order_info"。
2. 字段命名规范字段名应有明确的含义,避免使用缩写和数字等模糊的命名方式。
同时,字段名也应采用小写字母与下划线组合的方式命名,例如"create_time"。
3. 主键和外键规范每个表应有主键,并使用自增长或唯一性约束来保证主键的唯一性。
同时,在设计关联表时,外键应与关联的主键类型一致。
4. 索引规范为常用作查询条件的字段创建索引,以提高查询效率。
在创建索引时,需要根据实际情况进行选择,避免过多的索引对性能造成负面影响。
二、数据规范数据库中的数据质量对于后续的数据分析和决策产生重要影响。
为了保证数据的一致性和准确性,需要制定以下数据规范:1. 数据类型规范在对字段进行设计时,需要选择合适的数据类型,以节省存储空间,并确保数据的正确性。
例如,对于存储日期时间的字段,应选择合适的日期时间类型。
2. 数据录入规范为了避免数据录入错误,需要制定数据录入规范。
规定数据录入格式、校验规则和必填字段,同时提供数据录入的帮助文档和提示信息,以减少错误的发生。
3. 数据清洗规范对于已有的大规模数据,需要进行数据清洗,剔除重复、错误、缺失和异常数据,以保证数据库中的数据质量。
三、性能优化数据库的性能直接关系到系统的响应速度和用户体验。
为了提高数据库的性能,需要进行以下优化措施:1. 查询优化使用合适的查询方式、优化复杂查询语句、减少不必要的连接和子查询,以提高查询效率。
PostgreSQL数据库设计原则和最佳实践

PostgreSQL数据库设计原则和最佳实践数据库设计是构建一个高效、可扩展和易维护的系统的关键步骤。
PostgreSQL是一种强大的开源关系型数据库管理系统,具有广泛的功能和扩展性。
本文将介绍一些PostgreSQL数据库设计的原则和最佳实践,以帮助您更好地设计和优化数据库。
1. 使用正确的数据类型正确选择合适的数据类型是数据库设计中至关重要的一步。
不同的数据类型在存储和处理数据时有不同的性能和空间开销。
在PostgreSQL中,有许多数据类型可供选择,如整数、浮点数、文本、日期/时间等。
根据数据的特性和需求,选择最合适的数据类型,以减少存储空间的浪费和提高查询性能。
2. 设计合理的表结构在设计数据库表结构时,应遵循一些最佳实践。
首先,确定正确的主键。
主键应该是唯一且稳定的字段,它能够唯一标识一条记录。
其次,避免使用过多的冗余字段,以减少数据冗余和维护成本。
此外,合理设计表之间的关系,并使用外键来实现数据完整性和一致性。
3. 索引优化索引是提高查询性能的关键之一。
在PostgreSQL中,可以使用B-tree、哈希、GiST等索引类型。
在设计索引时,应根据查询的需求和频率进行优化。
不必为每个字段都创建索引,只需要为经常进行搜索和排序的字段创建索引,可以提高查询效率并减少索引的维护成本。
4. 视图和存储过程的使用视图和存储过程是将逻辑封装在数据库中的强大工具。
视图可以简化复杂的查询,并提供数据安全性。
存储过程可以将一系列的SQL语句封装成一个可重复使用的程序单元,提高数据库的性能和可维护性。
5. 使用事务管理事务管理是确保数据的一致性和完整性的关键机制。
在数据库设计中,应合理使用事务,以保证数据的正确性。
只有当一系列的操作都成功完成时,才将数据持久化到数据库中。
6. 避免过度规范化规范化是数据库设计中常用的一种技术,可以减少数据冗余和提高数据的一致性。
然而,过度规范化会导致查询性能下降,增加查询的复杂度。
数据库设计规范

数据库设计规范数据库设计规范是指在进行数据库设计时需要遵循的一系列规则和准则,以确保数据库的结构和功能能够满足用户需求,并且能够高效地进行数据管理和存储。
本文将介绍一些常见的数据库设计规范,包括命名规范、数据类型选择、索引设计、表关系设计等。
1. 命名规范在数据库设计中,良好的命名规范能够使数据库对象更易于理解和维护。
以下是一些建议:1.1 表名、列名和约束名应使用清晰明了的描述性词汇,避免使用含糊不清或缩写的名称。
1.2 使用统一的命名风格,如下划线命名法(例如:user_name)或者驼峰命名法(例如:userName)。
1.3 避免使用数据库关键字作为对象的名称,以免引起冲突。
2. 数据类型选择选择合适的数据类型对数据库的性能和空间利用是至关重要的。
以下是一些常见的数据类型选择规范:2.1 尽量使用较小的数据类型,以减少存储空间和提高查询性能。
2.2 对于整数类型,根据实际需求选择合适的精度(如TINYINT、SMALLINT、INT等)。
2.3 对于字符串类型,根据实际需求选择合适的长度(如VARCHAR、CHAR等)。
2.4 避免使用文本型字段存储大量的文本数据,可以考虑使用CLOB或BLOB类型。
3. 索引设计合理的索引设计可以加速查询操作,但是过多或不恰当的索引会增加维护成本和写操作的开销。
以下是一些常见的索引设计规范:3.1 为频繁使用作为查询条件的字段添加索引,以提高查询性能。
3.2 避免在较小的表或者稀疏的字段上创建索引,因为这可能导致索引失效并降低性能。
3.3 当需要根据多个字段进行查询时,考虑创建复合索引,以提高查询效率。
4. 表关系设计在数据库设计中,表与表之间的关系是非常重要的。
以下是一些常见的表关系设计规范:4.1 使用主键(Primary Key)和外键(Foreign Key)来建立表与表之间的关联,以确保数据的完整性和一致性。
4.2 避免使用过多的嵌套层次关系,以减少查询的复杂性。
高效使用Greenplum:入门、进阶与数据中台

8.1数据库管理 8.2可视化监控页面—GPCC 8.3管理好帮手—gp_toolkit 8.4 Greenplum备份和恢复 8.5在线扩容工具GPExpand 8.6锁机制
9.1系统级优化 9.2数据库级优化 9.3表级优化 9.4执行计划和查询优化
10.1 Kettle 10.2 DataX 10.3 HDFS、Hive和HBase 10.4 Spark 10.5 Kafka 10.6 Flink
读书笔记
介绍了greenplum数据库作为数仓选型的优点,以及数据中台的很多知识。
目录分析
第一部分大数据平台概述
1.1关系型数据库 1.2 Hadoop生态系统 1.3 NoSQL的瓶颈和SQL数据库的回归 1.4 MPP架构的兴起
第3章 Greenplum 的安装与部署
第2章 Greenplum 概述
4.1数据类型详解 4.2数据表的基本使用 4.3数据表的高级应用 4.4数据库函数 4.5数据库的其他对象
第5章
1
Greenplum查
询详解
2
第6章 ETL工 具箱
3 第7章
Greenplum高 级应用
4 第8章
Greenplum运 维管理和监控
5 第9章
Greenplum性 能优化
第10章 Greenplum与
开源组件
第11章 Greenplum与 BI应用
5.1 SQL语法 5.2 JOIN操作 5.3分析函数的妙用 5.4高级函数精选
6.1数据加载王者GPLoad 6.2自定义存储过程 6.3 PXF插件 6.4 DBLink 6.5拉链表
7.1开放的编程接口 7.2 MADlib机器学习库 7.3半结构化数据分析 7.4地理空间数据分析 7.5图计算应用
数据库设计指南

数据库设计指南1. 设计原则1.1. 关于范式如无性能上的必要原因,应该考虑遵循关系数据库理论,达到较高的范式匹配(3NF),避免数据冗余,明确数据间的关系。
如果对性能有较高要求,或者在特定场景达成业务目标的便利性收益高于数据管理影响,可以设计适当的突破范式要求。
1.2. 字符集和编码应当采用Unicode字符集和UTF8编码,此为PostgreSQL 数据库服务器默认设置,并且,如果在创建数据库(实例)时没有特别指定,也将是数据库(实例)的默认设置。
如果有强烈的中华多文字支持要求,如简体汉字、繁体汉字、少数民族文字、日文、韩文等,可以使用GB18030字符集和编码,不建议使用GB2312、GBK。
1.3. 数据库服务器和数据库一个操作系统中只部署 1 个数据库服务器软件。
一个数据库服务器中可以创建多个数据库。
1.4. 表空间对于PostgreSQL 来说,在同一个磁盘分区上建立多个表空间没有太多实际意义。
从合理利用磁盘性能和空间角度,可以分别建立不同的表空间,如:•在高IO 性能的磁盘分区上创建的表空间,可以用来存放经常访问的表和索引。
•在便宜和较低IO 性能的磁盘分区上创建的表空间,可以用来存放很少使用或性能要求不高的归档数据的表。
对于容器部署的数据库,容器内可以使用默认表空间pg_default(路径$PGDATA/base),并映射到容器外宿主机的特定路径下。
非容器部署的数据库,建议在指定的路径下创建表空间。
多个数据库可以共用同一个表空间。
注意: PostgreSQL 中的表空间与 Oracle 不一样,创建PostgreSQL 表空间只要指定名称与数据库文件的目录,而没有具体的大小。
PostgreSQL 表空间不适用“自动扩容”这个概念,存储不足时可以通过扩展表空间所在存储容量,或者在不同存储设备/分区中新建表空间并指定新表使用新表空间来达到扩容目的。
1.5. Schema建议为子系统、业务模块或用户分配对应的schema。
基于Greenplum的金融数据仓库模型设计与实现

B06. 票据业务 承兑业务 贴现业务
转贴现
再贴现
预算管控 零余额管理 投标保证金
聚合支付
B07. 资金业务 内部拆借 内部清算
信贷资产转让 财务顾问 委托理财
B08. 国际业务 外汇买卖业务 外汇资金管理业务
质押式回购 发行债券 票据回购 票据质押
资金划转
外币存款 外币贷款
债券现券 公募基金
票据池
第 21 期
综合金融服务系统 结算服务 票据服务 ……
客户服务能力层 聚合支付系统
快捷支付 商户管理 ……
员工工作台系统 代办管理 消息管理 ……
渠道整合平台
企业服务总线(ESB)
业务运营能力层
信贷管理系统
资金结算系统
票据系统
投资管理系统
外汇业务系统
贷前管理
一户通总户
票据承兑
同业存款
外汇买卖
合同管理
数据管控
元 数 据 管 理
智能搜索查询 业务应用
一户式分析
自定义查询 自定义分析
工作桌面 大屏展示
经营管理 数据化运营
数据应用服务平台
风险管理 精准画像
关系图谱 ……
调度平台
数
据
数
标
据
实
准
中
时
心
明细层 汇总层
数
校验层
据
质
量
实时抽取
数据缓冲处理
应用集市层
共性加工层
离 线
统 一
基础数据层
调
度
技术缓冲层
平
显得至关重要,数据仓库在面对海量的业务数据时,有着安全化、实时化、规范化、智能分析以及预测等诸多优势。而数据模型
数据库开发规范标准

数据库开发规范标准1. 概述本文档旨在制定数据库开发的规范标准,以确保数据库的一致性、可维护性和安全性。
准确遵循本文档中的规定可以提高开发效率并减少潜在问题。
2. 命名规范2.1 数据库对象命名规范- 表名应使用英文单词,采用下划线分隔,避免使用特殊字符和空格。
- 字段名应使用英文单词,采用下划线分隔,避免使用特殊字符和空格。
- 索引名应简明扼要地描述其作用和字段,避免使用含糊不清的命名。
2.2 命名约定- 主键字段应命名为`id`。
- 外键字段应命名为`关联表名_id`的形式,例如`user_id`。
- 创建时间字段应命名为`created_at`,更新时间字段应命名为`updated_at`。
- 布尔类型字段应使用形容词或动词开头,例如`is_deleted`。
3. 数据类型和长度3.1 数据类型选择根据不同的业务需求和数据特性选择合适的数据类型,包括整型、浮点型、字符型、日期时间型等。
3.2 字段长度根据数据内容和业务需求确定字段的长度,避免过长或过短的情况。
4. 约束和索引4.1 主键约束每个表应有一个主键,并设置为自增类型。
主键字段应该是唯一且非空的。
4.2 唯一约束针对需要保证唯一性的字段,添加唯一约束。
4.3 外键约束在关联表的字段上添加外键约束,确保数据的一致性和完整性。
4.4 索引根据查询需求和性能考虑,添加合适的索引。
索引应针对经常进行查询或连接操作的字段。
5. 数据库安全5.1 权限控制分配合适的权限给不同的用户和角色,限制其对数据库的操作。
5.2 定期备份定期备份数据库,以防意外数据丢失或损坏。
5.3 数据加密对需要保密的数据进行加密存储,确保敏感数据的安全性。
6. 数据库设计6.1 范式规范根据数据库设计原则,将数据表设计为满足第三范式的结构,避免数据冗余和不一致。
6.2 数据表关系合理设计数据表之间的关系,确保符合业务逻辑和查询需求。
7. SQL语句规范7.1 缩进和格式化对SQL语句进行适当的缩进和格式化,提高可读性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
G r e e n p l u m数据库设计开发规范集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-目录第一章前言1.1文档目的随着Greenplum数据库的正式上线使用。
为了保证Greenplum 数据仓库系统平台的平稳运行,保证系统的可靠性、稳定性、可维护性和高性能。
特制定本开发规范,以规范基于Greenplum数据库平台的相关应用开发,提高开发质量。
1.2预期读者Greenplum数据仓库平台应用的设计与开发人员;Greenplum 数据仓库平台的系统管理人员和数据库管理员;Greenplum 数据仓库平台的运行维护人员;1.3参考资料参考Greenplum4.3.x版本官方指引:《GPDB43AdminGuide.pdf》《GPDB43RefGuide.pdf》《GPDB43UtilityGuide.pdf》第二章设计规范2.1数据库对象数量数据库对象类型包括数据表、视图、函数、序列、索引等等,在Greenplum数据库中,系统元数据同时保存在Master 服务器和Segment 服务器上,过多的数据库对象会造成系统元数据的膨胀,而过多的系统元数据造成系统运行逐步变慢;同时,类似数据库的备份、恢复、扩容等较大型的操作都导致效率变慢。
因此,依据GreenplumDB产品的最佳时间,单个数据库的对象数量,应控制在10万以内。
GP数据库的对象包括:表、视图、索引、分区子表、外部表等。
如果数据表的数量太多,建议按应用域进行分库,尽量将单个数据库的表数量控制在10万以内,可以在一个集群中创建多个数据库。
【备注】:在Greenplum数据库中,一张分区表,在数据库中存储为一张父表、每张分区子表都是一张独立的库表;例如:一张按月进行分区的存储一年数据的表,如果含默认分区,共14张表。
2.2表创建规范为了避免数据库表数量太多,避免单个数据表的数据量过大,给系统的运行和使用带来困难,在Greenplum数据库中需遵循如下的表创建规范:1、GP系统表中保存的表名称都是以小写保存。
通常SQL语句中表名对大小写不敏感。
但不允许在建表语句中使用双引号(“”)包括表名,这样会影响系统表中存储的名称,使得表名存在大小写或特殊字符。
表命名也不允许出现中文字。
2、单个数据库的数据表数量建议不要超过10万张;3、禁止使用二级分区表,因为二级分区表会造成表对象数量的急剧膨胀;4、由于过多的数据文件会导致操作系统对文件的操作效率降低,直接影响到数据库的管理效率。
如果数据文件数量过多,建议增加多个表空间,把数据表均匀分布到不同的表空间。
每个表空间目录下的数据文件数量,应控制在80万以内。
文件数统计可以直接到某个Segment实例目录下指定的表空间目录下统计。
5、创建数据表(DDL)的时候(不含临时表和程序中使用的中间表),必须使用tablespace 子句指定用于存储的表空间,而不是把所有表都存储在默认表空间;例如:6、对于数据量超过1TB的大表,需从应用设计方面,考虑对大表进行优化,例如是否可划分为历史数据表和当前数据表,并分开存放;是否应采用压缩存储节省空间;是否合理分区;是否应定期清理数据等等。
2.3表结构设计2.3.1字段命名表字段的命名,与表名类似。
在GP系统表中保存的表名称都是以小写保存。
通常SQL语句中字段名称对大小写不敏感。
但不允许在建表语句中使用双引号(“”)包括字段名,这样会影响系统表中存储的名称,使得表名存在大小写或特殊字符。
字段命名也不允许出现中文字。
2.3.2数据类型数据类型的定义与相关数据的加载和使用紧密相关,数据类型的定义决定了数据所占用的空间大小,因此,必须慎重设计GP数据仓库数据表的字段类型。
数据仓库的数据来自于多个异构的业务应用系统,通常情况下,业务应用系统的字段类型选择较为随意,不同的业务系统数据类型定义存在多样化,彼此之间差异较大;因此,在数据仓库中,需在参考源系统字段类型定义的情况下,结合Greenplum 数据仓库平台的特点和要求,对字段数据类型进行设计。
Greenplum数据库的数据类型定义需遵循以下原则:1、在满足业务需求的条件下,尽可能选择空间占用最小的数据类型;以节省数据存储空间;2、在GP系统中,CHAR、VARCHAR和TEXT之间不存在性能差异,在其他的DB系统中,可能CHAR会表现出最好的性能,但在GPDB中是不存在这种性能优势的。
在多数情况下,应该选择使用VARCHAR而不是CHAR;3、定长字符串类型使用varchar,而不使用char.4、对于数值类型来说,应该尽量选择更小的数据类型来适应数据;比如,选择BIGINT类型来存储SMALLINT类型范围内的数值,会造成空间的大量浪费。
5、用来做Table Join的Column来说,应该考虑选择相同的数据类型。
如果做Join的Column具有相同的数据类型(比如主键PrimaryKey 与外键ForeignKey),其工作效率会更高。
6、一般情况下,应尽量使用上述规范数据类型,避免出现诸如:Address,INET,ARRAY等特殊类型字段。
2.3.3数据分布基于Greenplum 数据仓库平台的特点,每张数据表都必须指定分布键DK,Greenplum 数据库根据数据分布键(Distributed Key,简称DK,后同)值来决定记录存储在哪一个segment 上,DK不仅决定了数据在集群节点上的分布,还严重影响数据查询和处理操作的执行效率,需要非常慎重的选择数据表的分布键。
对于Greenplum 数据仓库平台,DK的选择需要遵循以下原则:1、数据均匀分布原则为了尽可能达到最好的性能,所有的Instance应该尽量储存等量的数据。
若数据的分布不平衡或倾斜,那些储存了较多数据的Instance在处理自己那部分数据时将需要耗费更多的工作量。
为了实现数据的平坦分布,可以考虑选择具有唯一性的DK,如主键。
2、本地操作原则在处理查询时,很多处理如关联、排序、聚合等若能够在Instance本地完成,其效率将远高于跨越系统级别(需在Instance之间交叉传输数据)的操作。
当不同的Table使用相同的DK时,在DK上的关联或者排序操作将会以最高效的方式把绝大部分工作在Instance本地完成。
3、均衡的查询负载原则在一个查询正被处理时,我们希望所有的Instance都能够处理等量的工作负载,从而尽可能达到最好的性能。
通过合理的DK设计,尽量使得查询处理的负载均匀分布在每个节点上,并且尽量保证where条件产生的结果集在各个节点上也是均匀的。
4、关联一致原则当表于表之间存在关联时,各表应选择相同字段作为DK,并且做关联查询时,使用DK作为连接字段,尽可能使连接包含全部DK字段;5、DK一致原则总分父子表的DK应保持一致;中间过程表、临时表的DK应尽可能保持和源表的DK一致;6、DK精简原则DK字段不宜过多,DK字段越少越好。
基于以上原则,Greenplum 数据仓库平台的数据表DK 设计规范如下:每个数据表必须通过Distribiuted子句显式指定分布键,不允许使用默认DK 的方式创建数据表;分布键字段原则上为1个,应尽量不要超过3个;分区的父子表的分布键应完全一致;中间过程表、临时表、派生表的DK应尽可能保持和源表一致;具有关联关系的数据表,应尽可能使用关联字段作为分布键;分布键字段不可执行Update操作;为了保证数据分布均匀,在没有合适字段作为分布键的情况下,应选择数据表的主键作为分布键;对于没有逻辑主键,又没有其他合适字段作为分布键的数据表,才建议设置其分布策略为Distributed Randomly,这只应该为最后的选择;随机分布的适合使用场景:查询时不需要和其它表关联、或只与小表关联的数据表,使用随机分布策略。
2.3.4分区表分区用以解决特别大的表的问题,分区表在执行给定的查询语句时,扫描相关的部分数据而不是全表的数据从而提高查询性能。
分区表对于数据库的管理也有帮助。
并不是任何数据表都适合做分区,应从如下几个方面判断是否应进行分区:1、表是否足够大只有非常大的事实表才适合做表分区。
若在一张表中有数亿条记录,从逻辑上把表分成较小的分区将可以改善性能。
而对于只有数万条或者更少记录的表,对分区预先进行的管理开销将远大于可以获得的性能改善。
2、对目前的性能不满意作为一种调优方案,应该在查询性能低于预期时再考虑表分区。
3、查询条件是否能匹配分区条件检查查询语句的WHERE条件是否与考虑分区的COLUMN一致。
例如,如果大部分的查询使用日期条件,那么按照月或者周的日期分区设计也许很有用,而如果查询条件更多的是使用地区条件,可以考虑使用地区将表做列表类型的分区。
4、按照某个规则数据是否可以被均匀的分拆应该选择尽量把数据均匀分拆的规则。
若每个分区储存的数据量相当,那么查询性能的改善将与分区的数量相关。
例如,把一张表分为10个分区,命中单个分区条件的查询扫表性能将比未分区的情况下高10倍。
如果以上几个方面的回答都是Yes,这样的表可以通过分区策略来提高查询性能。
如上面章节所述,在Greenplum 中,每个分区子表都对应一张独立的数据表,系统通过父子表之间的继承关系来维护分区定义信息。
如果过多的数据表进行了分区,会造成表对象数量过多,系统元数据急剧膨胀,给系统的运行和维护带来很大负担。
因此,还要综合考虑系统的表数据量情况,才可决定是否对数据表进行分区。
基于以上原则,Greenplum 数据库数据分区的使用规范如下:在性能可以满足的情况下,尽量不使用数据分区;因会造成表对象数量过多,增加执行计划生成的复杂性,禁止使用二级分区;数据量在亿级别以下,建议不要使用分区;表的数据在单个实例的数据量在100万级别以下,不需要分区;分区字段不可以UPDATE,需要用delete + insert或者truncate + insert替代实现。
2.3.5压缩存储Greenplum 数据表分两种类型:heap表和AO表(Append-optimized)。
在Greenplum 数据库中,需要对数据进行压缩,数据表则需要设置为AO表。
对数据表进行压缩,可以减少磁盘占用空间,同时也减少了对IO资源的开销(以CPU资源换IO资源)。
特别是在目前IO资源不足的硬件环境下,数据库设计应该尽可能多的使用AO表。
建议在选择压缩储存模式时,最好根据比较测试的结果来确定。
综合以上考虑,数据表压缩的设计规范如下:数据量在百万级以下的小表,不建议使用压缩存储;不要在压缩文件系统使用压缩存储;压缩表建议统一使用zlib压缩算法,压缩级别为 6(appendonly=true, compresstype=zlib, compresslevel=6);,此压缩设置满足大多数的使用场景。