在数据库中存储差异的最紧凑方式是什么?

2024-05-27

我想实现类似于维基媒体的修订历史的东西?最好使用的 PHP 函数/库/扩展/算法是什么?

我希望差异尽可能紧凑,但我很高兴只能显示每个修订版与其同级修订版之间的差异,并且一次只能回滚一个修订版。

在某些情况下,只有几个字符可能会发生变化,而在其他情况下,整个字符串可能会发生变化,因此我很想了解某些技术对于小变化是否比大变化更好,以及在某些情况下,简单地进行更改是否更有效存储完整副本。

使用 Git 或 SVN 之类的东西支持整个系统似乎有点极端,而且我真的不想将文件存储在磁盘上。


完整存储每条记录比存储它们的差异要容易得多。然后,如果您想要两个修订版的差异,您可以根据需要使用生成一个PECLText_Diff library http://www.horde.org/libraries/Horde_Text_Diff/library.

我喜欢将记录的所有版本存储在一个表中,并使用以下命令检索最新版本MAX(revision)、“当前”布尔属性或类似属性。其他人更喜欢非规范化并拥有一个保存非当前修订的镜像表。

如果您存储差异,您的架构和算法会变得更加复杂。然后,您需要存储至少一个“完整”修订版和多个“差异”版本,并在需要完整版本时从一组差异重建完整版本。 (这就是 SVN 存储内容的方式。Git 存储每个修订版的完整副本,而不是差异。)

程序员的时间很昂贵,但磁盘空间通常很便宜。请考虑完整存储每个修订是否确实是一个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在数据库中存储差异的最紧凑方式是什么? 的相关文章

  • 按文件名对 $_FILES 进行排序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 他俩 如您所知 在新的 HTML5 中 您可以非常轻松地上传多个文件 但我这里的问题是如何按列 名称 对 FILES 数组进行排序 这是
  • Yii2 - 错误请求 (#400) |前端和后端cookie

    仅当我打开时才会出现此问题frontend and backend在相同的browser 设想 与后端交互 gt 切换选项卡 gt 与前端交互 gt 切换选项卡返回 gt 与后端交互 gt 错误请求 400 Cookie 后端 identi
  • gem install mysql:无法构建 gem 本机扩展 (Mac Lion)

    我为 Mac OS X Lion 安装了 MySQL 5 5 27 来自 dmg 现在我尝试安装 mysql gem gem install mysql Building native extensions This could take
  • PHP - 如何获取主要 HTML 内容,例如 Firefox 中的阅读器模式

    在 android Firefox 应用程序和 safari iPad 中 我们只能通过 阅读器模式 阅读主要内容 阅读更多 http support mozilla org en US kb how enable reader mode
  • MySQL 查询到 CSV [重复]

    这个问题在这里已经有答案了 有没有一种简单的方法来运行MySQL查询来自linux命令行并以csv格式输出结果 这就是我现在正在做的事情 mysql u uid ppwd D dbname lt lt EOQ sed e s g tee l
  • 如何从网站网址中隐藏 .html 扩展名

    我知道这个问题以前曾被问过 但有人知道隐藏 html 扩展名的好方法吗 我已经尝试了许多代码和许多答案https stackoverflow com https stackoverflow com 但我没有看到结果 那是我再问你一次 我有一
  • 如何在 GitHub Action 中使用不同版本的 PHP 进行测试

    我有一些 PHP 代码 其中包含使用以下命令运行的测试PHPUnit并想对其进行测试GitHub Actions 我在他们的文档中找不到测试 PHP 包的方法 我想使用不同版本的 PHP 进行测试 但他们只有最新的版本7 3安装 您可以添加
  • 是否可以从本地文件系统获取TFS更改集编号?

    我有一个解决方案的本地副本 与TFS绑定 是否可以在不调用服务器的情况下从本地文件系统获取当前更改集信息 如果您可以在 assembly AssemblyFileVersion 1 0 0 RevisionNumber 您可以在那里设置更改
  • 如何使用 Perl 更改 mysql 密码

    我需要使用 Perl 脚本更改一些 mysql 密码 以下内容在更改数据库条目时有效 但是当我针对 mysql 用户更改修改它时 它将它们重置为空白密码 最后 刷新权限 也很好 但我还没有找到方法 usr bin perl use DBI
  • 覆盖 FOS 用户包中的“更改密码”模板

    我做了一些研究 遗憾的是找不到任何帮助 因此 我将 FOSUserBundle ChangePasswordAction 渲染到我的模板中 但它显示供应商提供的默认模板 我的渲染控制器的模板 block body h2 Einstellun
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • CodeIgniter:My_Lang 中的 get_instance

    我发现这个有用的国际化代码 http pastebin com SyKmPYTX http pastebin com SyKmPYTX 一切正常 除了我无法在此类中使用 CI 函数 我想从 DB 设置 languages 和 special
  • 如何处理 REST api 中的 php 通知、警告和错误?

    在 REST API 中 200 响应表明操作成功 PHP 默认情况下直接在响应正文中输出错误消息 而不更改响应代码 在 SPA 中 用户无法直接看到响应文本 因此 当应用程序未按预期工作时 我通过 FireBug 检查响应正文 以检查可能
  • PHP 接口有属性吗?

    PHP 中的接口有属性 还是只有方法 您可以在 DocBlock 中为接口声明属性 然后 IDE 将提示接口的这些属性 PhpStorm 会这样做 但这不会强制在实现类中实际实现这些字段 例如 property string passwor
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • php - 解析html页面

    div divbox div p para1 p p para2 p p para3 p table class table tr td td tr table p para4 p p para5 p 有人可以告诉我如何解析这个 html
  • Jquery一键提交多个同名表单

    我有动态创建的循环表单 我需要一键提交所有表单 我正在遵循下面的代码 你能建议我怎么做吗 谢谢
  • session_start():无法解码会话对象

    我有时在使用 CodeIgniter 时遇到以下问题 错误 2019 03 05 19 57 26 gt 严重性 警告 gt session start 无法解码会话对象 会话已被销毁 system libraries Session Se
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows

随机推荐