一种基于版本的数据存储方法

文档序号:6463213阅读:294来源:国知局
专利名称:一种基于版本的数据存储方法
技术领域
本发明属于数据存储领域,具体涉及到 一种基于版本的数据存储方法。
背景技术
在一些网络存储应用中,比如网络存储系统中,通常情况下, 一个文件被
修改后重新保存时,需要将整个文件重新上传到服务器;比如,在客户端打开 一个文件A时,需要从服务器上面下载A文件的数据,A文件^修改后形成A,, 如果要保存A,的话,还需要把整个A,重新传输给服务器。由于文件被修改后, 通常情况下只有一小部分被修改,如果重新上传整个文件的话,将极大地浪费 网络资源。
比如从服务器下载一个10MB的文件a.doc,修改其中的一个字符后保存, 则需要把这个10MB的文件重新传输给服务器。如果我们能把修改前后的数据 差异提取出来传送给服务器,由于被修改的部分比较少,只需要传输非常少量 的数据。
本发明所介绍的内容中,数据以版本形式被组织。对数据的每次修改都会 形成一个新的版本,修改后的数据称为该新版本的版本数据,每个版本有一个 版本号,该版本号唯一标识形成数据的最后一次修改的先后顺序,版本数据用 V[x]表示,其中x代表数据的版本号。比如版本l(V[l])被修改后就形成版本 2(V[2]),版本2被修改以后就形成版本3(V[3]),这里的1,2,3标识数据被修改的 先后顺序,版本号比较小的数据称为版本号比较大的数据的历史版本;两个版 本数据之间的差异被提取出来以后形成差异数据,版本号较'J、的数据的称为差 异数据的源数据,版本号较大的数据称为差异数据的目标数据,差异数据用 V(x,y)来表示,其中x表示源数据的版本号,简称源版本号,y代表目标数据的 版本号,简称目标版本号。
比如,我们把一个数据V[l]修改以后成为V[2],则V[l]和V[2]的差异数据 为V[1,2];在存储的时候只需要存储V[1]和V[1,2],当需要使用V[2]的数据时, 根据V[l]和V[l,2]合并成V[2]。
为了便于说明,我们把空数据当作任何数据的历史版本,也就是说,对于 任何数据,都可以认为他们是由空数据直接或者间接修改后得到的,即空数据当作任何数据的第0个版本。因此,我们把版本数据V[x]认为是针对版本0的 差异数据,记为V
。即我们也把上面提到的V[l], V[2], V[3]当作V[O,l], V
, V

