MySQL行级修订节制
我正在为数据库中的数据建设版本节制.它具有存储修订,回滚和回滚回滚的成果.我正在行使的必要修改的数据库表如下: 工具 工具是首要工具,块是工具的分组部门,属性是块内数据的属性.属性以这种方法存储工具ID和块ID.很轻易为一个工具选择全部属性,而无需对块表举办另一次JOIN. 独一会真正改变的是属性,可是当属性改变时,受影响的块将被更新,而且每当块被更新时,工具也会被更新.此刻,我想到了办理此题目的两种差异要领. >建设三个带有_rev后缀的新表,这些表将仅存储工具的旧版本.现实工具还可以存储转速.可以这么说,我变动了三个差异的属性,这些属性超过三个块,因此,三个新行按块,三个属性和一个工具作为修订.因为这是第一次变动,因此在现实表中,修订版ID为1,因此其修订版为2. 要留意的一件事是,老是会有修订,块的数目可以从1到100不等.固然均匀约为1-15.属性可以从0到100变革.均匀值约莫为30.每个属性城市改变.这些工具颠末一个“阶段”,个中全部属性都必需由用户填写.添补完毕后,该工具即被存档,而且不再修改.全部工具都有一个对应的文件.因此,工具还将存储文件的当前哈希值(sha256).此哈希用于一再数据删除目标. 最佳谜底 向工具表的主键添加修订ID绝对是必经之路.您可以有多个勾当修订,而不必在表之间移动数据.对付多个表,您将发明编写回滚算法很难在保持完备性束缚的环境下移动数据,尤其是在体系正在起劲开拓的环境下尤其坚苦. 假如修订是在人工时刻内建设的,则简朴的时刻戳记可以用作修订ID.不然,只需行使整数作为修订版本号-我已经实现了CVS样式隐瞒的修订版本号,但愿没有.假现在后有人要求行使此成果,则可以在单独的表中跟踪派生汗青记录. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |