高级程序员为什么喜欢建表的时候加个 ext 字段?

2023-09-25 15:07:36 +08:00
 yuyang1992test

扩展字段,到时候有新的需求再加不可以吗?

12193 次点击
所在节点    程序员
101 条回复
flyqie
2023-09-25 15:09:47 +08:00
因为,到那个时候就不好加了啊,一堆问题。。
me1onsoda
2023-09-25 15:12:31 +08:00
在一张千万级以上的表上加个字段,会导致锁表多长时间?
yidinghe
2023-09-25 15:14:45 +08:00
习惯使然,大部分情况其实是不需要加的。一般的系统设计中,100 张表里面可能只有不到 10 张表记录数最多,其他的表可能只有几十到几千条记录,唯独这几张表记录数能达到千万上亿条。这在设计的时候就可以预见到,所以剩下 90% 的表都不需要 ext 字段。
yuyang1992test
2023-09-25 15:15:04 +08:00
为什么不好加了?
mightybruce
2023-09-25 15:30:00 +08:00
线上数据库是不能随便修改数据库结构, 如果没有做不停机迁移的方案,会导致事故。
加这个,相当于考虑以后数据库变动了。
这种扩展也是建立在该表多数字段都已经非常确定的情况下, 其实还可以通过元数据表和字段来做。
28Sv0ngQfIE7Yloe
2023-09-25 15:31:57 +08:00
@yuyang1992test

一张 MySQL 表有 2000w 数据,这时候你 ALTER TABLE 一下,会发生什么?
chendy
2023-09-25 15:32:45 +08:00
才加一个明显不够高级
我们这系统预留 30 个 varchar20 个 number ,上面再包一层管理扩展字段的处理
brader
2023-09-25 15:34:47 +08:00
@Morii 会被通报批评
devopsdogdog
2023-09-25 15:37:25 +08:00
一个垃圾运维,认为是 程序设计,模块化,后续扩展等考虑
说锁表的大哥,可能是我经验少,mysql 不是 行锁+ online ddl ,千万级别在我看来问题不大,不要高峰期操作就行了
wuwukai007
2023-09-25 15:37:33 +08:00
mysql 8.0 之后不存在问题
brader
2023-09-25 15:44:41 +08:00
@devopsdogdog “不要高峰期操作”这点就能把人恶心坏。我曾经遇过一个傻逼领导,老项目,那时候发版又频繁,有时候难免会有需要改老表的字段结构,如果用你说的这个方案,那领导动不动就给我说,那你就加班搞下啊,我们那个业务低峰期大概是晚上 11 点多,每周都会发 1-2 个版,我加他 MMP 。
从此之后,那些屎山老表,我是能不动就不动,也不优化,有需要我就直接扩表扩字段搞
zxf9799
2023-09-25 15:54:32 +08:00
@devopsdogdog 不是高峰期根本就是句蠢话,有几个网络公司客户不是 24 小时跑业务的。还有就是你晚上 3.4 点爬起来给客户搞了一小时,你们公司是怎么调休的,有点好奇
devopsdogdog
2023-09-25 15:56:21 +08:00
@brader 无论大小系统都会错开高峰期操作 ,作为运维 我只能说是正常。 也不一定要 最低峰高,错开最高峰就行了,对服务器和代码性能有信心的话,高峰期操作也无伤大雅
pannanxu
2023-09-25 16:01:06 +08:00
很多情况下这个字段很好用,比如:不需要查询,但是字段太多,懒得加字段,前端直接构建 json 写入。当然这个仅限于内网项目可以这样玩。可以避免不必要的攻击。
liprais
2023-09-25 16:01:55 +08:00
旧时代的眼泪
lambdaq
2023-09-25 16:02:18 +08:00
mongodb:啊对对对
Vegetable
2023-09-25 16:04:05 +08:00
如果预留了字段,开发自己直接就能用了,如果没有预留,发布流程会变得很麻烦。
devopsdogdog
2023-09-25 16:08:45 +08:00
@zxf9799 可能我菜,没遇过这个量级的公司。如果支持 online ddl 非特殊情况 其实是不影响 运行的。

不知道你是开发还是运维,反正干了好几年运维了,除非紧急更新,算操作规范吧,不然肯定是避开高峰期的。 你总不可能 24 小时 100%负责吧。
dallaslu
2023-09-25 16:13:19 +08:00
这也不高级啊。十多年前经手的项目,每个表都有 200 多个字段,起名 a1,a2,a3, ...a200
lovelylain
2023-09-25 16:18:19 +08:00
加个 text 类型的 ext 字段,新增字段如果不需要检索,直接改 proto 就完成了新增,比加一个表字段成本低多了,很多时候新增字段都没有检索需求。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/976972

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX