CN101122906A - 一种文档存储方法及系统 - Google Patents
一种文档存储方法及系统 Download PDFInfo
- Publication number
- CN101122906A CN101122906A CNA2006100892216A CN200610089221A CN101122906A CN 101122906 A CN101122906 A CN 101122906A CN A2006100892216 A CNA2006100892216 A CN A2006100892216A CN 200610089221 A CN200610089221 A CN 200610089221A CN 101122906 A CN101122906 A CN 101122906A
- Authority
- CN
- China
- Prior art keywords
- document
- information
- mode
- storage
- object information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种软件设计领域中文档的存储方法及系统,用以将普通流式存储和结构化存储结合起来运用于文档存储中。本发明是根据文档及存储的文档对象信息记录进行读取并操作,当对文档操作时,记录对文档对象信息进行的操作信息;存储文档及对文档对象信息进行操作的记录。本发明结合了两种存储的优势,当本发明运用于文档容量超大情况下的系统中时,使得系统在运行效率、运行稳定性、可操作数据容量等各种方面的性能都得到了大幅度的提高,效果十分突出。同时,由于本发明是基于流式存储以及结构式存储的基本原理进行的创造性结合,因此本发明对于任何文档的存储都具有通用性。
Description
技术领域
本发明涉及一种文档存储方法及系统,特别涉及一种软件设计领域中文档的存储方法及系统。
背景技术
在软件设计领域内的基础技术中,几乎任何桌面软件都具有复杂的文档结构,比如方正的飞腾排版软件、微软的Office系列软件、金山WPS软件等,由于这些文档结构相当复杂,且文档容量大,用户的交互式操作频率非常高,因此,如何高效的对文档进行存储,对于桌面软件来说是一个非常重要的问题。
现有技术中,对于文档一般采用普通流式存储和结构化存储的方式,下面对两种存储方式作简单介绍。
为了更好的阐述现有技术内容,首先简要说明两个术语:全量存储与增量存储。
全量存储是指在对文档进行保存的时候,无论前面已经保存了多少次,每次都将整个文档进行保存,称为全量存储。
增量存储是指在对文档进行保存的时候,第一次采用全量存储,以后进行保存的时候,只是保存“从上次保存后文档被修改的部分”,没有修改的部分则不进行保存,称为增量存储。
在对这两个术语进行定义后,下面对两种存储方式进行介绍。
1)、普通流式存储的特点:
图1为普通流式存储中文档对象的布局示意图,普通流式存储就是将文档中的对象按顺序依次存放在磁盘中,对象在文档中的布局方式如图1所示。由于流式存储方法流程简单,每个对象存储时不需要在磁盘中定位,因此效率比较高。但是可以看到,但是由于文档中无附加信息,无法对文档中的对象进行随机访问。也就是说,要访问第N个对象,必须要将前N-1个对象读出来之后,才知道第N个对象存放的位置。因此如果文档首次存储后,之后第N个对象发生了改变,那么不能单独存储第N个对象,必须对全文档存储一遍。
2)、结构化存储的特点:
图2为结构化存储中文档对象的布局示意图,结构化存储无论采用任何具体方法,都是可以通过对象的标识(ID)直接找到其在磁盘文档中的位置,对象的存储位置是对象的ID决定的。结构化存储的文档对象布局如图2所示。结构化存储的方式比流式存储要复杂得多。由于对每个对象进行读写时要进行定位,在存储对象时不能保证当前位置没有被占用,需要搜索下一个可用的位置。因此对于相同的数据量,结构化存储的效率会比流式存储低。但是可以看到,由于某个对象在磁盘中的存储位置是确定的(由ID计算),因此可以对某个对象进行单独存储。也即是说,如果文档首次存储后,之后第N个对象发生了改变,那么可以定位到第N个对象的起始位置,单独对对象N进行存储就可以了。这就是结构化存储实现增量存储的原理。
下表对流式存储和结构化存储的特点进行了比较,如表所示为:
方式 | 流式存储 | 结构化存储 |
存储效率 | 高 | 低 |
增量存储 | 不能实现 | 能实现 |
首次存储 | 效率高 | 效率低 |
后继存储 | 效率低 | 效率高 |
实现方法 | 很简单 | 复杂 |
从上表可知,普通流式存储方法简单、首次存储效率高,但是无法实现增量存储,而结构化存储方法比较复杂,首次存储效率不如流式存储。但是结构化存储可以实现增量存储,这却是流式存储所无法实现的。
但遗憾的是在目前的文档存储技术中,还没有将这两种存储方式结合起来,从而发挥出二者优点的技术方案出现。
发明内容
本发明提供一种文档存储方法及系统,用以将普通流式存储和结构化存储结合起来运用于文档存储中。
本发明文档存储方法包括如下步骤:
根据文档及存储的文档对象信息记录进行读取并操作,对所述文档操作时,记录对所述文档对象信息进行的操作信息;
存储所述文档及对所述文档对象信息进行操作的记录。
较佳地,所述记录对所述文档对象信息进行的操作信息步骤,是在读取的所述文档对象信息记录上进行记录,或新建文档对象信息记录后进行记录。
较佳地,进一步包括如下步骤:
在缓存区中记录对所述文档对象信息进行的操作信息;
当对所述文档的操作结束时,清除所述缓存区中对文档对象信息进行操作的所述记录。
较佳地,所述文档对象信息是撤销/重做信息。
较佳地,所述记录对所述文档对象信息进行的操作信息,是根据撤销/重做对象数组中的信息进行记录的。
较佳地,所述文档对象信息是文档对象的标识及操作状态。
较佳地,所述文档中每个操作对象的标识是唯一的。
较佳地,所述操作状态是对象的改变、和/或对象的删除、和/或对象的创建。
较佳地,所述根据文档及保存的文档对象信息记录进行读取,包括:
当文档对象信息中操作状态是对象的改变时,将改变的对象标识及操作状态读到所述对象中;
当文档对象信息中操作状态是对象的删除时,将所述对象删除;
当文档对象信息中操作状态是对象的创建时,创建所述对象并读入所述对象标识及操作状态。
较佳地,所述存储所述文档及对所述文档对象信息进行操作的记录,包括:
当文档对象信息中操作状态是对象的改变时,存储所述改变的对象标识及操作状态到所述记录中;
当文档对象信息中操作状态是对象的删除时,存储所述对象标识到所述记录中;
当文档对象信息中操作状态是对象的创建时,存储所述创建的对象标识及操作状态到所述记录中。
较佳地,进一步包括如下步骤:
当所述文档对象数目大于预设阈值时,存储所述文档。
较佳地,进一步包括如下步骤:
首次存储文档时,将文档对象按流式存储。
本发明还提供了一种文档存储系统,包括存储器、读取编辑模块、记录模块、存储模块,其中:
读取编辑模块,与所述存储器相连,根据所述存储器中所述存储模块存储的文档及文档对象信息记录进行读取并操作;
记录模块,与所述存储器、第一存储模块相连,在所述读取编辑模块对所述文档操作时,记录对所述文档对象信息进行的操作信息;
第一存储模块,与所述存储器相连,根据所述记录模块的记录,将所述文档及对所述文档对象信息进行操作的记录存储至存储器。
较佳地,进一步包括缓存、清除模块,其中:
所述记录模块在所述缓存中记录对所述文档对象信息进行的操作信息;
清除模块,用于当所述读取编辑模块对文档操作结束时,清除所述记录模块在所述缓存中对文档对象信息进行操作的所述记录。
较佳地,所述文档对象信息是撤销/重做信息。
较佳地,所述记录模块是根据撤销/重做对象数组中的信息进行记录的。
较佳地,所述文档对象信息是文档对象的标识及操作状态。
较佳地,所述文档中每个操作对象的标识是唯一的。
较佳地,所述操作状态是对象的改变、和/或对象的删除、和/或对象的创建。
较佳地,所述读取编辑模块包括:
第一操作单元,用于当文档对象信息中操作状态是对象的改变时,将改变的对象标识及操作状态读到所述对象中;
第二操作单元,用于当文档对象信息中操作状态是对象的删除时,将所述对象删除;
第三操作单元,用于当文档对象信息中操作状态是对象的创建时,创建所述对象并读入所述对象标识及操作状态。
较佳地,所述第一存储模块包括:
第一存储单元,用于当文档对象信息中操作状态是对象的改变时,存储所述改变的对象标识及操作状态到所述存储器中;
第二存储单元,用于当文档对象信息中操作状态是对象的删除时,存储所述对象标识到所述存储器中;
第三存储单元,用于当文档对象信息中操作状态是对象的创建时,存储所述创建的对象标识及操作状态到所述存储器中。
较佳地,进一步包括检测模块、第二存储模块,其中:
第二存储模块,与所述存储器相连,用于将所述文档存储至所述存储器中;
检测模块,与所述读取编辑模块、第一存储模块、第二存储模块相连,用于检测所述读取编辑模块读取的文档,当所述文档对象数目大于预设阈值时,关闭第一存储模块,开启第二存储模块进行存储。
较佳地,进一步包括第三存储模块,与所述存储器相连,用于在首次存储文档时,将文档按流式存储至所述存储器。
本发明有益效果如下:
由于本发明是在基于流式存储方法的基础上实现了增量存储,因此结合了两种存储的优势,使得当本发明运用于文档容量超大情况下的系统中时,能保持操作的稳定、高效,还使得运用文档存储的系统在运行效率、运行稳定性、可操作数据容量等各种方面的性能都得到了大幅度的提高,效果十分突出。
同时,由于本发明是基于流式存储以及结构式存储的基本原理进行的创造性结合,因此本发明对于任何文档的存储都具有通用性。
优选实施中,由于本发明在对文档的首次存储中使用了流式存储,因而本发明中具备了流式存储首次存储高效率的优点。
优选实施中,由于本发明对对象数设定了阈值,使得本发明存储方式灵活多样,能适应各种要求。
优选实施中,本发明使用了Undo/Redo(撤销/重做)原理来实现本发明,因此使得本发明容易实现、操作简单。
附图说明
图1为背景技术中所述普通流式存储中文档对象的布局示意图;
图2为背景技术中所述结构化存储中文档对象的布局示意图;
图3为实施例中所述根据本发明存储原理进行操作的流程示意图;
图4为实施例中所述本发明文档存储方法的实施流程示意图;
图5为实施例中所述本发明文档存储系统的结构示意图。
具体实施方式
下面结合附图对本发明的具体实施进行说明。
为了将普通流式存储及结构化存储的优势结合起来,本发明提出了基于流式存储的增量存储方法,现将本发明构思原理阐述如下:
首先,在本发明构思中,在首次存储文档中的所有对象时,采用了普通流式存储的方法进行文档的首次存储,其目的是保证了首次存储的高效率。
下面进一步阐述本发明的构思,为便于理解,将本文中文档首次存储的部分称为“基础部分”。然后利用Undo/Redo(撤销/重做)的原理来实现文档的增量存储。
用Undo/Redo来进行说明是因为几乎现在所有的文档式应用程序中,都提供了撤销/重做功能,如Word、Excel,还有写Java程序用的JBuilder。如果说在早期,许多的应用程序还只能提供单一的Undo/Redo功能的话,自进入90年代以来,随着面向对象编程(Object Oriented Programming,OOP)及设计模式(Design Pattern)的流行,实现无限次数的Undo/Redo编辑功能已不是难事。因此本发明在阐述本发明的构思时,将使用Undo/Redo来说明本发明的具体实施方式,但随着对本发明的进一步阐述,显而易见的是,Undo/Redo仅仅是实现本发明的一个技术手段,实现本发明并不仅仅局限于使用Undo/Redo的原理。
本发明构思在于,当文档在被首次存储后,如果再对文档进行修改,则仅将对文档修改的部分作为Redo信息搜集起来。这样当再次进行存储的时候,只是将该Redo信息存储在基础部分的后面,作为“增量部分”。从而实现了文档的增量存储。
为方便阐述,以将增量部分的信息保存在文档中作为实施例,但是,显然增量部分的保存在具体实施中并不必然需要保存在文档中,比如也可单独将增量部分的信息保存在一个独立的文档中,也可开辟别的存储区来保存,同时也不必用文档形式保存。
这样在本发明实施时,在打开文档的时候,先读入基础部分,然后读入增量部分,在基础部分的基础上做一次Redo,就可得到最终的文档信息。
而当文档再做修改的时候,可以在原有的Redo信息中继续累加信息,这样存储的时候,仅需覆盖文档中旧的增量部分即可。
对于增量的保存来说,可以采用一段增量,也可以采用多段增量的方式。
也就是在打开一个已经有增量信息的文件时,先读文件中的增量信息,重建增量对象信息的集合。再做操作时,将对象信息追加到这个集合中。保存文件时,覆盖以前的增量信息。这样文件中永远只是存在一段增量。当然打开文件后也可以不重建增量对象信息的集合,而是新建增量对象的集合,这样就形成了多段增量。这样无论是连续保存,还是重新打开文件,都可以覆盖增量形成一段增量,或者是不覆盖增量形成多段增量。下述实施例中我们以采用一段增量的方式进行说明。
图3为根据本发明存储原理进行操作的流程示意图,下表是结合附图对本发明在实施时的Redo信息以及文档的变化进行的说明,以便更进一步的阐述本发明构思,表中分别为在对应步骤时Redo信息和文档的状态。
S301、新建文档;
S302、做系列操作;
S303、保存文档;
S304、再做系列操作,此时有Redo信息;
S305、保存文档,将Redo信息写入文档作为增量部分;
S306、再做系列操作,将Redo信息追加进文档增量部分;
S307、再保存文档,将Redo信息写入文档,覆盖旧的增量部分,可以任意次重复步骤S306到S307;
S308、关闭文档,此时将Redo信息清空,文档中保留了基础部分和覆盖后的增量部分;
S309、打开文档,Redo信息同步骤S307,文档同S307,可以任意次重复步骤S306到S308。
所执行步骤 | Redo信息状态 | 文档状态 |
新建文档 | 空 | 空 |
做系列操作 | 空 | 空 |
保存文档 | 空 | 基础部分 |
再做系列操作 | 有 | 基础部分 |
保存文档 | 有 | 基础部分和增量部分 |
再做系列操作 | 有 | 基础部分和增量部分 |
再保存文档 | 有 | 旧的增量部分被覆盖 |
关闭文档 | 清空 | 同再保存文档 |
打开文档 | 同再保存文档 | 同再保存文档 |
基于以上构思,下面结合附图说明本发明的具体实施方式。
具体实施时,一个文档的存储有以下几个基本步骤:收集文档对象信息、存储文档、读文档,下面先通过这几个步骤的描述来进一步阐明本发明的实施。
一、搜集文档对象及操作状态。
当以Redo的原理为例来说明具体实施,首先需要建立文档操作的Redo信息,在这个信息中记录了文档的对象以及这个对象的操作状态。
先为文档中创建的每个对象都被分配一个唯一的ID。同时,将对文档的操作归纳为3种情况:
A、对象的改变:表示为(ID Modify);
B、对象的删除:表示为(ID Delete);
C、对象的创建:表示为(ID Create)。
在操作过程中,可以将文档中每个对象的ID以及上述三种操作状态记录到一个Redo对象数组中,再根据Redo对象数组保存Redo信息。
二、存储文档Redo信息。
在存储文档时,不是要存储整个文档,而是存储文档的Redo信息。
具体方法是:根据Redo对象数组中的信息,将操作状态为“对象的改变”及“对象的创建”的对象的ID及操作状态记录到文档中;对于操作状态为“对象的删除”的对象,仅仅记录其ID到文档中就可以了,于是这样就将Redo信息记录到了文档中。
三、读文档及Redo信息。
本发明在实施时,在打开文档时,首先将文档的基础部分读到缓存区中,然后再读取Redo信息,实施中将内存作为缓存区为例来给予说明,即将文档的基础部分以及Redo信息读入内存中。由于对每个对象都采用了一个唯一的ID进行标识,因此在读取Redo信息的时候,通过ID以及操作状态就知道是对哪些对象进行了那些操作。
对于Redo信息中操作状态为“对象的创建”的对象,在内存中创建该对象并读入该对象信息;对于操作状态为“对象的改变”的对象,则将Redo中记录的信息读到该对象中;对于操作状态为“对象的删除”的对象,则从内存中直接删除该对象。这样就将基础文档连同Redo信息读到内存中了。
在读取Redo信息的同时,可以重建Redo对象数组,当用户再做操作的时候,将对象的操作累加到该Redo对象数组中,再按第二步的方法进行文档存储,可以看出,如此反复,就实现了文档的增量存储。
优选实施中,还考虑到了在Redo信息数组中累积的对象过多时,采用全量存储将会使存储效率更高。因此在具体实施时设定一个阈值,当文档的对象超过阈值时采用全量存储,即将整个文档进行存储,不再保存Redo信息。经过试验,可以优选1000作为文档对象数量的阈值,也就是当被操作的对象少于1000个时,采用增量存储。当被操作的对象超过1000个时,采用全量存储。
图4为本发明文档存储方法的实施流程示意图,基于上述构思,本发明在文档存储方法实施时流程如图所示为:
S401、新建文档;
S402、操作版面;
S403、搜集增量信息;
S404、判断是否存储文档,是则转入步骤S405,否则转入步骤S406;
S405、存储增量信息;
S406、判断是否关闭文档,是则转入步骤S407,否则转入步骤S402;
S407、清除增量信息;
S408、文档操作结束。
根据前述原理,优选实施中,在步骤S401新建文档时采用流式存储。在步骤S403中,在搜集增量信息时,当发现对象个数大于设定的阈值时,则改采用全量存储。
根据上述的发明构思,本发明还提供了一种文档存储系统,下面结合附图对本系统的具体实施方式进行说明。
图5是本发明文档存储系统的结构示意图,如图所示,在本系统中包括存储器501、读取编辑模块502、记录模块503、第一存储模块504、清除模块505、缓存506、检测模块507、第二存储模块508、第三存储模块509。在读取编辑模块502中包括第一操作单元5021、第二操作单元5022、第三操作单元5023,在第一存储单元504中包括第一存储单元5041、第二存储单元5042、第三存储单元5043。
下面首先对本系统中各模块、单元的位置、结构关系进行描述,然后再通过对各模块、单元的工作原理及功能的说明来阐述如何具体实施本系统以实现本发明。
系统中,与存储器501相连的分别有读取编辑模块502、第一存储模块504第二存储模块508、第三存储模块509;记录模块503分别与读取编辑模块502、第一存储模块504、缓存506相连;检测模块507分别与读取编辑模块502、第一存储模块504、第二存储模块508相连;缓存506上连接了清除模块505。
仍以Redo的原理为例来说明本系统的具体实施,首先需要建立文档操作的Redo信息,在这个信息中记录了文档的对象以及这个对象的操作状态。
先为文档中创建的每个对象都被分配一个唯一的ID。同时,将对文档的操作归纳为3种情况:
A、对象的改变:表示为(ID Modify);
B、对象的删除:表示为(ID Delete);
C、对象的创建:表示为(ID Create)。
在操作过程中,可以将文档中每个对象的ID以及上述三种操作状态记录到一个Redo对象数组中,再根据Redo对象数组保存Redo信息。
在具体实施时,读取编辑模块根据存储器中存储模块存储的文档及文档对象信息记录进行读取并操作,记录模块在读取编辑模块对文档进行操作时,记录对文档对象信息进行的操作信息,第一存储模块根据记录模块的记录,将文档及对文档对象信息进行操作的记录存储至存储器。
读取编辑模块包括用于当文档对象信息中操作状态是“对象的改变”时,将改变的对象标识及操作状态读到所述对象中的第一操作单元;用于当文档对象信息中操作状态是“对象的删除”时,将所述对象删除的第二操作单元;用于当文档对象信息中操作状态是“对象的创建”时,创建所述对象并读入所述对象标识及操作状态的第三操作单元。
第一存储模块包括用于当文档对象信息中操作状态是“对象的改变”时,存储所述改变的对象标识及操作状态到所述存储器中的第一存储单元;用于当文档对象信息中操作状态是“对象的删除”时,存储所述对象标识到所述存储器中的第二存储单元;用于当文档对象信息中操作状态是“对象的创建”时,存储所述创建的对象标识及操作状态到所述存储器中的第三存储单元。
即在读取编辑模块打开文档后,首先将文档的基础部分读到缓存中,然后再读取Redo信息,实施中将内存作为缓存区为例来给予说明,即将文档的基础部分以及Redo信息读入内存中。由于对每个对象都采用了一个唯一的ID进行标识,因此在读取Redo信息的时候,记录模块通过ID以及操作状态就知道是对哪些对象进行了那些操作。
对于Redo信息中操作状态为“对象的创建”的对象,第三操作单元在内存中创建该对象并读入该对象信息;对于操作状态为“对象的改变”的对象,第一操作单元则将Redo中记录的信息读到该对象中;对于操作状态为“对象的删除”的对象,第三操作单元则从内存中直接删除该对象。这样就将基础文档连同Redo信息读到内存中了。
在第一存储模块存储文档时,不是要存储整个文档,而是存储文档的Redo信息。
具体是:根据Redo对象数组中的信息,第一存储单元将操作状态为“对象的改变”、第二存储单元将操作状态为“对象的创建”的对象的ID及操作状态记录到文档中;对于操作状态为“对象的删除”的对象,第三存储单元仅仅记录其ID到文档中就可以了,于是这样就将Redo信息记录到了文档中。
在读取Redo信息的同时,可以重建Redo对象数组,当用户再做操作的时候,记录模块将对象的操作累加到该Redo对象数组中,存储模块再进行文档存储,可以看出,如此反复,就实现了文档的增量存储。
优选实施中,记录模块在缓存中记录对文档对象信息进行的操作信息,当读取编辑模块对文档的操作结束时,清除模块清除记录模块在缓存中对文档对象信息进行操作的记录。
优选实施中,考虑到在Redo信息数组中累积的对象过多时,采用全量存储将会使存储效率更高。因此在检测模块中设定一个阈值,当文档的对象超过阈值时开启第二存储模块采用全量存储,即将整个文档进行存储,不再保存Redo信息。经过试验,可以优选1000作为文档对象数量的阈值,也就是当被操作的对象少于1000个时,采用增量存储。当被操作的对象超过1000个时,采用全量存储。
也就是检测模块检测读取编辑模块读取的文档,当文档对象数目大于阈值时,关闭第一存储模块,开启第二存储模块进行存储。
优选实施中,为了保证了首次存储的高效率,在首次存储文档中的所有对象时,采用了普通流式存储的方法进行文档的首次存储,也就是第三存储模块,在首次存储文档时,将文档按流式存储至存储器。
通过对本发明种方法与系统的实施,显然能得到下表中对普通流式存储、结构化存储及基于流式存储的增量存储的优劣进行比较的结论:
方式 | 普通流式存储 | 结构化存储 | 本发明基于流式存储的增量存储 |
存储效率 | 高 | 低 | 高 |
增量存储 | 不能实现 | 能实现 | 能实现 |
首次存储 | 效率高 | 效率低 | 效率高 |
后继存储 | 效率低 | 效率高 | 效率高 |
实现方法 | 很简单 | 复杂 | 较简单 |
为进一步的证明本发明具有显著的进步,将本发明与流式、结构式存储分别运用于方正的排版系统中,通过实验,三种存储方式实际效率比较数据如下:
存储方式 | 普通流式存储时间 | 结构化存储时间 | 本发明存储时间 | |
1000页长文档 | 首次存储 | 3秒 | 16秒 | 3秒 |
后继存储 | 3秒 | 0.2秒 | 0.2秒 | |
超大股市表版面 | 首次存储 | 2秒 | 9.24秒 | 2秒 |
后继存储 | 2秒 | 0.2秒 | 0.1秒 |
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (23)
1.一种文档存储方法,其特征在于,包括如下步骤:
根据文档及存储的文档对象信息记录进行读取并操作,对所述文档操作时,记录对所述文档对象信息进行的操作信息;
存储所述文档及对所述文档对象信息进行操作的记录。
2.如权利要求1所述的方法,其特征在于,所述记录对所述文档对象信息进行的操作信息步骤,是在读取的所述文档对象信息记录上进行记录,或新建文档对象信息记录后进行记录。
3.如权利要求1所述的方法,其特征在于,进一步包括如下步骤:
在缓存区中记录对所述文档对象信息进行的操作信息;
当对所述文档的操作结束时,清除所述缓存区中对文档对象信息进行操作的所述记录。
4.如权利要求1或2或3所述的方法,其特征在于,所述文档对象信息是撤销/重做信息。
5.如权利要求1或2或3所述的方法,其特征在于,所述记录对所述文档对象信息进行的操作信息,是根据撤销/重做对象数组中的信息进行记录的。
6.如权利要求1或2或3所述的方法,其特征在于,所述文档对象信息是文档对象的标识及操作状态。
7.如权利要求6所述的方法,其特征在于,所述文档中每个操作对象的标识是唯一的。
8.如权利要求6所述的方法,其特征在于,所述操作状态是对象的改变、和/或对象的删除、和/或对象的创建。
9.如权利要求8所述的方法,其特征在于,所述根据文档及保存的文档对象信息记录进行读取,包括:
当文档对象信息中操作状态是对象的改变时,将改变的对象标识及操作状态读到所述对象中;
当文档对象信息中操作状态是对象的删除时,将所述对象删除;
当文档对象信息中操作状态是对象的创建时,创建所述对象并读入所述对象标识及操作状态。
10.如权利要求8所述的方法,其特征在于,所述存储所述文档及对所述文档对象信息进行操作的记录,包括:
当文档对象信息中操作状态是对象的改变时,存储所述改变的对象标识及操作状态到所述记录中;
当文档对象信息中操作状态是对象的删除时,存储所述对象标识到所述记录中;
当文档对象信息中操作状态是对象的创建时,存储所述创建的对象标识及操作状态到所述记录中。
11.如权利要求1所述的方法,其特征在于,进一步包括如下步骤:
当所述文档对象数目大于预设阈值时,存储所述文档。
12.如权利要求1所述的方法,其特征在于,进一步包括如下步骤:
首次存储文档时,将文档对象按流式存储。
13.一种文档存储系统,包括存储器,其特征在于,还包括读取编辑模块、记录模块、存储模块,其中:
读取编辑模块,与所述存储器相连,根据所述存储器中所述存储模块存储的文档及文档对象信息记录进行读取并操作;
记录模块,与所述存储器、第一存储模块相连,在所述读取编辑模块对所述文档操作时,记录对所述文档对象信息进行的操作信息;
第一存储模块,与所述存储器相连,根据所述记录模块的记录,将所述文档及对所述文档对象信息进行操作的记录存储至存储器。
14.如权利要求13所述的系统,其特征在于,进一步包括缓存、清除模块,其中:
所述记录模块在所述缓存中记录对所述文档对象信息进行的操作信息;
清除模块,与缓存相连,用于当所述读取编辑模块对文档操作结束时,清除所述记录模块在所述缓存中对文档对象信息进行操作的所述记录。
15.如权利要求13或14所述的系统,其特征在于,所述文档对象信息是撤销/重做信息。
16.如权利要求13或14所述的系统,其特征在于,所述记录模块是根据撤销/重做对象数组中的信息进行记录的。
17.如权利要求13或14所述的系统,其特征在于,所述文档对象信息是文档对象的标识及操作状态。
18.如权利要求17所述的系统,其特征在于,所述文档中每个操作对象的标识是唯一的。
19.如权利要求17所述的系统,其特征在于,所述操作状态是对象的改变、和/或对象的删除、和/或对象的创建。
20.如权利要求19所述的系统,其特征在于,所述读取编辑模块包括:
第一操作单元,用于当文档对象信息中操作状态是对象的改变时,将改变的对象标识及操作状态读到所述对象中;
第二操作单元,用于当文档对象信息中操作状态是对象的删除时,将所述对象删除;
第三操作单元,用于当文档对象信息中操作状态是对象的创建时,创建所述对象并读入所述对象标识及操作状态。
21.如权利要求19所述的系统,其特征在于,所述第一存储模块包括:
第一存储单元,用于当文档对象信息中操作状态是对象的改变时,存储所述改变的对象标识及操作状态到所述存储器中;
第二存储单元,用于当文档对象信息中操作状态是对象的删除时,存储所述对象标识到所述存储器中;
第三存储单元,用于当文档对象信息中操作状态是对象的创建时,存储所述创建的对象标识及操作状态到所述存储器中。
22.如权利要求13所述的系统,其特征在于,进一步包括检测模块、第二存储模块,其中:
第二存储模块,与所述存储器相连,用于将所述文档存储至所述存储器中;
检测模块,与所述读取编辑模块、第一存储模块、第二存储模块相连,用于检测所述读取编辑模块读取的文档,当所述文档对象数目大于预设阈值时,关闭第一存储模块,开启第二存储模块进行存储。
23.如权利要求13所述的系统,其特征在于,进一步包括第三存储模块,与所述存储器相连,用于在首次存储文档时,将文档按流式存储至所述存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006100892216A CN101122906A (zh) | 2006-08-09 | 2006-08-09 | 一种文档存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006100892216A CN101122906A (zh) | 2006-08-09 | 2006-08-09 | 一种文档存储方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101122906A true CN101122906A (zh) | 2008-02-13 |
Family
ID=39085243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006100892216A Pending CN101122906A (zh) | 2006-08-09 | 2006-08-09 | 一种文档存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101122906A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064660A (zh) * | 2011-10-21 | 2013-04-24 | 镇江金软计算机科技有限责任公司 | 一种基于数组技术的电子合同版本控制方法 |
CN105528334A (zh) * | 2015-12-17 | 2016-04-27 | 广州视睿电子科技有限公司 | 一种文档操作处理的方法以及终端 |
CN106598926A (zh) * | 2016-11-29 | 2017-04-26 | 青岛海信电器股份有限公司 | 操作撤销方法及装置 |
CN111427867A (zh) * | 2020-03-30 | 2020-07-17 | 杭州华望系统科技有限公司 | 一种基于混合式存储的模型持久化方法 |
CN112036133A (zh) * | 2020-09-01 | 2020-12-04 | 珠海豹趣科技有限公司 | 一种文件保存方法、装置、电子设备及存储介质 |
CN114116634A (zh) * | 2022-01-26 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种缓存方法、装置及可读存储介质 |
-
2006
- 2006-08-09 CN CNA2006100892216A patent/CN101122906A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064660A (zh) * | 2011-10-21 | 2013-04-24 | 镇江金软计算机科技有限责任公司 | 一种基于数组技术的电子合同版本控制方法 |
CN105528334A (zh) * | 2015-12-17 | 2016-04-27 | 广州视睿电子科技有限公司 | 一种文档操作处理的方法以及终端 |
CN106598926A (zh) * | 2016-11-29 | 2017-04-26 | 青岛海信电器股份有限公司 | 操作撤销方法及装置 |
CN111427867A (zh) * | 2020-03-30 | 2020-07-17 | 杭州华望系统科技有限公司 | 一种基于混合式存储的模型持久化方法 |
CN111427867B (zh) * | 2020-03-30 | 2023-10-20 | 杭州华望系统科技有限公司 | 一种基于混合式存储的模型持久化方法 |
CN112036133A (zh) * | 2020-09-01 | 2020-12-04 | 珠海豹趣科技有限公司 | 一种文件保存方法、装置、电子设备及存储介质 |
CN112036133B (zh) * | 2020-09-01 | 2024-03-26 | 珠海豹趣科技有限公司 | 一种文件保存方法、装置、电子设备及存储介质 |
CN114116634A (zh) * | 2022-01-26 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种缓存方法、装置及可读存储介质 |
CN114116634B (zh) * | 2022-01-26 | 2022-04-22 | 苏州浪潮智能科技有限公司 | 一种缓存方法、装置及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103345472B (zh) | 基于有限二叉树布隆过滤器的去冗文件系统及其构建方法 | |
CN101315628B (zh) | 内存数据库系统及实现内存数据库的方法和装置 | |
US8225029B2 (en) | Data storage processing method, data searching method and devices thereof | |
CN111399777B (zh) | 一种基于数据值分类的差异化键值数据存储方法 | |
CN101233498B (zh) | 快闪存储器中利用直接数据文件存储的数据操作 | |
CN102129442B (zh) | 一种分布式数据库系统和数据访问方法 | |
CN101122906A (zh) | 一种文档存储方法及系统 | |
CN103020255B (zh) | 分级存储方法和装置 | |
CN103019884A (zh) | 基于虚拟机快照的内存页去重方法及装置 | |
CN103186350A (zh) | 混合存储系统及热点数据块的迁移方法 | |
CN105005617A (zh) | 一种时间序列数据的存储方法及装置 | |
CN103559027A (zh) | 一种key与value分开存储的key-value存储系统设计方法 | |
CN107526550A (zh) | 一种基于日志结构合并树的两阶段合并方法 | |
CN103514210A (zh) | 小文件处理方法及装置 | |
CN108089825A (zh) | 一种基于分布式集群的存储系统 | |
KR101438667B1 (ko) | 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법 | |
CN100507873C (zh) | 一种闪存中的flash文件的管理方法及系统 | |
CN102073743A (zh) | 一种大容量仿真结果文件存储与访问方法 | |
CN104778100A (zh) | 一种安全备份数据的方法 | |
US20100281082A1 (en) | Subordinate Multiobjects | |
CN103020323A (zh) | 一种基于未知长度二分查找的闪存数据检索存储的方法 | |
CN103049561A (zh) | 一种数据压缩方法、存储引擎及存储系统 | |
US6757804B2 (en) | Method and system for reducing fragmentation | |
CN100585597C (zh) | 一种文件组织方法 | |
CN109445693A (zh) | 一种数据压缩方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |