检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
使用前必读 文档面向的读者对象 数据库开发指南重点面向数据库的设计者、应用程序开发人员或DBA,提供设计、构建、查询和维护数据仓库所需的信息。 作为数据库管理员和应用程序开发人员,至少需要了解以下知识: 操作系统知识。这是一切的基础。 SQL语法。这是操作数据库的必备能力。
例如业务设计、代码开发、作业性能调优和业务迁移等。
语句输出列表中的子查询,在下面例子中,括号内部分即为一个标量子查询语句: 1 SELECT id, (SELECT COUNT(*) FROM films f WHERE f.did = s.id) FROM staffs_p1 s; 标量子查询往往会导致查询性能急剧劣化,在应用开发过程中
SCHEMA对象设计规范 建议2.7 不在其他USER的私有SCHEMA下创建对象 私有SCHEMA是指创建USER时自带的同名SCHEMA,该SCHEMA为该USER私有。 违反规则的影响: 在其他用户私有SCHEMA下创建对象,对象权限不受创建者控制,OWNER也非创建者。 方案建议
VIEW对象设计规范 建议2.16 视图的嵌套需避免超过三层 违反规范的影响: 视图嵌套过深导致执行计划不稳定、耗时不稳定。 视图依赖的对象重建风险高,锁冲突发生概率增大。 方案建议: 创建视图直接基于物理表查询,不建议嵌套视图。 父主题: GaussDB(DWS)对象设计规范
语句输出列表中的子查询,在下面例子中,括号内部分即为一个标量子查询语句: 1 SELECT id, (SELECT COUNT(*) FROM films f WHERE f.did = s.id) FROM staffs_p1 s; 标量子查询时常会导致查询性能急剧劣化,在应用开发过程中
SCHEMA对象设计规范 建议2.7 不在其他USER的私有SCHEMA下创建对象 私有SCHEMA是指创建USER时自带的同名SCHEMA,该SCHEMA为该USER私有。 违反规则的影响: 在其他用户私有SCHEMA下创建对象,对象权限不受创建者控制,OWNER也非创建者。 方案建议
TABLESPACE对象设计规范 规则2.8 禁止自定义TABLESPACE表空间 违反规则的影响: 分布式场景建表使用自定义表空间,导致表数据无法按照各DN分布式存储,出现存储倾斜。 方案建议: 创建表对象使用内置默认表空间。 父主题: GaussDB(DWS)对象设计规范
VIEW对象设计规范 建议2.16 视图的嵌套需避免超过三层 违反规范的影响: 视图嵌套过深导致执行计划不稳定、耗时不稳定。 视图依赖的对象重建风险高,锁冲突发生概率增大。 方案建议: 创建视图直接基于物理表查询,不建议嵌套视图。 父主题: GaussDB(DWS)对象设计规范
、应用程序开发人员或DBA,提供设计、构建、查询和维护数据仓库所需的信息。
GaussDB(DWS) PL/pgSQL使用规则 总体开发原则 应完全按照设计文档进行开发。 程序模块应做到高内聚低耦合。 应有正确、全面的故障对策。 程序编写应做到结构合理,条理清晰。 程序名称命名应按照统一的命名规则进行命名。
增量开发的业务系统或进行业务迁移的系统,建议遵守历史的命名风格。 数据库对象名称由字母、数字和下划线组成,并且不能由数字开头。建议使用多个单词组成,以下划线分割。 数据库对象名称最好能够望文知意,尽量避免使用自定义缩写(可以使用通用的术语缩写进行命名)。
例如,查找包含单词“content”的文章: 1 SELECT * FROM articles WHERE content_vector @@ to_tsquery('english', 'content'); 父主题: 数据开发
GaussDB(DWS)表设计规则 GaussDB(DWS)是分布式架构。数据分布在各个DN上。总体上讲,良好的表设计需要遵循以下原则: 【关注】将表数据均匀分布在各个DN上。数据均匀分布,可以防止数据在部分DN上集中分布,从而导致因存储倾斜造成集群有效容量下降。通过选择合适的分布列
CopyManager 【建议】在不使用ETL工具、数据入库实时性要求又比较高的情况下,建议在开发应用程序时,使用GaussDB(DWS)JDBC驱动的CopyManager接口进行微批量导入。 CopyManager的使用方法请参见CopyManager。
DATABASE对象设计规范 规则2.1 避免直接使用内置的DATABASE(如postgres、gaussdb等) 违反规则的影响: 内置的数据库编码、兼容模式不符合业务要求时,需要重新迁移数据。 所有业务均使用内置数据库,影响变更耗时。 方案建议: 根据实际业务需要,合理创建专用
GaussDB(DWS)数据库对象设计规则 GaussDB(DWS) Database和Schema设计规则 GaussDB(DWS)表设计规则 GaussDB(DWS)字段设计规则 GaussDB(DWS)约束设计规则 GaussDB(DWS)视图和关联表设计规则 父主题: GaussDB
GaussDB(DWS)字段设计规则 选择数据类型 在字段设计时,基于查询效率的考虑,一般遵循以下原则: 【建议】尽量使用高效数据类型。 选择数值类型时,在满足业务精度的情况下,选择数据类型的优先级从高到低依次为整数、浮点数、NUMERIC。 【建议】当多个表存在逻辑关系时,表示同一含义的字段应该使用相同的数据类型
TABLE对象设计规范(重点) 规则2.9 创建表时必须选择正确的分布方式和分布列 违反规范的影响: 分布式和分布列选择错误,导致表数据存储倾斜,访问性能下降,严重情况会触发存储和计算资源过载。 方案建议: 创建表时通过DISTRIBUTE BY显式指定分布方式和分布列,分布列选择原则如下表所示
INDEX对象设计规范(重点) 规则2.14 只创建必要的索引,创建索引必须选择合适的列和顺序 违反规范的影响: 冗余索引浪费空间,索引多影响入库效率。 组合索引中列顺序错误,影响查询效率。 最佳实践: 索引的使用需兼顾以下条件: 索引列必须是常用于过滤条件或JOIN关联条件的列。