我正在为数据库中的数据创建版本控制.它具有存储修订,回滚和回滚回滚的功能.我正在使用的需要修改的数据库表如下:
对象
object_chunks
object_attributes
对象是主要对象,块是对象的分组部分,属性是块内数据的属性.属性以这种方式存储对象ID和块ID.很容易为一个对象选择所有属性,而无需对块表进行另一次JOIN.
唯一会真正改变的是属性,但是当属性改变时,受影响的块将被更新,并且每当块被更新时,对象也会被更新.现在,我想到了解决此问题的两种不同方法.
>创建三个带有_rev后缀的新表,这些表将仅存储对象的旧版本.实际对象还可以存储转速.可以这么说,我更改了三个不同的属性,这些属性跨越三个块,因此,三个新行按块,三个属性和一个对象作为修订.由于这是第一次更改,因此在实际表中,修订版ID为1,因此其修订版为2.
>我只是简单地执行上述操作,但是我没有单独的表,而是将其存储在同一表中.
要注意的一件事是,总是会有修订,块的数量可以从1到100不等.虽然平均约为1-15.属性可以从0到100变化.平均值大约为30.每个属性都会改变.这些对象经过一个“阶段”,其中所有属性都必须由用户填写.填充完毕后,该对象即被存档,并且不再修改.所有对象都有一个对应的文件.因此,对象还将存储文件的当前哈希值(sha256).此哈希用于重复数据删除目的.
最佳答案