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

关于 zero downtime migration 的疑问

  •  
  •   siteshen · 2014-08-15 10:18:22 +08:00 · 3197 次点击
    这是一个创建于 3751 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://www.honeybadger.io/blog/2013/08/06/zero-downtime-migrations-of-large-databases-using-rails-postgres-and-redis

    1. Make sure you update both representations when new records are saved
    2. Use the new data when possible, but fall back to the old data
    3. Remove this ASAP. It's ugly as sin.

    我的思路和这篇文章提到的基本一致,为保证服务一直可用,不停机升级数据库。方案如下:
    1. 后台程序完成大部分(老)数据的升级;
    2. 上线新代码,CRUD操作时升级相关数据,然后走新流程;
    3. 升级完成后移除兼容性代码。

    但按同事的说法,只需要第一个就可以了,升级期间生成的数据加个标记,后续再用脚本处理,加上第二个会影响用户体验。
    我的想法是,第二步是个保护措施(在第一步和第二步上新代码期间一定是有个时间差,期间的数据要标记再处理感觉会更麻烦),能保证数据的正确性,为了这个即使牺牲很小一部分的的体验也可以接受。如果按同事的方法,这个处理何时是个头(有种耗时是1, 1/10, 1/100的等差数列的感觉)。

    大家对这个问题怎么看?我隐约觉得为了正确性加上第二步是有必要的,但想得不是很清楚,没办法说服同事。求说服/帮忙说服同事。
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2815 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 14:57 · PVG 22:57 · LAX 06:57 · JFK 09:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.