V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fengxue
V2EX  ›  程序员

数据库不是给开发用的?

  •  
  •   fengxue · 2020-05-21 10:02:27 +08:00 · 10614 次点击
    这是一个创建于 1652 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我:大哥 census 库 ll_census_zd_income 结构同步一下,census 发个版 运维:好了 ,加字段尽量加载默认最后面 我:为啥,我插入是方便查看 运维:数据库是给开发查看用的吗 运维:select *? 运维:不会自己查字段 我:1 (内心 OB 懒得没时间和你多 BB ) 各位 v 友怎么看

    第 1 条附言  ·  2020-05-21 13:06:52 +08:00
    十分尴尬,第一次发帖。没注意换行被吃了,对不起各位 V 友
    第 2 条附言  ·  2020-05-21 13:07:23 +08:00
    我:大哥 census 库 ll_census_zd_income 结构同步一下,census 发个版
    运维:好了 ,加字段尽量加载默认最后面
    我:为啥,我插入是方便查看
    运维:数据库是给开发查看用的吗
    运维:select *?
    运维:不会自己查字段
    我:1 (内心 OB 懒得没时间和你多 BB ) 各位 v 友怎么看
    第 3 条附言  ·  2020-05-22 13:36:48 +08:00
    1 表达能力:除了标题是后加的,聊天记录纯天然无修改。我和运维反正都能理解各自的意思,如果某部分 v 友无法理解我只能怀疑你的理解能力了,当然不排除是我们所处环境不同所导致。(注:本想法聊天记录截图,但没找到这个工功能)

    2 相关环境问题: 本地、测试、线上三个库毋庸置疑,开发用的自然只有本地和测试库。以下都是建立在 MySQL(Navicat 客户端)

    3 事情起因经过及结果
    开发本地 navicat 选择插入字段功能,插入一个字段。然后让运维同步到线上库。我们使用的都是 navicat12 客户端工具,运维同步结构也用的是 navicat 工具里的结构同步。平时我也是这么同步到测试库的。此时,运维突然来一句以后新增字段不要插入默认最后添加,我想是个人都会问一句:为什么吧?但看到他的回复也就不想继续追问了。只能内心吐槽一下。当然还是会按照运维说的做(这也就是回复 1 的含义),毕竟楼主是个刚入行的小菜鸟。但疑问仍然在

    4 发帖原因
    吐槽无可厚非,求安慰是小弟弟做的事毕竟 lz 也是二十多岁的人了,主要还是解除心中疑惑,为何不要插入字段,而是默认最后添加。看看各位 v 友的看法
    97 条回复    2020-05-22 18:01:35 +08:00
    dorothyREN
        1
    dorothyREN  
       2020-05-21 10:19:35 +08:00
    没毛病啊
    dorothyREN
        2
    dorothyREN  
       2020-05-21 10:22:26 +08:00   ❤️ 1
    楼主 你完蛋了,我估计一会就有一大批人来叼你了。
    dog82
        3
    dog82  
       2020-05-21 10:24:05 +08:00
    有略微的性能差异,完全可以忽略不计
    dilu
        4
    dilu  
       2020-05-21 10:25:19 +08:00 via Android   ❤️ 1
    很多事情本身并没有对错,就看谁话语权重,仅此而已
    qW7bo2FbzbC0
        5
    qW7bo2FbzbC0  
       2020-05-21 10:27:04 +08:00   ❤️ 5
    加字段尽量加载默认最后面 我:为啥,我插入是方便查看

    没看懂

    运维:select *? 运维:不会自己查字段 我

    看不懂上下文关系
    MrCastle
        6
    MrCastle  
       2020-05-21 10:33:10 +08:00
    不应该是开发测试一个库,然后生产一个库吗?
    分开管理不好吗?
    我们公司是开发测试-准生产-生产,三个环境的,开发要动生产的数据库只能提升级流程。直接动生产的数据库算什么事,万一来个删库跑路怎么办?
    ctOS1H
        7
    ctOS1H  
       2020-05-21 10:35:43 +08:00   ❤️ 3
    写的啥玩意
    daozhihun
        8
    daozhihun  
       2020-05-21 10:38:10 +08:00
    什么乱七八糟的,是不是标点和换行不见了
    sun1991
        9
    sun1991  
       2020-05-21 10:39:17 +08:00   ❤️ 36
    这是 LZ 脑内存的 dump
    realpg
        10
    realpg  
       2020-05-21 10:47:06 +08:00
    有管数据库的运维的体量的公司 /团队 那就按运维说的办
    realpg
        11
    realpg  
       2020-05-21 10:50:33 +08:00
    至于你的标题,

    我们租的码头仓库不是给放东西用的?为啥非要整齐的堆起来?随便往里一扔不就好了。为啥要整齐的堆好。
    darksword21
        12
    darksword21  
       2020-05-21 10:52:18 +08:00
    能加个\n 吗
    Mistwave
        13
    Mistwave  
       2020-05-21 10:54:24 +08:00 via iPhone   ❤️ 2
    没错,db 就是给 dev 用的,你们 dba 不专业,你应该喷他,就应该给你所有权限,上去随便 alter truncate,怎么爽怎么来,毕竟 dev 是大爷。手动狗头
    jinzhongyuan
        14
    jinzhongyuan  
       2020-05-21 10:54:55 +08:00   ❤️ 1
    写的啥 季霸玩意啊
    lscexpress
        15
    lscexpress  
       2020-05-21 10:56:15 +08:00
    你表达太混乱了
    imdong
        16
    imdong  
       2020-05-21 10:56:31 +08:00
    大概看懂了,动感地带:“我的地盘听我的。”

    #11 说的对,但描述可以换一下:“仓库不是给搬运工用的?”
    monsterxx03
        17
    monsterxx03  
       2020-05-21 10:59:13 +08:00 via Android   ❤️ 1
    看具体情况喽,其实除 mysql 之外的数据库字段大多只能加最后,如果你们用 etl 工具把表同步到其他数据库里做分析用, add column after 这样的语句大概率不支持的,只能 reload 整张表,的确很麻烦……
    villivateur
        18
    villivateur  
       2020-05-21 11:00:06 +08:00 via Android   ❤️ 1
    楼主,用文字表达清楚自己想说的话,有那么难吗?
    gabezhao
        19
    gabezhao  
       2020-05-21 11:51:01 +08:00
    我看了,看不懂你说的啥
    karnaugh
        20
    karnaugh  
       2020-05-21 11:57:31 +08:00
    不是,楼上这些人看不懂吗??在 [我:] 和 [运维:] 之前脑动加个换行符这么难么,就是个聊天记录,来我给你们加上换行符好吧↓

    我:大哥 census 库 ll_census_zd_income 结构同步一下,census 发个版

    运维:好了 ,加字段尽量加载默认最后面

    我:为啥,我插入是方便查看

    运维:数据库是给开发查看用的吗
    运维:select *?
    运维:不会自己查字段

    我:1 (内心 OB 懒得没时间和你多 BB ) 各位 v 友怎么看

    @hjahgdthab750
    @ctOS1H
    @daozhihun
    @jinzhongyuan
    @lscexpress
    @villivateur
    @gabezhao
    qiayue
        21
    qiayue  
       2020-05-21 12:00:20 +08:00   ❤️ 1
    @karnaugh #20 你看你重新发了一遍,还是错别字连篇,还是没讲清楚问题
    karnaugh
        22
    karnaugh  
       2020-05-21 12:03:05 +08:00
    @qiayue 抱歉,我只排版了题干,忘记复制问题了,问题在标题里
    AngryMagikarp
        23
    AngryMagikarp  
       2020-05-21 12:04:13 +08:00   ❤️ 1
    我好像明白了。

    意思是某张表加了一列。然后那列默认是排在最后的。如果 select * from table 时,那一列就排在最后面了。而运维认为如果要查看应该自己指定字段以及顺序。比如 select col1,col2 from table 。
    lg106
        24
    lg106  
       2020-05-21 12:09:14 +08:00
    看了半天才看懂- -
    xuanbg
        25
    xuanbg  
       2020-05-21 12:33:11 +08:00
    虽然运维做的也没错,但我就是喜欢表结构有序,这是强迫症,而且我不打算改。

    如果楼主不能一言而决,那么就只能去运维那里软磨硬泡也好,撒娇打滚也罢,总之总要付出点代价让运维听你的就完了。
    qW7bo2FbzbC0
        26
    qW7bo2FbzbC0  
       2020-05-21 12:36:34 +08:00   ❤️ 1
    @karnaugh #20 你看你重新发了一遍,还是错别字连篇,还是没讲清楚问题
    Vhc001
        27
    Vhc001  
       2020-05-21 12:41:12 +08:00
    又一个被应试教育毁掉语言表达能力的。。。
    Vegetable
        28
    Vegetable  
       2020-05-21 12:44:45 +08:00
    @hjahgdthab750
    @qiayue
    你们回复这人又不是楼主
    Vegetable
        29
    Vegetable  
       2020-05-21 12:45:12 +08:00
    看不懂这段对话的,理解能力有问题。
    我说的
    x66
        30
    x66  
       2020-05-21 12:53:21 +08:00
    @xuanbg 例如 Oracle 这种数据库添加列的时候是无法指定位置的,那你用起来可太难受了
    fengxue
        31
    fengxue  
    OP
       2020-05-21 13:03:56 +08:00 via iPhone
    十分尴尬第一次发帖,电脑发的为何换行不见了
    fengxue
        32
    fengxue  
    OP
       2020-05-21 13:08:43 +08:00 via iPhone
    @dorothyREN 是嘛,看了下还好
    fengxue
        33
    fengxue  
    OP
       2020-05-21 13:12:02 +08:00 via iPhone
    @MrCastle 是三个库,我本地加字段让运维同步线上,突然来一句以后加后面有点懵,插入到相关字段浏览效果不是好点吗,一点要在 add_time 后面?
    bk201
        34
    bk201  
       2020-05-21 13:12:14 +08:00
    你就不能问下为啥这么做,有啥好处,长个见识。话说这个操作什么好处,有谁知道么
    leido
        35
    leido  
       2020-05-21 13:12:58 +08:00 via Android
    运维和 dba 是两种职业,运维不背锅
    fengxue
        36
    fengxue  
    OP
       2020-05-21 13:14:23 +08:00 via iPhone
    @monsterxx03 靠谱👍🏻
    fengxue
        37
    fengxue  
    OP
       2020-05-21 13:22:26 +08:00 via iPhone
    @bk201 我第一反应就问了,为啥不能插入。紧接着说了我为何插入字段而不是默认最后添加字段:插入方便浏览。你看他给我回的啥,之后就懒得和他多 bb 了。心血来潮 v 站发个贴问问各位 V 站大佬为何不能插入和运维回的一句:数据库是给开发查看用的吗 ?解疑惑而已
    heyjei
        38
    heyjei  
       2020-05-21 13:31:09 +08:00
    很多数据库都是只能把字段附加到最后的吧,也就 MySQL 能够通过 before 和 after 来调整顺序
    qiayue
        39
    qiayue  
       2020-05-21 13:37:54 +08:00
    @Vegetable 遇到热心群众了,没仔细看
    tulongtou
        40
    tulongtou  
       2020-05-21 13:46:20 +08:00
    不知道是什么环境的,楼主也没说,不过生产环境的数据库,确实不是给开发用的。开发即使要数据,也应该有一个测试用的数据库,数据可以从生产环境同步。
    tingfang
        41
    tingfang  
       2020-05-21 13:48:47 +08:00
    应该是楼主想 ALTER TABLE t_a_table ADD COLUMN a_column INT AFTER a_column,运维不允许指定新增字段的位置。
    danhahaha
        42
    danhahaha  
       2020-05-21 14:15:51 +08:00   ❤️ 2
    就按你这段文字水平,让你随便放字段,那数据库不真是没法看了
    tt67wq
        43
    tt67wq  
       2020-05-21 14:19:23 +08:00
    我真的是 select *的
    vnex
        44
    vnex  
       2020-05-21 14:26:14 +08:00
    是 因为 select * 吗? 因为 * 会导致两次查询索引?
    c6h6benzene
        45
    c6h6benzene  
       2020-05-21 14:26:32 +08:00 via iPhone
    我记得我们这边生产数据库( SQL server )改表走 release 的时候也是要求新字段放在最后,便于管理。

    DBA 说的也没毛病,SELECT *字段顺序不满意可以自己指定顺序。
    gleymonkey
        46
    gleymonkey  
       2020-05-21 14:42:37 +08:00
    测试数据库是给开发用的,随便搞,我是运维
    neoblackcap
        47
    neoblackcap  
       2020-05-21 14:51:35 +08:00
    @heyjei 没错,也就 MySQL 可以,像 Postgres 才不管你。要不然你重新建表。我觉得这个真的是没有必要,特别是 MySQL DDL 还锁表
    weizhen199
        48
    weizhen199  
       2020-05-21 15:09:04 +08:00
    那你把 sql 写好,让他帮你跑
    barrysn
        49
    barrysn  
       2020-05-21 15:16:15 +08:00
    运维和 dba 是两种职业,运维不背锅
    而且 DBA 说的没错,数据库还是针对程序用的,你只是因为个人查看方便就要求更新字段顺序,如果每个开发人员都要求来修改字段顺序,DBA 每天就不用干其他的了。
    abcbuzhiming
        50
    abcbuzhiming  
       2020-05-21 15:35:53 +08:00
    有 dba 和运维的公司,请务必按照 dba 和运维的话做——这样出任何他们领域的问题,都可以把锅丢他们头上
    ackfin01
        51
    ackfin01  
       2020-05-21 15:38:18 +08:00
    运维没毛病。数据库也不是给开发用的,是服务于应用的。
    forgottencoast
        52
    forgottencoast  
       2020-05-21 15:43:43 +08:00
    就这表达能力,我看不用讨论了。
    liuxey
        53
    liuxey  
       2020-05-21 15:46:15 +08:00
    憋着一肚子火到 v 站发给贴求同情,结果反而被怼,v 站用户-1
    tolerance
        54
    tolerance  
       2020-05-21 15:53:19 +08:00
    u1s1 运维没错,改变表结构有一系列潜在的工作,文档调整,文档版本管理,数据同步,数据恢复,历史数据管理,版本回退,等等;毕竟不可能只有一个开发人员。
    index90
        55
    index90  
       2020-05-21 16:04:43 +08:00
    select * 不是一个好习惯
    lithiumii
        56
    lithiumii  
       2020-05-21 16:09:39 +08:00
    建议全部上 mongodb,我看你们还怎么 select *
    jabin88
        57
    jabin88  
       2020-05-21 16:13:17 +08:00
    开发:要不代码你来写?脚本你来做?工资我代你领
    运维:。。。
    guokeke
        58
    guokeke  
       2020-05-21 16:20:07 +08:00
    不用 select * 不是开发的常识吗?
    hoyixi
        59
    hoyixi  
       2020-05-21 16:20:47 +08:00
    正常,正规公司,只要是共用环境,包括 dev 、测试、UAT 环境,数据库不管是 DBA 来管还是谁来管,不是你想改就能改。production 环境更不用说。

    当然你自己用自己搭的,随便你改
    akira
        60
    akira  
       2020-05-21 16:28:44 +08:00
    数据库不是给开发用的.
    JakeLaoyu
        61
    JakeLaoyu  
       2020-05-21 16:39:26 +08:00
    如果有相关负责团队就按照他们的规范来,毕竟有问题他们是要背锅的。
    Resource
        62
    Resource  
       2020-05-21 16:49:45 +08:00
    居然被你猜对了,数据库不是给开发用的
    BasIrs
        63
    BasIrs  
       2020-05-21 16:53:30 +08:00
    @jinzhongyuan 看到你这里给我整笑了哈哈哈哈
    red2dog
        64
    red2dog  
       2020-05-21 16:56:06 +08:00
    我们执行线上 sql 是需要审批。然后 dba 执行的。 测试环境是申请权限后随便开发随便用的
    fancy2020
        65
    fancy2020  
       2020-05-21 17:01:57 +08:00 via iPhone
    第一次知道原来字段是有顺序的,学了个知识点
    swulling
        66
    swulling  
       2020-05-21 17:10:51 +08:00 via iPhone
    我看懂了,但是确实没必要调整字段说顺序
    Erroad
        67
    Erroad  
       2020-05-21 17:33:42 +08:00
    数据库是人家管的,人家确实有定规范的权力,出了问题也是人家背锅
    Erroad
        68
    Erroad  
       2020-05-21 17:34:26 +08:00
    不过语气确实冲,暴躁老哥,哈哈
    tairan2006
        69
    tairan2006  
       2020-05-21 17:38:31 +08:00
    这写的啥玩意儿。。select * 本来就不让用啊
    stephenxiaxy
        70
    stephenxiaxy  
       2020-05-21 18:03:25 +08:00
    没毛病
    johnchshen
        71
    johnchshen  
       2020-05-21 18:16:02 +08:00 via Android
    都是门槛太低惹的祸。看隔壁医生就表现专业的多。
    jasonding
        72
    jasonding  
       2020-05-21 18:24:40 +08:00
    字段顺序不同有什么影响么?不太懂
    loading
        73
    loading  
       2020-05-21 18:37:17 +08:00 via Android
    贵司 DBA 已经参照数据库三权分立执行,没毛病的,很优秀的一位员工。
    wc951
        74
    wc951  
       2020-05-21 20:06:31 +08:00 via Android
    随意搞生产库的离告别开发也不远了
    james122333
        75
    james122333  
       2020-05-21 21:15:16 +08:00
    看语法就知道搂 肯定目的受众是非专业
    mengzhuo
        76
    mengzhuo  
       2020-05-21 22:49:39 +08:00   ❤️ 1
    我是开发

    ----------

    select * 确实不符合规范,增加项或者删减项程序会没法感知。
    说明没有 ORM 或者审查工具
    如果还是直接按第几位取结果,就更容易 GG 了。
    code review 的时候碰到这样的会直接打回的。
    ------------

    数据库是给程序用的,真人工处理的话,还是笔纸适合你。

    ------------
    你该专业的时候不专业被人喷很正常。
    skull
        77
    skull  
       2020-05-22 08:23:11 +08:00
    原来你是直接打开数据库看,不是用语句看
    encro
        78
    encro  
       2020-05-22 08:50:41 +08:00
    @Vhc001
    和应试教育有关系?
    encro
        79
    encro  
       2020-05-22 08:53:26 +08:00
    @neoblackcap
    加字段恰好属于 ONLINE DDL
    encro
        80
    encro  
       2020-05-22 08:59:41 +08:00
    除了标题,其他我是挺作者的:
    1,字段有顺序,打开数据库重新设计时容易找到;
    2,ORM 自动都是 select * ,这点性能不算啥,当然如果高频查询,内容长时不应该。

    最后标题也是支持的:
    1,生产库不是给开发用的很正常,但是找 BUG,定位线上数据问题还是得开发为主,所以如果说数据库给开发用没毛病;
    2,至于说数据库是给客户用的,这个客户不用数据库,用的是产品和服务。
    tairan2006
        81
    tairan2006  
       2020-05-22 09:34:53 +08:00
    @encro 你用的啥 ORM 自动是 select *,我就没见过这种 ORM…
    ayavvv
        82
    ayavvv  
       2020-05-22 09:58:05 +08:00
    写的什么玩意。。。
    heaton_nobu
        83
    heaton_nobu  
       2020-05-22 10:03:45 +08:00
    方便查看这个理由不足以说服 DBA 去改变字段顺序
    如果你有更充分的理由,请跟 DBA 说明并询问是否可以插入到前面
    如果没有,那就听 DBA 的
    encro
        84
    encro  
       2020-05-22 10:08:08 +08:00
    @tairan2006

    几乎我用过所有 PHP,PYTHON,GO 框架没有指定 select 的时候都是 *
    a7217107
        85
    a7217107  
       2020-05-22 10:13:21 +08:00
    @encro ORM 是根据实体类字段查询所有字段,不是 select * 哦
    encro
        86
    encro  
       2020-05-22 10:14:01 +08:00
    最后,
    要什么 DBA,
    自己写 migrate,自己查慢日志。

    NB 程序员:
    谁不同意我的意见,
    我就写个程序帮他有优化下,
    让领导觉得他这个岗位可有可无。
    encro
        87
    encro  
       2020-05-22 10:17:15 +08:00
    @a7217107

    对,
    默认我 model 定义了那些,他就查哪些,定义了所有就查询所有。
    而往往 model 定义了所有。
    lscexpress
        88
    lscexpress  
       2020-05-22 10:31:44 +08:00
    @liuxey 哈哈哈,有错要认 挨打立正。群众又不是不分青红皂白,虽然我也是开发,但我站运维这边。
    zoharSoul
        89
    zoharSoul  
       2020-05-22 10:35:11 +08:00
    @index90
    @lithiumii
    @vnex
    @tt67wq
    @guokeke
    @tairan2006
    @mengzhuo



    select * 是 dba 说的. 不是楼主说的,请看清楚上下文. 拒绝无脑回复.
    zoharSoul
        90
    zoharSoul  
       2020-05-22 10:36:29 +08:00
    @index90
    @lithiumii
    @vnex
    @tt67wq
    @guokeke
    @tairan2006
    @mengzhuo
    @lscexpress


    而且楼主的做法是 添加字段的时候指定了位置,我觉得这个是合理的,非要要求加到最后没有任何意义, 数据库字段理应有合适的顺序方便阅读.
    tairan2006
        91
    tairan2006  
       2020-05-22 10:55:37 +08:00
    @zoharSoul 主要是楼主自己词不达意啊…

    说白了就是他`alter table add column`的时候用了`after`指定位置,但是 dba 觉得不好,当然实际上这个压根没啥影响。

    一句话就能说清的问题,扯了半天。
    zoharSoul
        92
    zoharSoul  
       2020-05-22 10:57:14 +08:00
    @tairan2006 是的,主要还是楼主表达的乱七八糟...
    我也是看了楼下有人翻译的才明白.
    namelosw
        93
    namelosw  
       2020-05-22 11:40:25 +08:00
    DB 是给 dev 看的,但是 dev 确实不应该关心顺序啊。用个 DataGrip 之类的完全无所谓。
    fengxue
        94
    fengxue  
    OP
       2020-05-22 13:10:04 +08:00
    @gleymonkey 我是测试 mysql 库插入字段,让运维同步结构到线上库才来的这么一段(注:运维用的是 navicat 结构同步)
    adoontheway
        95
    adoontheway  
       2020-05-22 15:42:01 +08:00
    开发库可以有权限,有字段修改尽量给脚本给运维,而不是口头告知
    vhwwls
        96
    vhwwls  
       2020-05-22 17:32:48 +08:00
    @sun1991 笑死
    tairan2006
        97
    tairan2006  
       2020-05-22 18:01:35 +08:00
    楼主你聊天记录你们当事人肯定是知道上下文的,其他人看聊天记录能明白啥。还怀疑别人理解能力,概括一下不行么?

    读过话剧剧本么,你这个场景完全可能是:

    我 [把脚本发给了运维] :…发个版
    运维 [看了看脚本] :select *?

    因为一般情况下上线改数据库是给 DBA 脚本的,谁知道你们这么落后还要手动改,笑死。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3301 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 11:57 · PVG 19:57 · LAX 03:57 · JFK 06:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.