V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
m939594960
V2EX  ›  问与答

线上在运营的程序 需要添加/修改很多功能的时候 数据库应该怎么处理

  •  1
     
  •   m939594960 · 2016-01-10 18:33:15 +08:00 · 1849 次点击
    这是一个创建于 3084 天前的主题,其中的信息可能已经有所发展或是发生改变。
    线上在运营的程序
    需要添加 /修改很多功能的时候
    我要对数据库也进行大量的修改 数据库这方面我怎样进行修改 才能保证没有问题呢?
    3 条回复    2016-01-10 19:29:23 +08:00
    bdbai
        1
    bdbai  
       2016-01-10 18:44:11 +08:00 via iPhone
    用 ORM 和 migration ,上线只要跑一下命令就行,数据库操作交给框架。
    lecher
        2
    lecher  
       2016-01-10 18:50:25 +08:00
    既然都这么问了,业务量应该不是很大的。
    1.数据库修改是否影响原有业务,如果影响,那说明业务量不大,做好备份挑个人少的时间升级就好了。
    2.程序修改造成的重启服务是否影响业务的功能?反正业务量不大,挑个半夜的时段,重启一下服务器好了。

    上面只是调侃,实际上大一点的系统升级功能都会考虑这几个问题。
    1.数据库升级的新业务是否影响旧功能,非优化性能的场景,尽可能不要去改动旧业务相关的数据库结构和配置。
    2.程序升级是否会修改旧业务的功能,修复 bug 除外,正常情况都尽可能兼容旧的业务不改动,同时做数据读写异常处理,保证即使新程序读写的是旧数据库也只是报友好的异常给用户而不是直接报错崩溃。
    这两个问题都解决了,新的数据库修改和代码更新测试确认没有问题才可能升级到线上的环境。一定要改的,都会做业务迁移,在新的服务器做好升级和数据迁移之后,可以无缝升级的业务就把旧的业务请求转发到新服务器上面。不可以的就选个时间锁住主数据库的写入功能,满足只读业务的情况下升级旧的数据库和代码。
    m939594960
        3
    m939594960  
    OP
       2016-01-10 19:29:23 +08:00
    @bdbai @lecher 我大概是懂了 我细细琢磨一下 谢谢啦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3156 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 11:35 · PVG 19:35 · LAX 04:35 · JFK 07:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.