上篇讲了百万年薪架构师的培训资料之表设计,这节进行后续相关内容的讲解。
有时候我会想,为何程序员的职业生涯如此艰难,穷其精力,好不容易学会了一门技术,不知不觉间该技术已成为历史。
好不容易在这个行业拼出了一点点业绩,转眼已是白发苍苍。
因此独具慧眼地识别一门技术的生命周期将是非常重要的一种能力,关系型数据库的发展历史还能延续多久?根据现有市场占有率的估计应该还有很长一段时间的历史。而数据库知识,不像Java知识具有庞大的体量,所以学好它需要的精力远比微服务那一套轻松得多。也将快速增加自己的核心竞争力。
二、字段设计【接上文的一】
当我们将每一张表要存储的数据,表与表之前的关系,建立好后。就到了这一步的设计了。
1、数据字典
首先,我们将所有的表结构都导出,汇总为一张字段清单,按照字母顺序排列,这样可以很清晰地知道,我们有哪几张表使用了相同的字段。针对这些表字段逐个检查,主要包括以下几个方向:
相同字段名是否有相同的字段类型,字段长度
所使用的字符集是否相同
是否有相同意思但命名风格不一致的字段如createtime,create_time,统一使用下划线风格
经过上面的步骤,我们已经将整个数据库的字段进行了统一的整理。这是非常关键的一步,此版本将以最小原子性的能量,向外持续扩散,为今后团队新成员在字段设计上具有重要的借鉴和指导意义。
2、字段注释
数据库中注释的意义甚至超过了在Java中注释的意义。
普通业务字段中要为该业务字段进行详细的说明
当具有多个码值的字段中要逐一说明每一个码值的意义
在交易字段的设计中一定要包含具有成功、失败、处理中字段的描述信息
3、字段长度
字段长度主要围绕最短可用原则进行设计,即充分估算每一个字段的长度,为其选择最小长度*130%作为该字段的长度,即保证了扩展性,又保证了设计的合理性。这里主要是针对定长的字体类型如char,进行设计的。
主键:预估未来5年的数据量,为其设计占用空间合理的主键长度,一般选择32位自增,步长为1的bigint unsigned作为数据表的主键。根据B+树,主键索引地址在树干,叶子保存主键和索引的原则 ,主要长度,将决定在相同深度下所能存储的数据条数的多少。
4、选择合适的数据类型
不要用text,blob数据类型,这两种数据类型是用来存储占用空间较大的文本,或二进制图片来的。当在数据库中存储这些文件时,这些文件将会变得极其难以维护,无法为该字段建立索引,数据库的容易也变得无法估量。
使用DATETIME类型,不要使用TIMESTAMP
datetime使用8个字节来存储,存储的范围更大从1001年到9999年,而timestamp则存储从1970到2038年时间时间段,存储时间大大缩短。
当涉及小数时使用decimal,禁止使用float和double,后者会损失精度,使结果变得莫名其妙。特别是当用来存储金额时,一个小小精度,有可能使公司倾家荡产。金额也可以乘以相应的10倍数,以bigint来代替
可预测的定长字段选用char(N),不可预测的不定长字段选择varchar(N),int(N)
char和varcahr的区别如下:
5、使用垂直分区
将不常用的字段分离至另一张表中,可以大大提高数据表的查询效率。
学习新的知识总是枯燥的,正因为它的难学,才造就了你的不可替代性,相信日进一卒,再小的进步也会产生价值,当最后一片雪花压断树枝,你将会看到积累的力量。
好啦,今天的内容怎么样,欢迎留言评论。
前行的道路,让我们一起书写辉煌,交个朋友吧点个吧。