世界500强,百万年薪架构师,公司内部培训资料之MySql字段设计二

云平台

  上篇讲了百万年薪架构师的培训资料之表设计,这节进行后续相关内容的讲解。

  有时候我会想,为何程序员的职业生涯如此艰难,穷其精力,好不容易学会了一门技术,不知不觉间该技术已成为历史。

  好不容易在这个行业拼出了一点点业绩,转眼已是白发苍苍。

  因此独具慧眼地识别一门技术的生命周期将是非常重要的一种能力,关系型数据库的发展历史还能延续多久?根据现有市场占有率的估计应该还有很长一段时间的历史。而数据库知识,不像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、使用垂直分区

  将不常用的字段分离至另一张表中,可以大大提高数据表的查询效率。

  学习新的知识总是枯燥的,正因为它的难学,才造就了你的不可替代性,相信日进一卒,再小的进步也会产生价值,当最后一片雪花压断树枝,你将会看到积累的力量。

  好啦,今天的内容怎么样,欢迎留言评论。

  前行的道路,让我们一起书写辉煌,交个朋友吧点个吧。

标签: 云平台