业务字段定义标准化
名称前缀,后缀
dim_ / fact_ / view_ / foregin_ / func_
每张表都应固有几个属性 created_time (cdt), modified_time (udt), created_by, modified_by
字段名称全小写,用_分割,禁止驼峰 (与 SQL Server 和 Oracle 的使用习惯不同之处)
避免使用数据库系统保留字
否则写 SQL 的时候有坑
checksum字段
利用单一字段进行全表数据去重
非自增的索引可能会降低插入的效能
建议所以可以添加comment的地方均添加comment
跨国公司,数据要做全球同步的,时间字段最好使用 bigint 存毫秒值
timestamp 所占空间虽然和 bigint 相当,但入库时需要额外留意时区
避免使用外键
分布式数据库外键的设置可能是个制约因素
避免使用触发器
触发器的逻辑建议放到业务程序中,业务处理流程会更加清晰,且避免受制于数据库的效能
Trigger UDF 无法被监控
钱的数据类型要用 DECIMAL
表分区
优势
数据查询,通过分区条件直接查询某个分区表,避免了大范围的数据查询
分区剪枝,控制单表索引大小
数据归档,常规的表 DELETE FROM ... WHERE 大概率会造成全表扫描,执行较慢,而如果是分区表的话,则可以直接用 DROP TABLE ... 来删除历史分区
数据备份,支持按照分区进行数据备份还原
限制
分区表的唯一索引需要包含分区列,不支持像 Oracle 那样的 Globle Index