暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SUNDB数据库应用开发规范(三)

原创 科蓝SUNDB编辑部 2022-10-28
266

1. 库名设计

  • 库名长度必须小于128字符。 数据库名称 建议1-8 个字符,其他对象 1-30 个字符。
  • 使用英文字母、数字、下划线及且不能以数字/开头。

2. 表结构设计

  • 表和列的名称必须小于128个字符;
  • 建议磁盘表空间数据文件要关闭自动扩展功能;
  • 表和列的名称不能使用系统保留字和特殊字符,只能使用字母、数字和下划线,以字母开头不区分大小写。
  • 建议普通表“T_”开头。
  • 内存表,默认模式,适用于数据量较小,同时又对性能有较高要求的表,如交易业务表。
  • 磁盘表,需要指定,适用于数据量较大,增长较快的表,如日志表。
  • 如果以”括住表名则可以使用其他特殊字符且区分大小写。(不推荐)
  • 表名称推荐以子系统名称或缩写开头,后跟功能名称或缩写,以“_”分隔,如表名t_qb_tblreply。
  • 列名称使用具体字段代表的功能名称或者缩写,若多个词需用“_”分隔,如列名update_time。
  • Not null 约束不能插入空字符串,goldilcoks 中空字符串和null完全等价,若无非空约束,可以插入空字符串,但是查询空字符串需要使用is null。
  • 布尔类型不能直接插入(0/1),需要使用单引号引起来 ’1’ 或者使用TRUE,FALSE;
  • 字段长度的定义要使用大于实际业务数据长度。
  • Sundb 数据库不直接支持CLOB/BLOB类型,但可以用LONG VARCHAR/LONG VARBINARY 替换(最大长度为100MB),通过JDBC Driver可以达到像正常使用CLOB/BLOB的效果。使用方法参见附录4.3 LONG类型使用样例。

3. 索引设计

  • 分片表上的唯一索引必须包含分片键;
  • 索引名称必须小于128个字符;
  • 索引的名称不能使用系统保留字和特殊字符,只能使用字母、数字和下划线,以字母开头不区分大小写;
  • 主键的名称以pk_开头,唯一键以uk_开头,普通索引以idx_开头,以表名/字段的名称或缩写作为后缀,如有表qb_tblreply,那么它的主键是pk_qb_tblreply,唯一键是uk_tblreply_qid,cid列上的普通索引是idx_tblreply_cid;
  • 数据量超过 10000 行的表应该有索引;
  • 经常与其它表进行连接的表,在连接字段上应建立索引;
  • 经常出现在 where 子句中的字段且基数较大的,应该建立索引;
  • 单个表上的索引个数建议不能超过7个;
  • 使用可更新游标(updatable cursor)变更当前位置的行,为了识别集群成员之间相同的row也需要全局二级索引(建表默认会创建);
  • 非确定性语句(过滤条件是limit 或fetch)建表应带全局二级索引(global secondary index 默认会自动创建),以区分集群成员之间的相同的row;
  • 频繁 DML 的表,不要创建过多的索引,否则会严重影响写性能。
  • 删除无用的索引,避免对执行计划造成负面影响;让 SQL 语句用上合理的索引。
  • 复合索引的建立需要仔细分析:where条件中包含多列,并且每列的过滤性都不强,则考虑建立多列复合索引,否则建议根据基数创建单列索引。
  • 复合索引的建立原则:以尽量少的列,实现最强的过滤性,建议不超过3列。正确选择复合索引中的第一个字段,一般是基数较大且在 where 子句中常用的字段;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论