目 录
第一章 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.1 2.4.2 2.4.3 第三章 3.1
前言 ................................................................................................... 错误!未指定书签。 文档目的 ................................................................................................ 错误!未指定书签。 预期读者 ................................................................................................ 错误!未指定书签。 参考资料 ................................................................................................ 错误!未指定书签。 设计规范 ........................................................................................... 错误!未指定书签。 数据库对象数量 .................................................................................... 错误!未指定书签。 表创建规范 ............................................................................................ 错误!未指定书签。 表结构设计 ............................................................................................ 错误!未指定书签。 字段命名 ........................................................................................... 错误!未指定书签。 数据类型 ........................................................................................... 错误!未指定书签。 数据分布 ........................................................................................... 错误!未指定书签。 分区 ................................................................................................... 错误!未指定书签。 压缩存储 ........................................................................................... 错误!未指定书签。 索引设计 ........................................................................................... 错误!未指定书签。 其他数据库对象设计 ............................................................................ 错误!未指定书签。 schema ............................................................................................... 错误!未指定书签。 视图 ................................................................................................... 错误!未指定书签。 临时表和中间表 ............................................................................... 错误!未指定书签。 SQL开发规范 .................................................................................... 错误!未指定书签。 基本要求 ................................................................................................ 错误!未指定书签。
3.2 WHERE条件 ................................................................................................ 错误!未指定书签。 3.3 3.4 3.5 3.6
分区字段使用 ........................................................................................ 错误!未指定书签。 表关联 .................................................................................................... 错误!未指定书签。 排序语句 ................................................................................................ 错误!未指定书签。 嵌套子查询 ............................................................................................ 错误!未指定书签。
3.7 UNION / 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、由于过多的数据文件会导致操作系统对文件的操作效率降低,直接影响到数据库的管理效率。如果数据文件数量过多,建议增加多个表空间,把数据表