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

web 中信息的修改历史该怎么记录?

  •  
  •   tonghuashuai ·
    tonghs · 2015-08-26 12:31:31 +08:00 · 2314 次点击
    这是一个创建于 3385 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如用户信息修改的时候,保留每一次修改的历史记录,这个有没有什么常用的实现方式?
    如果用户信息分散到几个不同的表中又该怎么弄呢?

    求一些好的思路或推荐一些学习资料。
    6 条回复    2015-08-26 14:20:08 +08:00
    realpg
        1
    realpg  
       2015-08-26 12:36:18 +08:00
    是要查看用还是要回溯用?

    以前做过一个传销的程序……哦对 叫直销
    要求各种回溯时间点能力……
    几个朋友设计出一个 DIY 的长期事务系统,对每个数据库的写操作都保留了反操作 SQL ,可以各种复制库后用反操作 SQL 记录回溯……

    如果单纯审计,可以直接扩展一下 oplog ,每一步都记录 XXX 在 XXX 时间把 XXX 从 XXX 修改成了 XXX
    choury
        2
    choury  
       2015-08-26 12:42:10 +08:00 via Android
    用 mysql 的 binlog ,我们的游戏回档都是这么搞的
    tonghuashuai
        3
    tonghuashuai  
    OP
       2015-08-26 14:03:54 +08:00
    @choury 如果实现方式不在数据库级别呢?在应用级别有没有好的方式?
    manhere
        4
    manhere  
       2015-08-26 14:06:04 +08:00
    最简单的给信息加个版本字段
    feiyuanqiu
        5
    feiyuanqiu  
       2015-08-26 14:11:46 +08:00
    方法很简单的,只要你数据库容量足够,设置一个字段用来表示数据是否在用,编辑的时候直接插入新数据,老数据更新一下是否在用字段就行
    前提是数据量不大,不然表增长很快的,可以定期把不用的老数据移到单独的表或者分区
    tjxjj
        6
    tjxjj  
       2015-08-26 14:20:08 +08:00
    要解决这个问题很简单,但是不谈数据量,场景,就无法提供解决方案
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2856 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:33 · PVG 20:33 · LAX 04:33 · JFK 07:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.