容易明白,这里用版本来组织数据只是为了便于说明数据所被修改的顺序, 以及说明差异数据是代表的是哪两个数据的差异。对于这些名称和组织方式的 改变并不影响本发明的本质。
在现有的方法中,客户端在保存数据时每次都用修改之前的版本作为源版 本,比如对V[2]进行修改时就用V[2]作为源版本,对V[3]进行修改时就把V[3] 作为源版本。但是在实际应用中,经过一系列修改后,服务器上面将存在V[O,l], V[1,2], V[2,3], V[3,4]…V[n-l,n]这些数据。在实践中,所有这些差异数据的大 小总和将远远超过V[n]数据的大小。
为了避免这种情况,本发明通过选择特定历史版本作为源版本,有效降低 了数据冗余程度。例如,当服务器上存在V[O,l], V[l,2], V[2,3], V[3,4]…V[n-l,n] 的时候,对V[n]进行修改保存时,如果选择版本数据V
作为源数据,将产 生差异数据V[2,n+1],需要的时候只需将V
,V[l,2],V[2,n+l]三个差异数据合 并就能够得到V[n+1],这种情况下,只有这三个差异数据是必要的,其他服务 器上的差异数据都不是必要的,可以将其删除以节省存储空间。采用这种方法, 将大大降低服务器的空间占用。
为了便于进一步说明,这里解释一下本发明中涉及到的一些概念。
版本路径定义为合成一个版本数据时所用到的差异数据的集合。比如为了
那么就称集合(V
,V[1,2],V[2,5])为版本V
的版本路径。对于给定版本的 所有的版本路径中,差异数据大小总和最小的版本路径称为最优版本路径。
版本冗余度定义为最优版本路径中所有差异数据大小的总和与对应版本数 据大小的比值。比如上述例子中,差异凝:据{ V
,V[l,2],V[2,5])it据大小的总 和与版本V
数据大小的比值称为版本V
的版本冗余度。
不在最新版本的最优版本路径中的差异数据称为冗余差异数据。 本发明所介绍的一种基于版本的数据存储方法中,在存储数据的过程中, 选择一个历史版本作为源版本,使得使用该历史版本作为源版本时,服务器上 数据的数据冗余度在可控的范围之内,从而有效控制存储器上面的版本冗余度, 节省存储器空间。 发明内容一种基于版本的数据存储方法,本发明包括以下特征
la).数据修改后,保存新数据与历史版本的差异数据; lb).使用数据时,根据差异数据生成所需要的数据;
上述所描述的一种基于版本的数据存储方法,其特征在于步骤la),数据修 改后,保存新数据与历史版本的差异数据,其详细步骤如下 2a).选择一个历史版本作为源版本;
2b).如果不存在源版本的版本数据,根据差异数据生成源版本的版 本数据;
2c).计算新数据和源版本的版本数据之间的差异,并将差异信息保
存到差异数据中; 2d).将差异数据存储到存储器;
上述步骤2a)选择一个历史版本作为源版本,其目的是选择一个能够将数 据冗余度控制在预期范围内的最新历史版本作为源版本,其具体步骤如下 3a).选择一个最新的历史版本作为备选版本; 3b).判断备选版本是否符合作为源版本的条件; 3c).如果是,则使用备选版本作为源版本,返回; 3d).如果存在更早的历史版本,则从中选择一个最新的版本作为备选 版本,转3b);否则以版本0作为源版本,返回; 上述步骤3b),判断备选版本是否符合作为源版本的条件。目的是为了将 服务器的数据冗余度控制在预期的范围,所述的预期范围是指系统预设的允许 的数据冗余度范围,比如0到2,即数据冗余度在0到2之间都视为可接受。其 具体步骤是
4a).计算数据冗余度;
4b).判断数据冗余度是否超过预期值,如果是则备选版本不符合作为 源版本的条件,否则,备选版本符合作为源版本的条件; 上述步骤4a)中计算数据冗余度,其所指的数据冗余度是指可以体现数据冗余 程度的指标,包括但不仅限于
5a).备选版本的数据冗余度;
5b).估计采用备选版本作为源版本的情况下新版本的数据冗余度; 5c).实际计算以备选版本作为源版本时所得到新版本的数据冗余度;具体采用何种方法,并不影响本发明的本质。
上述步骤la)数据修改后,保存新数据与历史版本的差异数据。在该步骤 中,当所述的历史版本不是服务器上的最新版本时,会使得部分差异数据变成 冗余差异数据。比如,当服务器上的版本是V[O,l], V[1,2], V[2,3]的情况下, 如果选择版本2作为源版本,服务器上面将会有V[O,l], V[l,2], V[2,3], V[2,4], 需要用到最新数据时只要用V[O,l], V[1,2], V[2,4]合并即可,V[2,3]将不会被用 到,所以是个冗余差异数据。为了节省存储空间,可以将冗余差异数据删除, 删除冗余差异数据的操作可以在每次保存数据时进行,也可以是系统定期执行 删除操作,还可以是在存储空闲空间小于预期值时执行,至于具体什么时候进 行,并不影响本发明的本质。
上述步骤lb)使用数据时,根据差异数据生成版本数据,具体包括以下步骤 6a).计算合成版本数据需要的差异数据; 6b).读取需要的差异数据; 6c).将差异数据合并成版本数据;
附闺说明


图1是分析相邻版本数据;
图2是利用差异数据合并成相邻版本数据;
图3是分析不相邻的版本数据得到差异数据;
图4是通过差异合并得到不相邻的版本数据;
图5是保存数据流程;
图6是选择源版本;
图7是生成需要的数据;
图8是计算需要的差异数据;
图9是将差异数据合并成需要的数据;
具体实施方式
下面结合说明书附图对本发明做进一步描述,下面所指的差异分析算法和
差异合并算法可以采用一些现有的算法,如美国专利号为5990810的专利中所 介绍的方法。
如图1所示,图1说明了一个版本数据V
被修改后形成另外一个版本 数据V
。将这两个版本数据进行差异分析后得到一个差异数据V[l,2]。
如图2所示,图2说明了如何利用源版本V
和图1中产生的差异凝:据 V[l,2]合成一个版本数据V

如图3所示,图3说明了 一个版本数据V
经过多次修改后形成多个版本 数据V
, V
, V
。将版本V
作为源版本,进行差异分析后得到 一个差异数据V[2,4]。
如图4所示,图4说明了如何利用源版本V
和差异数据V[2,4]合成版本 数据V

