有哪些方法可以检验服务端数据库数据和客户端数据的一致性? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
nnegier

有哪些方法可以检验服务端数据库数据和客户端数据的一致性?

  •  
  •   nnegier Jan 10, 2024 1991 views
    This topic created in 839 days ago, the information mentioned may be changed or developed.

    服务端数据库:MySQL 。
    手机端数据库:SQLite 。
    软件本地有一份数据,云端数据是本地数据的备份,没什么区别。

    我初步的想法,就是挨个比较它们的字段 id ,但是有点担心性能问题。

    14 replies    2024-01-11 22:17:24 +08:00
    v2hh
        1
    v2hh  
       Jan 10, 2024
    md5 比对?
    linauror
        2
    linauror  
       Jan 10, 2024
    后一条依次存前一条的特征,这样直接对比最后一条数据就可以了
    johnnyyeen
        3
    johnnyyeen  
       Jan 10, 2024
    按一定规则做数字摘要
    siweipancc
        4
    siweipancc  
       Jan 10, 2024 via iPhone
    楼上说的,id 跟数据 md5 的表,数据变动主动维护,传递这个表就行,记得加 audit 时间列
    815979670
        5
    815979670  
       Jan 10, 2024
    通过 crc32 / md5 生成校验码
    kuituosi
        6
    kuituosi  
       Jan 10, 2024
    分段比较 hash 或者 id
    如果只比较行数 id 就够了,如果担心内容不一样就比较 hash
    tool2d
        7
    tool2d  
       Jan 10, 2024
    既然说了"云端数据是本地数据的备份",那就是走主从备份流程。完全不担心内容数据是否一致,这个是备份协议考虑的。

    你只需要把修改过的 row 同步过去就可以了。

    一般 row 都会有最后修改日期,如果你每天同步一次,那么所有提交 row 对象就是 24 小时内变动过的。
    nnegier
        8
    nnegier  
    OP
       Jan 10, 2024
    @kuituosi #6 比较内容,是把表格里面的所有数据读出来然后哈希吗?
    kuituosi
        9
    kuituosi  
       Jan 10, 2024
    @nnegier 看你的需求和实现了,全部 hash 最保险就是要多花时间
    nnegier
        10
    nnegier  
    OP
       Jan 10, 2024
    @tool2d #7 仅靠时间我可能不行,因为我用的是 WebSocket 全双工通信,而且 1 对多 Client 还可能有多个
    tool2d
        11
    tool2d  
       Jan 10, 2024
    @nnegier 比如有三条记录需要更新,你客户端用 websocket 发了三条数据,最后服务器只收到一条半数据,那么服务器的最后修改时间,就只写到第一条的时间。

    下次客户端再更新,后两条在修改时间以外,都要重新上传的。
    Beats
        12
    Beats  
       Jan 10, 2024
    md5 crc 啥的
    nnegier
        13
    nnegier  
    OP
       Jan 11, 2024
    @Beats
    @siweipancc
    @linauror
    我还有一个疑问,如果 Hash 比较发现不一样,怎么快速找出那个不一样的表项位置呢?
    Beats
        14
    Beats  
       Jan 11, 2024
    @nnegier 全局 hash 、局部 hash ,粒度你自己把握,确定到某一块之后再全量 diff 这一块的内容
    About     Help     Advertise     Blog     API     FAQ     Solana     1142 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 45ms UTC 18:12 PVG 02:12 LAX 11:12 JFK 14:12
    Do have faith in what you're doing.
    ubao msn 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