更新时间:2024-06-03 GMT+08:00

数据库对象命名

数据库对象命名需要满足约束:

  • 标识符表长度不超过63个字节。若需要对建有全局二级索引(GSI)的表执行COPY、GDS数据导入操作,则表名长度不超过38个字节。
  • 标识符以字母或下划线开头,中间字符可以是字母、数字、下划线、$、#。
  • 若标识符被双引号("")包含或者MYSQL模式下被反引号(``)包含,则可以使用合法字符的任意组合,如"123gs_column"。
  • 标识符不区分大小写,只有被双引号包含或者MYSQL模式下被反引号(``)包含才区分大小写。
  • 不支持gsql快捷命令(除\sf)查询反引号包含的对象名。
  • 避免使用保留或者非保留关键字命名数据库对象。

    可以使用select * from pg_get_keywords()查询GaussDB的关键字,或者在关键字章节中查看。

  • 避免使用双引号括起来的字符串来定义数据库对象名称,除非需要限制数据库对象名称的大小写。数据库对象名称大小写敏感会使定位问题难度增加。
  • 数据库对象命名风格务必保持统一。
    • 增量开发的业务系统或进行业务迁移的系统,建议遵守历史的命名风格。
    • 建议使用多个单词组成,以下划线分割。
    • 数据库对象名称建议能够望文知意,尽量避免使用自定义缩写(可以使用通用的术语缩写进行命名)。例如,在命名中可以使用具有实际业务含义的英文词汇或汉语拼音,但规则应该在集群范围内保持一致。
    • 变量名的关键是要具有描述性,即变量名要有一定的意义,变量名要有前缀标明该变量的类型。
  • 表对象的命名应该可以表征该表的重要特征。例如,在表对象命名时区分该表是普通表、临时表还是非日志表:
    • 普通表名按照数据集的业务含义命名。
    • 临时表以“tmp_+后缀”命名。
    • 非日志表以“ul_+后缀”命名。
    • 外表以“f_+后缀”命名。
    • 不创建以redis_为前缀的数据库对象。
    • 不创建以pgxc_redistb为命名的数据库对象。
    • 不创建以mlog_和以matviewmap_为前缀的数据库对象。
    • 不创建以gs_role_为前缀的数据库对象。
  • 表对象命名建议不要超过63字节。如果超过该长度内核会对表名进行截断,从而造成实际名称和设置值不一致的现象,且在不同字符集下,可能造成字符被截断,出现预期外的字符。
  • 若需要对建有全局二级索引(GSI)的表执行COPY、GDS数据导入操作,则表名长度不超过38个字节。如果超过该长度,COPY、GDS导入过程中创建的临时表,可能触发表名截断,进而引发数据导入流程中断,出现预期外的字符等问题。