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

如何记录文本变更历史并保存至数据库,且能方便回溯至任意历史版本?

  •  
  •   anzu · 2021-11-11 11:57:24 +08:00 · 788 次点击
    这是一个创建于 1110 天前的主题,其中的信息可能已经有所发展或是发生改变。
    虽然可以通过一些文本对比的工具自己写一套代码,但感觉好麻烦。
    比如保存了几百万的网页,并持续追踪内容变更,想把每个网页变更记录保存至数据库并不时查看。希望每次只保存变更而不是全文本,类似 git ,应该有类似的库吧?
    5 条回复    2021-11-11 14:10:41 +08:00
    czfy
        1
    czfy  
       2021-11-11 12:52:47 +08:00
    "保存了几百万的网页"

    你这是爬虫数据库?
    jifengg
        2
    jifengg  
       2021-11-11 13:50:58 +08:00
    正想说用 git ,你已经自己说了。不合适的话,找找“版本控制”还有啥的吧
    sillydaddy
        3
    sillydaddy  
       2021-11-11 14:06:02 +08:00
    用 git 吧

    “将 git 版本管理,集成到自己的应用中,既可以使用多进程起「命令行」,也可以集成 git 的「库」如 libgit2”:
    https://git-scm.com/book/en/v2/Appendix-B%3A-Embedding-Git-in-your-Applications-Command-line-Git
    https://git-scm.com/book/en/v2/Appendix-B%3A-Embedding-Git-in-your-Applications-Libgit2

    “将 git 用作 NoSQL 数据库,举例介绍了 git 中 commit, tree, blob 的概念”(我看了一下,还挺简单):
    https://www.kenneth-truyers.net/2016/10/13/git-nosql-database/

    “libgit2 库还可以适配自己的后端来存储内容,比如 MySQL ,sqlite ,redis 等”:
    https://github.com/libgit2/libgit2-backends

    “libgit2 的 API 非常丰富,简直吓人”(不过应该只需要极少的几个就足够了):
    https://libgit2.org/libgit2/#HEAD
    locoz
        4
    locoz  
       2021-11-11 14:08:40 +08:00 via Android
    用工具生成.patch 文件就好了吧?
    dingwen07
        5
    dingwen07  
       2021-11-11 14:10:41 +08:00 via iPhone
    既然你知道什么是版本管理,那我就不说了
    不过还有一个东西叫 wikipedia ,可能可以参考一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1008 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:57 · PVG 05:57 · LAX 13:57 · JFK 16:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.