加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL行级修订控制

发布时间:2021-01-25 09:26:26 所属栏目:编程 来源:网络整理
导读:我正在为数据库中的数据创建版本控制.它具有存储修订,回滚和回滚回滚的功能.我正在使用的需要修改的数据库表如下: 对象 object_chunks object_attributes 对象是主要对象,块是对象的分组部分,属性是块内数据的属性.属性以这种方式存储对象ID和块ID.很容易为

我正在为数据库中的数据创建版本控制.它具有存储修订,回滚和回滚回滚的功能.我正在使用的需要修改的数据库表如下:

对象
object_chunks
object_attributes

对象是主要对象,块是对象的分组部分,属性是块内数据的属性.属性以这种方式存储对象ID和块ID.很容易为一个对象选择所有属性,而无需对块表进行另一次JOIN.

唯一会真正改变的是属性,但是当属性改变时,受影响的块将被更新,并且每当块被更新时,对象也会被更新.现在,我想到了解决此问题的两种不同方法.

>创建三个带有_rev后缀的新表,这些表将仅存储对象的旧版本.实际对象还可以存储转速.可以这么说,我更改了三个不同的属性,这些属性跨越三个块,因此,三个新行按块,三个属性和一个对象作为修订.由于这是第一次更改,因此在实际表中,修订版ID为1,因此其修订版为2.
>我只是简单地执行上述操作,但是我没有单独的表,而是将其存储在同一表中.

要注意的一件事是,总是会有修订,块的数量可以从1到100不等.虽然平均约为1-15.属性可以从0到100变化.平均值大约为30.每个属性都会改变.这些对象经过一个“阶段”,其中所有属性都必须由用户填写.填充完毕后,该对象即被存档,并且不再修改.所有对象都有一个对应的文件.因此,对象还将存储文件的当前哈希值(sha256).此哈希用于重复数据删除目的. 最佳答案 向对象表的主键添加修订ID绝对是必经之路.您可以有多个活动修订,而不必在表之间移动数据.对于多个表,您将发现编写回滚算法很难在保持完整性约束的情况下移动数据,尤其是在系统正在积极开发的情况下尤其困难.

如果修订是在人工时间内创建的,则简单的时间戳记可以用作修订ID.否则,只需使用整数作为修订版本号-我已经实现了CVS样式点缀的修订版本号,希望没有.如果以后有人要求使用此功能,则可以在单独的表中跟踪派生历史记录.

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读