3-关于开发规范(阿里规范)-持续补充

关于开发规范

一次数据库设计 萌发一想法 想做好一个更专业的程序员
1 熟练使用阿里开发手册解决实际问题
2 对之 可以 然 知其所以然
3 对其可 举一反三 提出自己的看法 优化 期望 在研读阿里规范时 可以完善自己的知识图谱
就像听老罗(罗辑思维)讲一句 “不知道买啥就买小米”
比如 在设计数据库表 ”不知道怎么搞 就参考阿里开发规范”

数据库

SQL语句规范

阿里规范 - 五、MySQL 数据库 - (三)SQL语句 - 1 - 【强制】不要使用 count(列名)或 count(常量)来替代 count(),count()是 SQL92 定义的 标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。

1、count(1) vs count()
两者都统计NULL值;但 count(
)是 SQL92 定义的 标准统计行数的语法,跟数据库无关
且 坊间有传言 MySQL会对count(*)做优化
不要用 count(1)

2、count(列名) vs count(*)
count(列名) 会去过滤NULL。

3、count(主键) vs count(*)
小数据量 几乎无差 大数据量 需要进一步测试

根据 ”暂不知道怎么选 就听阿里的”原则
用 count(*)

建表规范

阿里规范 - 五、MySQL 数据库 - (一)建表规约 - 2 - 数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑

首先 了解下

开发环境、测试环境、预发布环境、生产环境的区别
参考 : https://www.jianshu.com/p/ba20b064fd25

预发布环境一般会连接生产环境的数据库 所以 涉及到数据库表的改动
比如 数据库字段名称改变 是会影响到 生产环境的 无法预发布
要直接 发生产的 如果 生产环境的多台服务器 不是同一个数据库 也可以先灰度发布

修改字段的上线问题,会导致微服务挂掉,这是一个大问题,我要有这个敏感,
因为你发布的时候,即使是分布式的,你发布之后,也会报错,因为会找不到字段,

怎么办呢?可以新增一个字段,然后把历史数据的老的字段的值,放到这个新的字段上,
当然也可以写代码兼容,但是太费劲了,如果历史数据很多,也不建议这样做,这是一个非常麻烦而且危险的事情,

posted @ 2020-12-23 20:41  技术改变命运Andy  阅读(223)  评论(0编辑  收藏  举报