请问下,微服务化的应用,大量的 sql 更新怎么控制的呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
clacf
V2EX    问与答

请问下,微服务化的应用,大量的 sql 更新怎么控制的呢?

  •  
  •   clacf 307 天前 1108 次点击
    这是一个创建于 307 天前的主题,其中的信息可能已经有所发展或是发生改变。
    背景:我们公司的业务都是微服务化的,大概上百个服务。分成 10 个产品线的样子。由于测试,迭代,镜像版本持续更新。看镜像仓库,能够看到上百个小版本。现在做私有化部署,根本没法知道什么版本该用什么 sql ,至于后续的升级更是一团乱麻。当前能做的就是从生产环境拉下来数据库,脱敏处理后,直接部署。但是会造成很多报错,每次调测都耗费大量的人力

    需求: 不知道各位什么方法,能够管控起来如此众多的 sql 提交。我这边有两种方案:
    1. 开发各自管理自己的应用,每次定版后,必须携带数据库 sql 目录,目录下必须包含全量初始化数据,以及上一个版本到这个版本的增量数据。但是这个涉及到开发的配合问题,没法强制管理起来。
    2. 开发把数据库校验写道自己的应用中,每次部署,自动检测是升级,还是全量初始化。(这个肯定最漂亮,但是不知道实现起来,技术难度高不高)
    3. 数据库严格控制权限。开发想更新,必须要走专用管控流程,提交经过审核后,才能够同步到测试库。将来部署的时候,可以回溯所有的版本。

    各位大哥,有木有好点子可以提供下呢?
    7 条回复    2024-12-09 16:55:07 +08:00
    lasuar
        1
    lasuar  
       307 天前
    大量的 sql 是指 少量多次,还是一次很多?前者就加入版本化管理,后者由组长或数据库权限掌控者审核后直接执行。

    私有化部署,不是直接复制目前线上环境的数据表和代码吗?为什么要关注旧版本?
    clacf
        2
    clacf  
    OP
       307 天前
    @lasuar #1
    1. 每天少量多次推送到测试环境。每个月的一次迭代中会一次同步大批量 sql 到生产中。
    2. 线上环境,存在客户的信息。没法直接复制,脏数据清理非常耗时,各种关联。卖给私有化客户,肯定得尽量干干净净。
    aboat365
        3
    aboat365  
       307 天前   1
    你的问题是数据库版本控制?如果是,有大量的文章告诉你如何做,你只需要找到适合自己团队的方法即可。你提到每次升级都耗费大量人力,实际上没有办法能大量减少人力的消耗,因为这就是版本升级必须付出的代价。无非就是一些规范和步骤让这些事情做起来更有条理,避免遗漏。数据库版本控制有一些工具可以进行辅助,比如数据库结构比对,迁移脚本,数据库变更审计。总而言之,只能把版本发布工作做的更有条理,而不能大量压缩时间。顺便推荐一下我开发的 IDEA 插件《 Database Buddy 》,可以比对两个数据库的结构差异,并生成迁移脚本。
    lasuar
        4
    lasuar  
       307 天前
    第一点,这个是需要加入版本化管理的。
    第二点,只能提前整理好清理表的 sql 。
    clacf
        5
    clacf  
    OP
       307 天前
    @lasuar #4 这些都得协调大量的开发,统一这么干。需要想下怎么约束和审计。
    clacf
        6
    clacf  
    OP
       307 天前
    @aboat35 #3 谢谢,领教了
    lasuar
        7
    lasuar  
       307 天前
    第一点,在 sql 管理时需要进一步的优化,比如将 sql 按库/表分版本/文件存放,例如 sqls/v1.0.0/db_biz/t_user.sql ,这样在迭代时方便管理。另一个方式分需求目录存放,可以减少冲突。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5433 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 01:22 PVG 09:22 LAX 18:22 JFK 21:22
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86