专利名称:多版本数字图书的差异化存储方法及差异文件的读取方法
技术领域:
本发明涉及一种数据的存储方法,特别涉及一种多版本数字图书的差异化存储方法及差异文件的读取方法。
背景技术:
目前,随着网络技术发展和电子书的迅速普及,已经进入了数字图书时代。数字图书时代要解决的其中一个难题就是对于海量数字图书的存储。现有技术中对于一本图书的多个版本,由于使用渠道的不同,都采用分别单独存储的方式进行存储。这种数字图书的存储方法,由于一本图书的不同版本存在的差异通常不是很大,使得对不同版本分别单独存储的方式,造成了对存储空间的浪费,同时也增加了检索的数据量,对检索造成了不必要的困难。
发明内容
有鉴于此,本发明的目的在于提供一种多版本数字图书的差异化存储方法及差异文件的读取方法,以提高存储空间的使用效率。本发明提供的这种多版本数字图书的差异化存储方法,包括:将原始数字图书存储在磁盘上的一段连续空间内,作为原始文件;将与该原始数字图书不同的每个版本的数字图书分别存储为差异文件,每个差异文件包含:原始文件的起始地址和结束地址、各个差异部分的数据、各个差异部分数据在原始文件中的起始地址和结束地址。较佳地,将与该原始数字图书不同的每个版本的数字图书分别存储为差异文件包括:21)、以固定长度分别读取原始文件和一不同版本的数字图书进行比较,获取各个差异部分在原始文件中的起始地址和结束地址。22)、建立该版本的差异文件,读取该版本的数字图书的各个差异部分数据,将原始文件的起始地址和结束地址、各个差异部分的数据、各个差异部分数据在原始文件中的起始地址和结束地址写入到该版本的差异文件中。较佳地,所述固定长度为一个扇区的长度。较佳地,所述步骤21)中,利用访问磁盘文件的INT 13H中断获取各个差异部分在原始文件中的起始物理地址,根据起始物理地址和数据长度计算出各个差异部分在原始文件中的结束物理地址。步骤22)所述起始地址和结束地址为起始物理地址和结束物理地址。较佳地,所述起始物理地址和结束物理地址均包括:起始柱面号和扇区号CX、磁头号DH以及驱动器号DL。较佳地,所述步骤22)后进一步包括:计算出原始文件与该版本的数字图书的差异数量,计算出该版本的差异文件的数据长度;将计算出的差异数量、数据长度以及该版本的版本号写入该版本的差异文件中。本发明还提供了一种所述差异文件的读取方法,包括:A、根据差异文件中包含的原始文件的起始地址和结束地址读取原始文件;B、当读取到各个差异部分在原始文件中的起始地址时,根据差异文件中各个差异部分数据在原始文件中的起始地址和结束地址,读取差异文件中存储的各个差异部分的数据。较佳地,所述步骤A中:以固定长度读取原始文件,并获取当前读取部分的起始地址;所述步骤B中将当前读取部分的起始地址与差异文件中各个差异部分数据在原始文件中的起始地址进行比较,确定是否当前读取部分的起始地址是否包含在差异文件中。较佳地,所述固定长度为一个扇区的长度。较佳地,所述差异文件中的各个差异部分数据在原始文件中的起始地址为起始物理地址;所述步骤A中,利用访问磁盘文件的INT 13H中断获取当前读取部分的起始物理地址;所述步骤B中,将当前读取部分的起始物理地址与差异文件中各个差异部分数据在原始文件中的起始物理地址进行比较。由上述的技术方案可见,由于本发明中对不同版本的数字图书不存储完整的数据,仅存储包含差异部分数据及差异部分信息的差异文件,因此能够提高空间使用效率,同时差异版本文件的存储可以避免检索,待检索文件的总数减少,提高检索效率。
图1为本发明的差异化存储方法一较佳实施例中原始文件的存储结构示例图;图2为图1所示实施例中差异文件的存储结构示例图;图3为图1所示实施例中存储差异文件的流程示意图;图4为图3所示实施例中差异文件的文件格式;图5为读取图1所示实施例中差异文件的流程示意图。
具体实施例方式以下参照附图并举具体实施例对本发明进行详细说明。本发明提供的多版本数字图书的差异化存储方法,将原始数字图书存储在磁盘上的一段连续空间内,作为原始文件,并将与该原始数字图书不同的每个版本的数字图书分别存储为差异文件。其中,每个差异文件包含:原始文件的起始地址和结束地址、各个差异部分的数据、各个差异部分数据在原始文件中的起始地址和结束地址。本发明还提供了对所述差异文件的读取方法,首先根据差异文件中包含的原始文件的起始地址和结束地址读取原始文件。然后,当读取到各个差异部分在原始文件中的起始地址时,根据差异文件中各个差异部分数据在原始文件中的起始地址和结束地址,读取差异文件中存储的各个差异部分的数据。以下举一个较佳实施例对本发明进行详细说明。本实施例中,首先将原始数字图书存储在磁盘上的一段连续空间内,该原始文件的存储结构的示例如图1所示:该原始文件存储在了从三扇区二磁道第五柱面到四三区三磁道第十柱面的一段连续空间内。然后将与该原始数字图书不同的每个版本的数字图书分别存储为差异文件。该差异文件的存储结构的示例如图2所示:按顺序存储了原始文件起始地址、原始文件结束地址、差异部分一起始地址、差异部分数据、差异部分一结束地址、差异部分二起始地址等等,一直到最后一个差异部分结束地址。
本实施例中将原始数字图书存储在磁盘上的一段连续空间内可以采用现有技术的普通存储过程实现,这里不再赘述,以下对本实施例中差异文件的存储过程进行详细描述。如图3所示,本实施例中差异文件的存储过程包括如下步骤:步骤301和302:分别读取原始文件和一个不同版本数字图书的一个扇区的数据,也就是读取512个字节数据。步骤303和304:分别调用操作系统对磁盘文件数据访问的INT 13H中断。步骤305、获取原始文件当前数据的物理地址。由于操作系统对磁盘文件数据的访问最终都会转换为INT 13H中断调用来实现,INT13H的入口参数恰好包含了被访问内容所在扇区的地址标示,并且以扇区的物理地址(CHS)的形式给出。INT 13H中断读/写磁盘功能的入参为:AH = 2H/3H ;AL =要读/写的扇区数;CX=起始柱面号和扇区号;DH=磁头号;DL的驱动器号;ES:BX=数据缓冲区的首地址。因此,本发明在操作系统刚调用INT 13H中断时,在读操作时,获取INT 13H中断调用的入口参数,从而截取了 CHS信息。这样,就获取到该512字节的存储磁盘地址CX、DH和DL,然后恢复原INT 13H中断执行。步骤306,将从原始文件读取的数据与从该不同版本数字图书读取的数据进行比较。步骤307,判断这两部分数据是否相同,如果相同,则将地址转移到原始文件和该不同版本数字图书的下一个扇区后,返回步骤301和302 ;否则执行步骤308。本步骤中,可以采用现有常用的数据比较的软件来实现,这里不再赘述。步骤308、将从该不同版本数字图书读取的数据作为差异部分数据写入到差异文件中,并将步骤305获得的原始文件当前数据的物理地址,作为差异部分在原始文件中的地址也写入到差异文件中。本步骤中存储的差异部分在原始文件中的地址包括起始地址和结束地址;起始地址是在步骤305中直接获取的,结束地址可以在步骤305中计算出来,也可以在本步骤中计算出来。结束地址是根据差异部分的起始地址、编号、和每个差异部分的数据长度(实际为512字节)计算出来的。步骤309、判断是否读完原始文件,如果是,则执行步骤310 ;否则,将地址转移到原始文件和该不同版本数字图书的下一个扇区后,返回步骤301和302。一般情况下,读完了原始文件其不同版本的数字图书也读完了。如果考虑到不同版本的数字图书可能数据长度与原始文件不同,则可以进一步判断不同版本的数字图书是否也读完了。如果不同版本的数字图书没有读完,则剩余部分都属于差异部分,按上述方式顺序存储到差异文件中。步骤310、计算差异部分数量、获取原始文件的起始地址和结束地址、计算本差异文件的数据长度、给出版本号分别写入差异文件。本实施例中,差异文件可以预先建立一个空白文件,也可以在原始文件与不同版本数字图书比较出差异部分数据后再建立。按图3所示流程建立的差异文件的文件结构如图4所示。包括:定长文件头和文件内容两部分。其中,在定长文件头中包含了:差异文件的文件长度(总的数据长度)、版本号、差异部分数量、原始文件的起始地址和原始文件的结束地址。文件内容中包含了:文件内容的数据长度、差异部分编号、各个差异部分的起始地址和结束地址以及各个差异部分的数据。其中,差异部分编号是按顺序生成的。本实施例中还包括了对上述差异文件进行读取的方法。如图5所示,本实施例中对上述差异文件进行读取的过程包括如下步骤:步骤501、根据差异文件中的原始文件的起始地址和结束地址,获取原始文件。本步骤中获取原始文件,实际就是将地址转移的原始文件的起始地址。步骤502、读取原始文件的一个扇区(512个字节)的数据。步骤503、调用INT 13H中断。步骤504、判断是否读磁盘,如果是,则执行步骤506 ;否则执行步骤505。步骤505、恢复INT 13H中断调用后,将地址转移到原始文件的下一个扇区,返回步骤502。步骤506、获取当前数据的物理地址,包括起始地址和结束地址。本步骤中,与图3中步骤305完全相同,这里不再重复。步骤507、判断当前数据的起始地址是否为差异部分在原始文件中的起始地址,如果是,则执行步骤508 ;否则执行步骤505。本步骤中,就是将获得的当前数据的起始地址与差异文件中存储的各个差异部分在原始文件的起始地址相比,如果有相同的,即为差异部分在原始文件中的起始地址。步骤508、将物理地址转移到差异文件中对应的差异部分数据。即起始地址转移到该差异部分数据。步骤509、读取差异部分数据。步骤510、判断是否读完原始文件,如果是,则结束;否则执行步骤511。一般情况下,读完了原始文件其不同版本的数字图书也读完了。如果考虑到不同版本的数字图书可能数据长度与原始文件不同,则可以进一步判断不同版本的数字图书是否也读完了。如果不同版本的数字图书没有读完,则剩余部分都属于差异部分,按顺序读取即可。步骤511、将物理地址转移到原始文件的下一个扇区,返回步骤502。由上述的实施例可见,应用本发明的多版本数字图书的差异化存储方法及对差异文件的读取方法,能够提高空间使用效率,同时差异版本文件的存储可以避免检索,待检索文件的总数减少,提高检索效率。
权利要求
1.一种多版本数字图书的差异化存储方法,其特征在于:将原始数字图书存储在磁盘上的一段连续空间内,作为原始文件;将与该原始数字图书不同的每个版本的数字图书分别存储为差异文件,每个差异文件包含:原始文件的起始地址和结束地址、各个差异部分的数据、各个差异部分数据在原始文件中的起始地址和结束地址。
2.如权利要求1所述的差异化存储方法,其特征在于,将与该原始数字图书不同的每个版本的数字图书分别存储为差异文件包括: 21)、以固定长度分别读取原始文件和一不同版本的数字图书进行比较,获取各个差异部分在原始文件中的起始地址和结束地址; 22)、建立该版本的差异文件,读取该版本的数字图书的各个差异部分数据,将原始文件的起始地址和结束地址、各个差异部分的数据、各个差异部分数据在原始文件中的起始地址和结束地址写入到该版本的差异文件中。
3.如权利要求2所述的差异化存储方法,其特征在于:所述固定长度为一个扇区的长度。
4.如权利要求3所述的差异化存储方法,其特征在于:所述步骤21)中,利用访问磁盘文件的INT 13H中断获取各个差异部分在原始文件中的起始物理地址,根据起始物理地址和数据长度计算出各个差异部分在原始文件中的结束物理地址; 步骤22)所述起始地址和结束地址为起始物理地址和结束物理地址。
5.如权利要求4所述的差异化存储方法,其特征在于,所述起始物理地址和结束物理地址均包括:起始柱面号和扇区号CX、磁头号DH以及驱动器号DL。
6.如权利要求2-5任一项所述的差异化存储方法,其特征在于,所述步骤22)后进一步包括:计算出原始文件与该版本的数字图书的差异数量,计算出该版本的差异文件的数据长度;将计算出的差异数量、数据长度以及该版本的版本号写入该版本的差异文件中。
7.—种权利要求1所述差异文件的读取方法,其特征在于,包括: A、根据差异文件中包含的原始文件的起始地址和结束地址读取原始文件; B、当读取到各个差异部分在原始文件中的起始地址时,根据差异文件中各个差异部分数据在原始文件中的起始地址和结束地址,读取差异文件中存储的各个差异部分的数据。
8.如权利要求7所述差异文件的读取方法,其特征在于,所述步骤A中:以固定长度读取原始文件,并获取当前读取部分的起始地址; 所述步骤B中将当前读取部分的起始地址与差异文件中各个差异部分数据在原始文件中的起始地址进行比较,确定是否当前读取部分的起始地址是否包含在差异文件中。
9.如权利要求8所述差异文件的读取方法,其特征在于:所述固定长度为一个扇区的长度。
10.如权利要求9所述的差异化存储方法,其特征在于:所述差异文件中的各个差异部分数据在原始文件中的起始地址为起始物理地址;所述步骤A中,利用访问磁盘文件的INT13H中断获取当前读取部分的起始物理地址; 所述步骤B中,将当前读取部分的起始物理地址与差异文件中各个差异部分数据在原始文件中的起始物理地址进行比较。
全文摘要
本发明公开了一种多版本数字图书的差异化存储方法,将原始数字图书存储在磁盘上的一段连续空间内,作为原始文件;将与该原始数字图书不同的每个版本的数字图书分别存储为差异文件,每个差异文件包含原始文件的起始地址和结束地址、各个差异部分的数据、各个差异部分数据在原始文件中的起始地址和结束地址。本发明同时公开了对所述差异文件的读取方法,根据差异文件中包含的原始文件的起始地址和结束地址读取原始文件;当读取到各个差异部分在原始文件中的起始地址时,根据差异文件中各个差异部分数据在原始文件中的起始地址和结束地址,读取差异文件中存储的各个差异部分的数据。应用本发明能够提高空间使用效率,提高检索效率。
文档编号G06F17/30GK103186530SQ201110443528
公开日2013年7月3日 申请日期2011年12月27日 优先权日2011年12月27日
发明者罗旭龙 申请人:北京中文在线数字出版股份有限公司