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

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

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

13291 次点击
所在节点    程序员
101 条回复
itechify
2023-09-25 21:44:42 +08:00
就奇怪了,加那么多 ext 字段,记得什么业务含义吗?没有语义的字段
Daniel17
2023-09-25 21:51:50 +08:00
@oneisall8955 同问
ntedshen
2023-09-25 22:03:52 +08:00
我们这边的 apache hive 基本上每个表都会留三到五个 ext ,最少也得留一个。。。
主要改表结构这件事你不知道会导致什么后果,但是不改明显是没什么大问题的。。。

改结构你改完 sql 脚本还要去数据同步里面改映射,改完映射整个数据流程得全部重新审批重新发布。。。
然后外部 rds 和各种视图也要跟着全部改一遍,都不是不在一个部门的问题,可能要跨好几个部门。。。
用通配符的部分全部都会报错,不用通配符的有的表百十个字段你最好也得通知一遍说不定有什么影响业务的问题。。。
留个 ext 要哪天不够用大不了加个分隔块 concat 一下就完了。。。
ljsh093
2023-09-25 23:24:56 +08:00
@yuyang1992test #4 加字段要走流程
lanlanye
2023-09-26 02:17:21 +08:00
你们是没有文档库吗:(
iseki
2023-09-26 07:54:52 +08:00
这不是高级不高级的问题,这是整天加字段加烦了,旧字段还变来变去改烦了。你看看没准这种情况下,程序里那个 ext 字段都按 any 类型处理的🤣
tramm
2023-09-26 08:27:15 +08:00
看到这个问题, 联想到我们的数据库, 我想请教下各位大佬:
我们有个数据库有几千万记录, 有两列是 Geometry 类型的数据, 整个表占用将近 1T 的空间, 该如何将这两列 Geometry 去掉?
MySQL 8.0.31
因为现在完全用不到这两列了.
去年 5 月份, 想直接删除这两列的, 然后导致数据库直接挂了, 启动也启动不起来. 把那个表对应的物理文件删了才启动起来...
xshell
2023-09-26 08:52:24 +08:00
MySQL8.X 以后 DDL 秒加字段。
jsdi
2023-09-26 08:54:38 +08:00
mysql8.0 有快速加列,能实现秒级加列,不锁表
luzemin
2023-09-26 08:58:52 +08:00
别的我不知道,就我经历的 java 项目

之前数据库只有 a,b,c 三个字段
mybatis 中:Select a,b,c (不允许写星号) from table
java PO/DTO/VO 中:field a, field b, field c

现在加个字段 d ,那就得从数据库开始一直到 VO 都得对应的增加,还可能有部分你不了解的地方未覆盖
改动就意味着回归测试,挺麻烦的

所以预先留 1 个字段,甚至多个,可以极大的简化这个流程。
当然你说预留的还不够,不还得新加吗?如果预留不够,那说明改动真的不算“小”改动了,那就得专门创建个任务去做这个事情了
sdwgyzyxy
2023-09-26 09:21:02 +08:00
对于上亿级的表,即使你把新增字段的 SQL 发给运维,他们也会直接拒绝,我们一般都是停服、复制表、加字段、删表、表名修改、启动服务,没其他好办法,只能停服。
yph007595
2023-09-26 09:21:20 +08:00
@chendy #7 你用的时候需要给预留字段改名吗?例如预留的是 ext1 ,ext2.。。,你会改成有意义的字段吗
chendy
2023-09-26 09:27:50 +08:00
@yph007595 有专门的一个抽象层,管理字段定义和 sql 转义这些,使用的时候写的是字段名比如 userType ,实际执行查的是 c_ext_varchar_001 这样的字段
pannanxu
2023-09-26 09:28:46 +08:00
@oneisall8955 ext 字段如果是 json 可以在 java 中直接映射为对象,mybatis 、jpa 都可以,所以只需要在代码中建立一个对象即可。
jonsmith
2023-09-26 09:38:03 +08:00
与技术无关,跟公司管理有关。
上家公司的很多表都有 exta 扩展字段,一个大 json ,什么垃圾数据都往里塞,导致历史数据不一致,层出不穷的 bug 。
刚开始我也不习惯这么做,后来就从了。因为每次新增字段需要领导评审、一番掰扯,领导技术很垃圾、掰扯不清。
SmiteChow
2023-09-26 09:38:11 +08:00
面向未来屎山编程,面向一厢情愿的 7*24h 服务质量编程。

影响国计民生的系统都允许闲时停水停电停服维护,就 TM 你做的系统了不起,不能停。
wu00
2023-09-26 09:42:10 +08:00
屎山就是这么堆起来的
十年前这样做属于有经验
今天还在这样做就太那啥了...
dzdh
2023-09-26 09:47:12 +08:00
不怕加 ext 。怕的是这一个字段有不同作用。类型是 varchar ,存的数据一会儿是数字,一会儿是 string ,再隔一行还可能是 json
salmon5
2023-09-26 09:48:18 +08:00
这种现在数据库上应该不是问题,10 年前确实是个问题,现在应该不是问题
zdking08135
2023-09-26 09:48:20 +08:00
增加不必要的字段就是有问题。比起这种意义不明的设计,还是想法避免单表千万行更靠谱。

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

https://ex.noerr.eu.org/t/976972

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

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

© 2021 V2EX