如图5所示,图5说明了保存数据时所需要的步骤
1) 选择一个历史版本作为源版本。
2) 如果源版本的版本数据不存在,根据差异数据合成源版本的版本数 据。
3) 计算新数据和源版本的版本数据之间的差异,并将差异信息保存到差 异数据中。
4) 将差异数据存储到存储器。
采用上述保存方法,当所述的源版本不是服务器上的最新版本时,会使得 部分差异数据变成冗余差异数据。为了节省存储空间,需要删除冗余差异数据, 删除冗余差异数据的操作可以在每次保存数据时进行,也可以是系统定期执行 删除操作,还可以是在存储空闲空间小于预期值时执行删除操作,至于具体什 么时候进行,并不影响本发明的本质。
如图6所示,图6说明了如何选择一个历史版本作为源版本。
1) 选择一个最新的历史版本作为备选版本;
2) 判断备选版本是否符合作为源版本的条件
3) 如果是,则使用备选版本作为源版本,返回;
4) 如果不存在更早的历史版本,则以版本O作为源版本,返回;
5) 从更早的历史版本中,选择一个最新的版本作为备选版本,转步骤 2);上述步骤2),判断备选版本是否符合作为源版本的条件。目的是为了将服
务器的数据冗余度控制在预期的范围内。其具体方法是
1) 计算数据冗余度;这里所指的数据冗余度可以是备选版本的数据冗 余度,也可以是估计采用备选版本作为源版本的情况下新版本的数 据冗余度,还可以实际计算以备选版本作为源版本时所得到新版本 的数据冗余度,还可以是其他可以体现数据冗余程度的指标,具体 采用何种方法,并不影响本发明的本质;
2) 判断数据冗余度是否超过预定值,如果是则备选版本不符合作为源 版本的条件,否则,备选版本符合作为源版本的条件;
如图7所示,图7说明了如何生成需要的版本凄t据。当用户需要用到某个 版本的数据时,采用以下步骤生成该版本的版本数据
1) 计算合成版本数据需要的差异数据;
2) 读取需要的差异数据;
3) 将差异数据合并成版本数据;
如图8所示,图8是计算合成版本数据需要的差异数据。计算方法是寻找 一条从所需要版本(下面称目标版本)到版本0的路径,路径上的所有差异数 据就是需要的差异数据。图8是计算合成版本数据所需要差异数据的一个示例 流程,其具体步骤如下
1) 设置当前版本号为目标版本数据的版本号;
2) 取目标版本号等于当前版本号的差异数据;
3) 将该差异数据标记为需要的差异数据;
4) 设置当前版本号为该差异数据的源版本号;
5) 如果当前版本号为0,则结束,否则,转步骤2)
如图9所示,图9是将图8所得到的差异数据合并成目标版本数据的一个 示例流程,其具体步骤如下
1 )将源版本号为0的差异数据作为源数据;
2) 如果源数据的目标版本号不小于目标版本的版本号,转5);
3) 查找源版本号与源数据的目标版本号相同的差异数据;4) 将找到的差异数据与源数据合并,设置源数据等于合并所得到的版 本数据。转2);
5) 设置目标版本的数据等于源数据的数据。
权利要求
1。一种基于版本的数据存储方法,本发明包括以下特征1a). 数据修改后,选择一个历史版本做为源版本,保存新数据与源版本的差异数据;1b). 使用数据时,计算需要的差异数据,根据差异数据生成所需要的数据。
2、 根据权利要求1所述的一种基于版本的数据存储方法,其特征在于步骤 la),所述选择一个历史版本做为源版本,保存新数据与源版本的差异数据, 其详细步骤如下2a).选择一个历史版本作为源版本;2b).如果不存在源版本的版本数据,计算源版本的版本数据;2c).计算新数据和源版本的版本数据之间的差异,并将差异信息保存到差异数据中; 2d).将差异数据存储到存储器。
3、 根据权利要求2所述,其步錄2a)选择一个历史版本作为源版本,具体指 选择一个符合条件的最新历史版本作为源版本。所述的符合条件是指使用该历 史版本作为源版本时,能够把存储冗余度控制在预期的范围内。
4、 根据权利要求3所述的一种基于版本的数据存储方法,所述的把存储冗余度 控制在预期的范围内,其所指的存储冗余度是指可以体现数据冗余程度的指标, 包括但不仅限于4a).备选版本的数据冗余度。4b).估计采用备选版本作为源版本的情况下新版本的数据冗余度。 4c).实际计算以备选版本作为源版本时所得到新版本的数据冗余度。 具体采用何种方法,并不影响本发明的本质。
5、 根据权利要求1所述的一种基于版本的数据存储方法,其特征在于步骤la)数 据修改后,保存新数据与源版本的差异数据。在本步骤中,当所述的源版本不 是服务器上的最新版本时,会使得部分差异数据变成冗余差异数据。为了节省 存储空间,需要剩除冗余差异数据,删除冗余差异数据的操作可以在每次保存数据时进行,也可以是系统定期执行删除操作,还可以是在存储空闲空间小于 预期值时执行,至于具体什么时候进行,并不影响本发明的本质。
6、根据权利要求1所述的一种基于版本的数据存储方法,其中特征在于步骤lb) 使用数据时,计算需要的差异数据,根据差异数据生成所需要的数据,具体包括以下步骤6a).计算合成版本数据需要的差异数据;6b).读取需要的差异数据;6c).将差异数据合并成版本数据。
全文摘要
本发明属于数据存储领域,具体涉及到一种基于版本的数据存储方法。在本发明所采用的方法中,使用数据时,从存储器读取需要的差异数据,然后把差异数据合并成所需要的数据;保存数据时,选择一个历史版本作为源版本,计算当前数据和源版本的版本数据之间的差异,并且把差异数据存储到存储器,同时可以把冗余的差异数据删除。采用本发明介绍的方法,修改数据时,存储器只保存必要的差异数据,提高了数据存储的效率。
文档编号G06F17/30GK101546318SQ20081010281
公开日2009年9月30日 申请日期2008年3月27日 优先权日2008年3月27日
发明者林兆祥 申请人:林兆祥
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1