著录项信息
专利名称 | 一种基于版本的数据存储方法 |
申请号 | CN200810102815.5 | 申请日期 | 2008-03-27 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2009-09-30 | 公开/公告号 | CN101546318 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 林兆祥 | 申请人地址 | 北京市朝阳区大屯路西奥中心A2201
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京兴宇中科科技开发股份有限公司 | 当前权利人 | 北京兴宇中科科技开发股份有限公司 |
发明人 | 林兆祥 |
代理机构 | 暂无 | 代理人 | 暂无 |
摘要
本发明属于数据存储领域,具体涉及一种基于版本的数据存储方法。在本发明所采用的方法中,使用数据时,从存储器读取需要的差异数据,然后把差异数据合并成所需要的数据;保存数据时,选择一个历史版本作为源版本,计算当前数据和源版本的版本数据之间的差异,并且把差异数据存储到存储器,同时可以把冗余的差异数据删除。采用本发明介绍的方法,修改数据时,存储器只保存必要的差异数据,提高了数据存储的效率。
1.一种基于版本的数据存储方法,所述方法包括以下特征:
1a)数据修改后,选择一个历史版本做为源版本,保存新数据与源版本的差异数据;具体包括:2a)选择一个历史版本作为源版本;2b)如果不存在源版本的版本数据,计算源版本的版本数据;2c)计算新数据和源版本的版本数据之间的差异,并将差异信息保存到差异数据中;2d)将差异数据存储到存储器;
1b)使用数据时,计算需要的差异数据,根据差异数据生成所需要的数据。
2.根据权利要求1所述的一种基于版本的数据存储方法,其步骤2a)选择一个历史版本作为源版本,具体指:选择一个符合条件的最新历史版本作为源版本;所述的符合条件是指使用该历史版本作为源版本时,能够把存储冗余度控制在预期的范围内。
3.根据权利要求2所述的一种基于版本的数据存储方法,所述的把存储冗余度控制在预期的范围内,其所指的存储冗余度是指能体现数据冗余程度的指标,包括:
4a)备选版本的数据冗余度;
4b)估计采用备选版本作为源版本的情况下新版本的数据冗余度;
4c)实际计算以备选版本作为源版本时所得到新版本的数据冗余度;
具体采用何种方法,并不影响本发明的本质。
4.根据权利要求1所述的一种基于版本的数据存储方法,其特征在于,步骤1a) 数据修改后,保存新数据与源版本的差异数据;在本步骤中,当所述的源版本不是服务器上的最新版本时,会使得部分差异数据变成冗余差异数据;为了节省存储空间,需要删除冗余差异数据,删除冗余差异数据的操作在每次保存数据时进行,或者系统定期执行删除操作,又或者在存储空闲空间小于预期值时执行,至于具体什么时候进行,并不影响本发明的本质。
5.根据权利要求1所述的一种基于版本的数据存储方法,其中特征在于步骤1b)使用数据时,计算需要的差异数据,根据差异数据生成所需要的数据,具体包括以下步骤:
6a)计算合成版本数据需要的差异数据;
6b)读取需要的差异数据;
6c)将差异数据合并成版本数据。
一种基于版本的数据存储方法\n技术领域\n[0001] 本发明属于数据存储领域,具体涉及到一种基于版本的数据存储方法。\n背景技术\n[0002] 在一些网络存储应用中,比如网络存储系统中,通常情况下,一个文件被修改后重新保存时,需要将整个文件重新上传到服务器;比如,在客户端打开一个文件A时,需要从服务器上面下载A文件的数据,A文件修改后形成A’,如果要保存A’的话,还需要把整个A’重新传输给服务器。由于文件被修改后,通常情况下只有一小部分被修改,如果重新上传整个文件的话,将极大地浪费网络资源。\n[0003] 此如从服务器下载一个10MB的文件a.doc,修改其中的一个字符后保存,则需要把这个10MB的文件重新传输给服务器。如果我们能把修改前后的数据差异提取出来传送给服务器,由于被修改的部分此较少,只需要传输非常少量的数据。\n[0004] 本发明所介绍的内容中,数据以版本形式被组织。对数据的每次修改都会形成一个新的版本,修改后的数据称为该新版本的版本数据,每个版本有一个版本号,该版本号唯一标识形成数据的最后一次修改的先后顺序,版本数据用V[x]表示,其中x代表数据的版本号。比如版本1(V[1])被修改后就形成版本2(V[2]),版本2被修改以后就形成版本\n3(V[3]),这里的1,2,3标识数据被修改的先后顺序,版本号比较小的数据称为版本号比较大的数据的历史版本;两个版本数据之间的差异被提取出来以后形成差异数据,版本号较小的数据的称为差异数据的源数据,版本号较大的数据称为差异数据的目标数据,差异数据用V(x,y)来表示,其中x表示源数据的版本号,简称源版本号,y代表目标数据的版本号,简称目标版本号。\n[0005] 比如,我们把一个数据V[1]修改以后成为V[2],则V[1]和V[2]的差异数据为V[1,2];在存储的时候只需要存储V[1]和V[1,2],当需要使用V[2]的数据时,根据V[1]和V[1,2]合并成V[2]。\n[0006] 为了便于说明,我们把空数据当作任何数据的历史版本,也就是说,对于任何数据,都可以认为他们是由空数据直接或者间接修改后得到的,即空数据当作任何数据的第0个版本。因此,我们把版本数据V[x]认为是针对版本0的差异数据,记为V[0,x]。即我们也把上面提到的V[1],V[2],V[3]当作V[0,1],V[0,2],V[0,3]。\n[0007] 容易明白,这里用版本来组织数据只是为了便于说明数据所被修改的顺序,以及说明差异数据是代表的是哪两个数据的差异。对于这些名称和组织方式的改变并不影响本发明的本质。\n[0008] 在现有的方法中,客户端在保存数据时每次都用修改之前的版本作为源版本,比如对V[2]进行修改时就用V[2]作为源版本,对V[3]进行修改时就把V[3]作为源版本。\n但是在实际应用中,经过一系列修改后,服务器上面将存在V[0,1],V[1,2],V[2,3],V[3,\n4]...V[n-1,n]这些数据。在实践中,所有这些差异数据的大小总和将远远超过V[n]数据的大小。\n[0009] 为了避免这种情况,本发明通过选择特定历史版本作为源版本,有效降低了数据冗余程度。例如,当服务器上存在V[0,1],V[1,2],V[2,3],V[3,4]...V[n-1,n]的时候,对V[n]进行修改保存时,如果选择版本数据V[0,2]作为源数据,将产生差异数据V[2,n+1],需要的时候只需将V[0,1],V[1,2],V[2,n+1]三个差异数据合并就能够得到V[n+1],这种情况下,只有这三个差异数据是必要的,其他服务器上的差异数据都不是必要的,可以将其删除以节省存储空间。采用这种方法,将大大降低服务器的空间占用。\n[0010] 为了便于进一步说明,这里解释一下本发明中涉及到的一些概念。\n[0011] 版本路径定义为合成一个版本数据时所用到的差异数据的集合。比如为了得到V[0,5],将V[0,1]和V[1,2]合并成V[0,2],再将V[0,2]和V[2,5]合成V[0,5],那么就称集合{V[0,1],V[1,2],V[2,5]}为版本V[0,5]的版本路径。对于给定版本的所有的版本路径中,差异数据大小总和最小的版本路径称为最优版本路径。\n[0012] 版本冗余度定义为最优版本路径中所有差异数据大小的总和与对应版本数据大小的比值。比如上述例子中,差异数据{V[0,1],V[1,2],V[2,5]}数据大小的总和与版本V[0,5]数据大小的比值称为版本V[0,5]的版本冗余度。\n[0013] 不在最新版本的最优版本路径中的差异数据称为冗余差异数据。\n[0014] 本发明所介绍的一种基于版本的数据存储方法中,在存储数据的过程中,选择一个历史版本作为源版本,使得使用该历史版本作为源版本时,服务器上数据的数据冗余度在可控的范围之内,从而有效控制存储器上面的版本冗余度,节省存储器空间。\n发明内容\n[0015] 一种基于版本的数据存储方法,本发明包括以下特征:\n[0016] 1a).数据修改后,保存新数据与历史版本的差异数据;\n[0017] 1b).使用数据时,根据差异数据生成所需要的数据;\n[0018] 上述所描述的一种基于版本的数据存储方法,其特征在于步骤1a),数据修改后,保存新数据与历史版本的差异数据,其详细步骤如下:\n[0019] 2a).选择一个历史版本作为源版本;\n[0020] 2b).如果不存在源版本的版本数据,根据差异数据生成源版本的版本数据;\n[0021] 2c).计算新数据和源版本的版本数据之间的差异,并将差异信息保存到差异数据中;\n[0022] 2d).将差异数据存储到存储器;\n[0023] 上述步骤2a)选择一个历史版本作为源版本,其目的是选择一个能够将数据冗余度控制在预期范围内的最新历史版本作为源版本,其具体步骤如下:\n[0024] 3a).选择一个最新的历史版本作为备选版本;\n[0025] 3b).判断备选版本是否符合作为源版本的条件;\n[0026] 3c).如果是,则使用备选版本作为源版本,返回;\n[0027] 3d).如果存在更早的历史版本,则从中选择一个最新的版本作为备选版本,转\n3b);否则以版本0作为源版本,返回;\n[0028] 上述步骤3b),判断备选版本是否符合作为源版本的条件。目的是为了将服务器的数据冗余度控制在预期的范围,所述的预期范围是指系统预设的允许的数据冗余度范围,比如0到2,即数据冗余度在0到2之间都视为可接受。其具体步骤是:\n[0029] 4a).计算数据冗余度;\n[0030] 4b).判断数据冗余度是否超过预期值,如果是则备选版本不符合作为源版本的条件,否则,备选版本符合作为源版本的条件;\n[0031] 上述步骤4a)中计算数据冗余度,其所指的数据冗余度是指可以体现数据冗余程度的指标,包括但不仅限于:\n[0032] 5a).备选版本的数据冗余度;\n[0033] 5b).估计采用备选版本作为源版本的情况下新版本的数据冗余度;\n[0034] 5c).实际计算以备选版本作为源版本时所得到新版本的数据冗余度;\n[0035] 具体采用何种方法,并不影响本发明的本质。\n[0036] 上述步骤1a)数据修改后,保存新数据与历史版本的差异数据。在该步骤中,当所述的历史版本不是服务器上的最新版本时,会使得部分差异数据变成冗余差异数据。比如,当服务器上的版本是V[0,1],V[1,2],V[2,3]的情况下,如果选择版本2作为源版本,服务器上面将会有V[0,1],V[1,2],V[2,3],V[2,4],需要用到最新数据时只要用V[0,1],V[1,\n2],V[2,4]合并即可,V[2,3]将不会被用到,所以是个冗余差异数据。为了节省存储空间,可以将冗余差异数据删除,删除冗余差异数据的操作可以在每次保存数据时进行,也可以是系统定期执行删除操作,还可以是在存储空闲空间小于预期值时执行,至于具体什么时候进行,并不影响本发明的本质。\n[0037] 上述步骤1b)使用数据时,根据差异数据生成版本数据,具体包括以下步骤:\n[0038] 6a).计算合成版本数据需要的差异数据;\n[0039] 6b).读取需要的差异数据;\n[0040] 6c).将差异数据合并成版本数据;\n附图说明\n[0041] 图1是分析相邻版本数据;\n[0042] 图2是利用差异数据合并成相邻版本数据;\n[0043] 图3是分析不相邻的版本数据得到差异数据;\n[0044] 图4是通过差异合并得到不相邻的版本数据;\n[0045] 图5是保存数据流程;\n[0046] 图6是选择源版本;\n[0047] 图7是生成需要的数据;\n[0048] 图8是计算需要的差异数据;\n[0049] 图9是将差异数据合并成需要的数据;\n具体实施方式\n[0050] 下面结合说明书附图对本发明做进一步描述,下面所指的差异分析算法和差异合并算法可以采用一些现有的算法,如美国专利号为5990810的专利中所介绍的方法。\n[0051] 如图1所示,图1说明了一个版本数据V[0,1]被修改后形成另外一个版本数据V[0,2]。将这两个版本数据进行差异分析后得到一个差异数据V[1,2]。\n[0052] 如图2所示,图2说明了如何利用源版本V[0,1]和图1中产生的差异数据V[1,2]合成一个版本数据V[0,2]。\n[0053] 如图3所示,图3说明了一个版本数据V[0,1]经过多次修改后形成多个版本数据V[0,2],V[0,3],V[0,4]。将版本V[0,2]作为源版本,进行差异分析后得到一个差异数据V[2,4]。\n[0054] 如图4所示,图4说明了如何利用源版本V[0,2]和差异数据V[2,4]合成版本数据V[0,4]。\n[0055] 如图5所示,图5说明了保存数据时所需要的步骤:\n[0056] 1)选择一个历史版本作为源版本。\n[0057] 2)如果源版本的版本数据不存在,根据差异数据合成源版本的版本数据。\n[0058] 3)计算新数据和源版本的版本数据之间的差异,并将差异信息保存到差异数据中。\n[0059] 4)将差异数据存储到存储器。\n[0060] 采用上述保存方法,当所述的源版本不是服务器上的最新版本时,会使得部分差异数据变成冗余差异数据。为了节省存储空间,需要删除冗余差异数据,删除冗余差异数据的操作可以在每次保存数据时进行,也可以是系统定期执行删除操作,还可以是在存储空闲空间小于预期值时执行删除操作,至于具体什么时候进行,并不影响本发明的本质。\n[0061] 如图6所示,图6说明了如何选择一个历史版本作为源版本。\n[0062] 1)选择一个最新的历史版本作为备选版本;\n[0063] 2)判断备选版本是否符合作为源版本的条件\n[0064] 3)如果是,则使用备选版本作为源版本,返回;\n[0065] 4)如果不存在更早的历史版本,则以版本0作为源版本,返回;\n[0066] 5)从更早的历史版本中,选择一个最新的版本作为备选版本,转步骤2);\n[0067] 上述步骤2),判断备选版本是否符合作为源版本的条件。目的是为了将服务器的数据冗余度控制在预期的范围内。其具体方法是:\n[0068] 1)计算数据冗余度;这里所指的数据冗余度可以是备选版本的数据冗余度,也可以是估计采用备选版本作为源版本的情况下新版本的数据冗余度,还可以实际计算以备选版本作为源版本时所得到新版本的数据冗余度,还可以是其他可以体现数据冗余程度的指标,具体采用何种方法,并不影响本发明的本质;\n[0069] 2)判断数据冗余度是否超过预定值,如果是则备选版本不符合作为源版本的条件,否则,备选版本符合作为源版本的条件;\n[0070] 如图7所示,图7说明了如何生成需要的版本数据。当用户需要用到某个版本的数据时,采用以下步骤生成该版本的版本数据:\n[0071] 1)计算合成版本数据需要的差异数据;\n[0072] 2)读取需要的差异数据;\n[0073] 3)将差异数据合并成版本数据;\n[0074] 如图8所示,图8是计算合成版本数据需要的差异数据。计算方法是寻找一条从所需要版本(下面称目标版本)到版本0的路径,路径上的所有差异数据就是需要的差异数据。图8是计算合成版本数据所需要差异数据的一个示例流程,其具体步骤如下:\n[0075] 1)设置当前版本号为目标版本数据的版本号;\n[0076] 2)取目标版本号等于当前版本号的差异数据;\n[0077] 3)将该差异数据标记为需要的差异数据;\n[0078] 4)设置当前版本号为该差异数据的源版本号;\n[0079] 5)如果当前版本号为0,则结束,否则,转步骤2)\n[0080] 如图9所示,图9是将图8所得到的差异数据合并成目标版本数据的一个示例流程,其具体步骤如下:\n[0081] 1)将源版本号为0的差异数据作为源数据;\n[0082] 2)如果源数据的目标版本号不小于目标版本的版本号,转5);\n[0083] 3)查找源版本号与源数据的目标版本号相同的差异数据;\n[0084] 4)将找到的差异数据与源数据合并,设置源数据等于合并所得到的版本数据。转\n2);\n[0085] 5)设置目标版本的数据等于源数据的数据;
法律信息
- 2015-05-13
未缴年费专利权终止
IPC(主分类): G06F 17/30
专利号: ZL 200810102815.5
申请日: 2008.03.27
授权公告日: 2013.01.16
- 2015-02-25
文件的公告送达
文件的公告送达失败
收件人: 汪英
文件名称: 视为未提出通知书
- 2013-11-13
文件的公告送达
文件的公告送达失败
收件人: 北京兴宇中科科技开发股份有限公司
文件名称: 视为未提出通知书
- 2013-01-16
- 2011-09-07
文件的公告送达
文件的公告送达失败
收件人: 林兆祥
文件名称: 手续合格通知书
- 2011-08-24
专利申请权的转移
登记生效日: 2011.07.19
申请人由林兆祥变更为北京兴宇中科科技开发股份有限公司
地址由100080 北京市海淀区海淀南路1号1607室变更为100101 北京市朝阳区大屯路西奥中心A2201
- 2010-12-15
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 200810102815.5
申请日: 2008.03.27
- 2009-09-30
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2006-01-25
|
2003-10-28
| | |
2
| |
2005-03-02
|
2004-10-12
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |