当前位置:文档之家› Greenplum数据库设计开发规范

Greenplum数据库设计开发规范

目录第一章前言................................................................................................... 错误!未指定书签。

1.1文档目的................................................................................................ 错误!未指定书签。

1.2预期读者................................................................................................ 错误!未指定书签。

1.3参考资料................................................................................................ 错误!未指定书签。

第二章设计规范 ........................................................................................... 错误!未指定书签。

2.1数据库对象数量 .................................................................................... 错误!未指定书签。

2.2表创建规范............................................................................................ 错误!未指定书签。

2.3表结构设计............................................................................................ 错误!未指定书签。

2.3.1字段命名 ........................................................................................... 错误!未指定书签。

2.3.2数据类型 ........................................................................................... 错误!未指定书签。

2.3.3数据分布 ........................................................................................... 错误!未指定书签。

2.3.4分区 ................................................................................................... 错误!未指定书签。

2.3.5压缩存储 ........................................................................................... 错误!未指定书签。

2.3.6索引设计 ........................................................................................... 错误!未指定书签。

2.4其他数据库对象设计 ............................................................................ 错误!未指定书签。

2.4.1schema............................................................................................... 错误!未指定书签。

2.4.2视图 ................................................................................................... 错误!未指定书签。

2.4.3临时表和中间表 ............................................................................... 错误!未指定书签。

第三章SQL开发规范 .................................................................................... 错误!未指定书签。

3.1基本要求................................................................................................ 错误!未指定书签。

3.2WHERE条件................................................................................................ 错误!未指定书签。

3.3分区字段使用 ........................................................................................ 错误!未指定书签。

3.4表关联.................................................................................................... 错误!未指定书签。

3.5排序语句................................................................................................ 错误!未指定书签。

3.6嵌套子查询............................................................................................ 错误!未指定书签。

3.7UNION/UNION ALL..................................................................................... 错误!未指定书签。

3.8高效SQL写法的建议............................................................................ 错误!未指定书签。

第一章前言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数据仓库数据表的字段类型。

相关主题