• 请不要在回答技术问题时复制粘贴 AI 生成的内容
qiaoqiao881100
V2EX  ›  程序员

做过后端的人来说说重构迁移数据库难度大吗

  •  
  •   qiaoqiao881100 · 2h 4m ago · 1610 views
    业务耦合性高,基本就是一坨屎,而且还是国内不入流的技术栈 c#, 现在要想重构,先从数据库迁移开始,之前没干过迁移这种事情, 这事情难度大吗,现在基本就让 AI 搞,也不知道最终会不会搞好。
    人和库有一个能跑就行
    Supplement 1  ·  59 mins ago
    另外说明一下背景:
    本人之前干前端的,简历上也基本都是写前端项目,只有一个简单的的后端项目,
    对 mysql 也基本停留在简单的 curd 上面,
    这个 cto 每次问他问题都说让我掌控这个项目,说什么对我技术能力认可的,我 tm 才刚入职 2 月而已。
    47 replies    2026-06-23 17:43:51 +08:00
    chachi
        1
    chachi  
       1h 53m ago
    c#也有.netframework 和 netcore
    看你哪种了。
    liuzhedash
        2
    liuzhedash  
       1h 52m ago
    不要重构,也不要迁移,百分之百炸
    建议再包一层,然后另起炉灶

    我是过来人,信我
    OutOfMemery
        3
    OutOfMemery  
       1h 51m ago
    楼上+1 ,最好是另起炉灶。。。。
    spacebound
        4
    spacebound  
       1h 50m ago
    有句老话怎么说来着“重构一时爽,测试火葬场”哈哈哈哈
    看你的项目规模和业务负责程度了。你再用 ai 也只能帮你转换 sql 语法,写写数据导入导出脚本,你要指望着 ai 帮你重构整个数据库,那基本完完~
    总结:能跑就不要动
    mikawang
        5
    mikawang  
       1h 50m ago
    慢慢迁移吧,新老库同时运行,CDC 从老库同步过去,出问题了能立马切回去,反正要有兜底方案
    jydeng
        6
    jydeng  
       1h 49m ago
    难度非常大
    2020diyige
        7
    2020diyige  
       1h 48m ago
    重构的难度比新做可大多了,,绝大部分情况重构没有意义
    NoKey
        8
    NoKey  
       1h 44m ago
    有些重构,其实就是相当于重新做啊
    coderxy
        9
    coderxy  
       1h 43m ago
    难度大,做好回滚方案,除非你随时准备好跑路
    一般都是先双写、然后同步旧数据、再双读验证、再把读切到新库、最后跑一段时间,没问题把双写关掉。
    loryyang
        10
    loryyang  
       1h 42m ago
    迁移还好,重构那是风险很高。但以你的描述,你想解决架构腐烂的问题,那还是得重构啊。这事,我建议是,你至少先运维老系统一年,再提重构的事情。你没摸清楚之前千万不要重构
    xiaomushen
        11
    xiaomushen  
       1h 41m ago
    不大,还好
    play78
        12
    play78  
       1h 38m ago
    我不太清楚你的业务场景。说说我的。
    公司内部一个供应链管理系统,就是简单的库存管理+行业特性。
    技术上+数据库完全重构。难不难?不难!开发 4 个多月就重构完了。
    因为数据是动态的,不能有错误,否则库存对不上。
    1. 花了一个周末过来进行数据迁移(花了一个星期,做数据转换脚本,周末才执行)
    2. 业务部门配合并行 2 套系统,期间,所有数据录两遍(操作逻辑还不太一样)、数据报表互相验证,半年!
    你就说业务部门肯不肯陪你这么玩吧。
    为什么需要半年,因为数据流不一样,新系统多了很多中间生产状态,更加精细化了,而一个产品生产周期平均需要 2-3 个月。
    yanguangs
        13
    yanguangs  
       1h 38m ago
    重构 99.9999%的情况下没有意义

    现在用 AI 来搞, 最明显的就是会超出上下文长度, 现在就是限额

    我之前搞一个需求, 一个 json 字段,tree 结构,打平存储到三张表里面,
    就这个需求,因为 token 限额跟 vibe coding 流程调优, 都搞了快 2 个星期, 同时还要不耽误其他的功能开发

    吃力不讨好, 领导关注的, 跟你关注的完全不是一个点.

    领导一不给经费去买 coding plan ,二要你不影响其他功能.
    pony2335
        14
    pony2335  
       1h 31m ago
    难度巨大无比,别干,而且必炸,有 AI 也不好使
    PopRain
        15
    PopRain  
       1h 20m ago
    迁移数据库是迁移数据库,重构是重构。。。。
    迁移数据库大部分 ERP 系统不会特别难,数据库语法基本接近,估计 AI 也能帮忙
    不理解业务,就不要去重构
    nofishing
        16
    nofishing  
       1h 20m ago
    c# 不挺好的吗,数据库不会是 sql server 吧,要换成啥?
    wangritian
        17
    wangritian  
       1h 19m ago
    没太理解为什么是先从数据库迁移开始,不应该是先开发新系统,最后迁移数据吗
    如果没办法一口气开发完,就开发一部分然后把老系统的对应代码改成远程调用
    迁移数据也没什么麻烦吧,原始数据保留不动,让 AI 反复写迁移脚本+人工测试不就完了
    qiaoqiao881100
        18
    qiaoqiao881100  
    OP
       1h 17m ago
    @nofishing 对,业务系统的数据库就是 sql server ,老板目标是最终想用 go 重构整个系统,现有 c#的系统太垃圾,有部分数据库是用 mysql 的,所以现在想先把业务上的 sql server 数据库迁移到 mysql, 然后再把我负责的业务用 go 重构 解耦。
    qiaoqiao881100
        19
    qiaoqiao881100  
    OP
       1h 16m ago
    @wangritian 想先把业务上的 sql server 数据库迁移到 mysql, 然后再把我负责的业务用 go 重构 解耦。
    qiaoqiao881100
        20
    qiaoqiao881100  
    OP
       1h 16m ago
    @wangritian 我他妈也不知道为什么就我负责的这块先重构,让我先搞,业务系统那么庞大呢。我日了
    nofishing
        21
    nofishing  
       1h 13m ago
    @qiaoqiao881100 #18 没意义啊,C# 不挺好,分模块慢慢优化呗。sql server 迁移 mysql 更没意义,除非 TB+ 数据单机放不下要换分布式数据库。我之前做过 10TB 的 sql server 迁移 OLAP 数仓,你这种 TP 的业务系统更复杂
    hnbcinfo
        22
    hnbcinfo  
       1h 11m ago
    重构这事交给 gpt-5.5 最合适。
    wysnxzm
        23
    wysnxzm  
       1h 10m ago
    新业务用新项目新数据库,老业务不要动,经验之谈听不听随你
    cwliang
        24
    cwliang  
       1h 5m ago
    风险大收益低的事情不能干
    zt4027050
        25
    zt4027050  
       1h 5m ago
    确实能动就不要搞,吃力不讨好,除非你有明确的性能优化指标,重构后可以提升 xx 倍,然后指望他升职加薪
    uCharles
        26
    uCharles  
       1h 4m ago
    怎么说呢,这种事有两个极端,有可能是想重用你也有可能是想干掉你
    chutianyao
        27
    chutianyao  
       1h 1m ago
    存量数据同步->增量双写->job 兜底比对/修复异常数据->开关控制读流量切到新库->开关控制停写老库->下线清理

    大概就这么个流程, 我之前迁移线上 0 级系统
    qiaoqiao881100
        28
    qiaoqiao881100  
    OP
       58 mins ago
    @chutianyao 你写的字我都认识,但是看不懂。俺之前干前端的。😭
    SURA907
        29
    SURA907  
       56 mins ago
    感觉什么都没说清楚

    1. 业务重构干嘛动数据库?
    2. 所谓数据库迁移又是哪种迁移?
    > - 更换数据库( mysql -> pg )?
    > - 还是单纯挪个窝?
    qiaoqiao881100
        30
    qiaoqiao881100  
    OP
       55 mins ago
    @SURA907 最终目的是替换 c#这套东西,用 go 重构,所以想先把业务上的 sql server 数据库迁移到 mysql, 然后再把我负责的业务用 go 重构 解耦。
    qiaoqiao881100
        31
    qiaoqiao881100  
    OP
       54 mins ago
    @SURA907 现在我才发现我是不懂后端被 cto 忽悠了。cto 可能也想找个垫背的
    qiaoqiao881100
        32
    qiaoqiao881100  
    OP
       53 mins ago
    @SURA907 确实你这几个问题真是灵魂拷问, 现在只是现有系统某些业务性能不好 , 现有系统很多做法很龊,所以重构,但是还在跑。迁移数据库是 sql server 到 mysql
    ntdll
        33
    ntdll  
       50 mins ago   ❤️ 1
    任何公司
    任何项目
    任何理由

    重构 = 自杀
    SURA907
        34
    SURA907  
       45 mins ago
    @qiaoqiao881100 这种重构巨危险,而且工期以年为单位,除非到了不彻底重构就会爆炸的程度,否则不建议碰

    我之前有彻底重写过一个很边缘的小服务,没有碰数据库,即使如此也花了半年多

    这个服务经过几手,被改的乱七八糟,经常搞出来脏数据,频繁去生产数据库清理脏数据不是什么好事,拖了很久拖不下去了,与其缝缝补补不如彻底重写

    PS:这种细活不要太相信 AI
    yuyoung
        35
    yuyoung  
       31 mins ago
    前端重构都容易炸飞,涉及到数据就更容易炸飞了,而且炸飞的后果更大,重构需要的不止是勇气,还要有理由,大多数重构也没法创造可观的 KPI 。
    nolynfeng
        36
    nolynfeng  
       22 mins ago
    真是胆子大,不仅是数据库想迁移,代码也要一起改,我只能说牛,佩服佩服
    Akuikkk
        37
    Akuikkk  
       17 mins ago
    重构过多个项目,我的经验是必炸。
    你应该做好向上管理,明确告诉老板风险很大。真炸了你也打好预防针了。
    loading
        38
    loading  
       14 mins ago
    > 这个 cto 每次问他问题都说让我掌控这个项目,说什么对我技术能力认可的,我 tm 才刚入职 2 月而已。

    这是 PUA 话术,op 没感觉出来?
    zdjohn001
        39
    zdjohn001  
       14 mins ago
    做前端的搞数据库重构,感觉有点离谱,数据库里面道道还挺多的,迁移数据不少坑要填,一旦有问题可能很难恢复
    cando
        40
    cando  
       14 mins ago
    可能真就找个背锅的
    tommyshelbyV2
        41
    tommyshelbyV2  
       5 mins ago
    绝对不要迁移,老的就不要动,直接双写到新数据库。缓慢的过渡业务。
    longaiwp
        42
    longaiwp  
       3 mins ago
    看起来 AI 真的给了一些人盲目的自信,还能跑的东西你动它做什么,迁移个.NET 8 最多了。
    qiaoqiao881100
        43
    qiaoqiao881100  
    OP
       2 mins ago
    @loading 我肯定感觉出来了啊,都说 2,3 遍了,就是 pua 我呗,没办法,刚入职,又不好找工作。
    Ayanokouji
        44
    Ayanokouji  
       2 mins ago
    我自己写的,我熟悉业务的,我都不敢随便重构。虽然我有更好的设计,但是生产上依旧是缝缝补补。
    longaiwp
        45
    longaiwp  
       2 mins ago
    看了看,还要搞什么 Go ,不要看到什么都想搞点新的技术栈进来。
    qiaoqiao881100
        46
    qiaoqiao881100  
    OP
       1 min ago
    @longaiwp 哈哈哈是的, 现在项目是.net5 的 abp
    qiaoqiao881100
        47
    qiaoqiao881100  
    OP
       Just Now
    @yuyoung 这个老板不懂技术,估计是被这个 CTO 忽悠了可以搞重构优化性能, 又知道 go 的性能好。然后他可能有承诺了老板重构,没办法只能向下施压向上管理了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5049 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 130ms · UTC 09:44 · PVG 17:44 · LAX 02:44 · JFK 05:44
    ♥ Do have faith in what you're doing.