平时开发中,业务膨胀导致表结构臃肿,一般怎么解决,有什么方法论?

2021-11-24 11:38:20 +08:00
 kikione

比如说我们业务有自己券体系。

券分为 A B 两种,在同一张表。

后来 A 又有自己的类型

B 又有自己的类型

如此循环,字段加的越来越多,也越来越耦合。

请问,建表时,一般要考虑哪些因素,业务越来越耦合时,如何加字段,如何拆表?

3645 次点击
所在节点    程序员
26 条回复
lscho
2021-11-24 11:39:58 +08:00
没办法,字段多了就分表
infun
2021-11-24 11:51:36 +08:00
一百九十多个字段的表都没拆,还在加。。。
SimonOne
2021-11-24 11:51:55 +08:00
B 加字段
XX 国企信息管理部评估:表里不就有这个字段了吗?
答:那时 A 的业务字段,我不能乱用,码值都不一样,只是看着像是一个字段
XX 国企信息管理部评估:不管,有字段就不能再加,驳回,就用这个字段

WRNM
ericgui
2021-11-24 11:55:04 +08:00
业务乱,这又不是技术问题,这个你作为程序员怎么可能解决得了?

不要幻想代码可以解决一切问题,代码只是现实生活的一个在互联网上的一个映射 /投影,而且你在写代码的时候又要做很多抽象,抽得四不像的情况多的去了

跑吧
Samuelcc
2021-11-24 13:06:04 +08:00
我在小规模服务中用过 Mongodb 存储多态对象,能够比较优雅地解决这种问题。但是没在大规模服务中尝试过。
dajj
2021-11-24 13:10:34 +08:00
换项目组或者换公司就好了
eason1874
2021-11-24 13:28:07 +08:00
一步到位是消费主义的谎言.jpg

后期发展谁说得准呢,不需要过度设计,有一定设计预留就够了

后期差异太大再分开,重新设计 AB 两张表,迁移或者根据券码、时间决定读新表还是旧表
clf
2021-11-24 13:34:27 +08:00
(快进到 text 存 json 字符串)
Ariver
2021-11-24 13:36:43 +08:00
银行有很多一个表字段六七百。
ospider
2021-11-24 13:40:07 +08:00
@clf mysql 5.7 前这也是传统艺能了
ZhaoWang
2021-11-24 13:43:42 +08:00
垂直拆分成两张,业务自定义垂直表,随便他们折腾
xuanbg
2021-11-24 13:59:10 +08:00
@eason1874 设计要有前瞻性,做到能升级、易升级就行了。但不需要预留现在没用的东西,特别是那种从 c0-c99 的预留未定义字段,简直就是辣鸡中的战斗机。
yunshansimon
2021-11-24 14:25:28 +08:00
任何读写都通过一个 dataview 来进行,这个 dataview 用来组织表格,如果有加不了的项,就拆到另一个表中去,用 dataview 来组织这些表,最终呈现一个“统一”的表格给应用,当然,注意要加上一个版本号,以便数据使用方来识别。所有写入都要通过一个写入过程,在过程中来判断要写入那些表中的那些字段,以便分开加锁,这样还能提高性能。
pengtdyd
2021-11-24 15:01:12 +08:00
把该死的架构师拉出去祭天就可以了
Saxton
2021-11-24 18:01:29 +08:00
考虑自定义字段? 用行来存字段呗,不一定要把字段具体化
sadfQED2
2021-11-24 18:50:35 +08:00
@clf 基操,勿 6
zeni123
2021-11-24 22:30:28 +08:00
BigTable 架构啊
liuxu
2021-11-24 22:34:59 +08:00
解决掉建表的人
3dwelcome
2021-11-24 22:52:03 +08:00
说起来可能楼主不信,但我个人推荐的方式就是对数据套娃。

也就是对数据库建立一个抽象层的读写 API ,给后端数据库读取的数据,都是加工处理过后的。

对外看起来是两个表,读写也是两个表。实际存到磁盘上,可能就一个总表了,通过一些代码做逻辑字段的切分。
akira
2021-11-25 00:43:16 +08:00
忍受不了的时候 就拆表呀。。

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

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

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

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

© 2021 V2EX