亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種文檔存儲方法及系統(tǒng)的制作方法

文檔序號:6559228閱讀:155來源:國知局

專利名稱::一種文檔存儲方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及一種文檔存儲方法及系統(tǒng),特別涉及一種軟件設(shè)計(jì)領(lǐng)域中文檔的存儲方法及系統(tǒng)。
背景技術(shù)
:在軟件設(shè)計(jì)領(lǐng)域內(nèi)的基礎(chǔ)技術(shù)中,幾乎任何桌面軟件都具有復(fù)雜的文檔結(jié)構(gòu),比如方正的飛騰排版軟件、微軟的O伍ce系列軟件、金山WPS軟件等,由于這些文檔結(jié)構(gòu)相當(dāng)復(fù)雜,且文檔容量大,用戶的交互式搡作頻率非常高,因此,如何高效的對文檔進(jìn)行存儲,對于桌面軟件來說是一個(gè)非常重要的問題?,F(xiàn)有技術(shù)中,對于文檔一般采用普通流式存儲和結(jié)構(gòu)化存儲的方式,下面對兩種存儲方式作簡單介紹。為了更好的闡述現(xiàn)有技術(shù)內(nèi)容,首先簡要說明兩個(gè)術(shù)語全量存儲與增量存儲。全量存儲是指在對文檔進(jìn)行保存的時(shí)候,無論前面已經(jīng)保存了多少次,每次都將整個(gè)文檔進(jìn)行保存,稱為全量存儲。增量存儲是指在對文檔進(jìn)行保存的時(shí)候,第一次采用全量存儲,以后進(jìn)行保存的時(shí)候,只是保存"從上次保存后文檔被修改的部分",沒有修改的部分則不進(jìn)行保存,稱為增量存儲。在對這兩個(gè)術(shù)語進(jìn)行定義后,下面對兩種存儲方式進(jìn)行介紹。1)、普通流式存儲的特點(diǎn)圖1為普通流式存儲中文檔對象的布局示意圖,普通流式存儲就是將文檔中的對象按順序依次存放在磁盤中,對象在文檔中的布局方式如圖l所示。由于流式存儲方法流程簡單,每個(gè)對象存儲時(shí)不需要在磁盤中定位,因此效率比較高。但是可以看到,但是由于文檔中無附加信息,無法對文檔中的對象進(jìn)行隨機(jī)訪問。也就是說,要訪問第N個(gè)對象,必須要將前N-1個(gè)對象讀出來之后,才知道第N個(gè)對象存放的位置。因此如果文檔首次存儲后,之后第N個(gè)對象發(fā)生了改變,那么不能單獨(dú)存儲第N個(gè)對象,必須對全文檔存儲一遍。2)、結(jié)構(gòu)化存儲的特點(diǎn)圖2為結(jié)構(gòu)化存儲中文檔對象的布局示意圖,結(jié)構(gòu)化存儲無論采用任何具體方法,都是可以通過對象的標(biāo)識(ID)直接找到其在石茲盤文檔中的位置,對象的存儲位置是對象的ID決定的。結(jié)構(gòu)化存儲的文檔對象布局如圖2所示。結(jié)構(gòu)化存儲的方式比流式存儲要復(fù)雜得多。由于對每個(gè)對象進(jìn)行讀寫時(shí)要進(jìn)行定位,在存儲對象時(shí)不能保證當(dāng)前位置沒有被占用,需要搜索下一個(gè)可用的位置。因此對于相同的數(shù)據(jù)量,結(jié)構(gòu)化存儲的效率會比流式存儲低。但是可以看到,由于某個(gè)對象在磁盤中的存儲位置是確定的(由ID計(jì)算),因此可以對某個(gè)對象進(jìn)行單獨(dú)存儲。也即是說,如果文檔首次存儲后,之后第N個(gè)對象發(fā)生了改變,那么可以定位到第N個(gè)對象的起始位置,單獨(dú)對對象N進(jìn)行存儲就可以了。這就是結(jié)構(gòu)化存儲實(shí)現(xiàn)增量存儲的原理。下表對流式存儲和結(jié)構(gòu)化存儲的特點(diǎn)進(jìn)行了比較,如表所示為:<table>tableseeoriginaldocumentpage7</column></row><table>從上表可知,普通流式存儲方法簡單、首次存儲效率高,但是無法實(shí)現(xiàn)增量存儲,而結(jié)構(gòu)化存儲方法比較復(fù)雜,首次存儲效率不如流式存儲。但是結(jié)構(gòu)化存儲可以實(shí)現(xiàn)增量存儲,這卻是流式存儲所無法實(shí)現(xiàn)的。但遺憾的是在目前的文檔存儲技術(shù)中,還沒有將這兩種存儲方式結(jié)合起來,從而發(fā)揮出二者優(yōu)點(diǎn)的技術(shù)方案出現(xiàn)。
發(fā)明內(nèi)容本發(fā)明提供一種文檔存儲方法及系統(tǒng),用以將普通流式存儲和結(jié)構(gòu)化存儲結(jié)合起來運(yùn)用于文檔存儲中。本發(fā)明文檔存儲方法包括如下步驟根據(jù)文檔及存儲的文檔對象信息記錄進(jìn)行讀取并操作,對所述文檔操作時(shí),記錄對所述文檔對象信息進(jìn)行的操作信息;存儲所述文檔及對所述文檔對象信息進(jìn)行操作的記錄。較佳地,所述記錄對所述文檔對象信息進(jìn)行的操作信息步驟,是在讀取的所述文檔對象信息記錄上進(jìn)4于記錄,或新建文檔對象信息記錄后進(jìn)行記錄。較佳地,進(jìn)一步包括如下步驟在緩存區(qū)中記錄對所述文檔對象信息進(jìn)行的操作信息;當(dāng)對所述文檔的操作結(jié)束時(shí),清除所述緩存區(qū)中對文檔對象信息進(jìn)行操作的所述記錄。較佳地,所述文檔對象信息是撤銷/重做信息。較佳地,所述記錄對所述文檔對象信息進(jìn)行的操作信息,是根據(jù)撤銷/重做對象數(shù)組中的信息進(jìn)行記錄的。較佳地,所述文檔對象信息是文檔對象的標(biāo)識及搡作狀態(tài)。較佳地,所述文檔中每個(gè)操作對象的標(biāo)識是唯一的。較佳地,所述操作狀態(tài)是對象的改變、和/或?qū)ο蟮膭h除、和/或?qū)ο蟮膭?chuàng)建。較佳地,所述根據(jù)文檔及保存的文檔對象信息記錄進(jìn)行讀取,包括當(dāng)文檔對象信息中操作狀態(tài)是對象的改變時(shí),將改變的對象標(biāo)識及操作狀態(tài)讀到所迷對象中;當(dāng)文檔對象信息中操作狀態(tài)是對象的刪除時(shí),將所述對象刪除;當(dāng)文檔對象信息中操作狀態(tài)是對象的創(chuàng)建時(shí),創(chuàng)建所述對象并讀入所述對象標(biāo)識及搡作狀態(tài)。較佳地,所述存儲所述文檔及對所迷文檔對象信息進(jìn)行操作的記錄,包括當(dāng)文檔對象信息中操作狀態(tài)是對象的改變時(shí),存儲所述改變的對象標(biāo)識及操作狀態(tài)到所述記錄中;當(dāng)文檔對象信息中操作狀態(tài)是對象的刪除時(shí),存儲所述對象標(biāo)識到所述記錄中;當(dāng)文檔對象信息中搡作狀態(tài)是對象的創(chuàng)建時(shí),存儲所述創(chuàng)建的對象標(biāo)識及操作狀態(tài)到所述記錄中。較佳地,進(jìn)一步包括如下步驟當(dāng)所述文檔對象數(shù)目大于預(yù)設(shè)閾值時(shí),存儲所述文檔。較佳地,進(jìn)一步包括如下步驟首次存儲文檔時(shí),將文檔對象按流式存儲。本發(fā)明還提供了一種文檔存儲系統(tǒng),包括存儲器、讀取編輯模塊、記錄模塊、存儲模塊,其中讀取編輯模塊,與所述存儲器相連,根據(jù)所述存儲器中所述存儲模塊存儲的文檔及文檔對象信息記錄進(jìn)行讀取并操作;記錄模塊,與所述存儲器、第一存儲模塊相連,在所述讀取編輯模塊對所述文檔操作時(shí),記錄對所述文檔對象信息進(jìn)行的操作信息;第一存儲模塊,與所述存儲器相連,根據(jù)所述記錄模塊的記錄,將所述文檔及對所述文檔對象信息進(jìn)行操作的記錄存儲至存儲器。較佳地,進(jìn)一步包括緩存、清除模塊,其中所述記錄模塊在所述緩存中記錄對所述文檔對象信息進(jìn)行的操作信息;清除模塊,用于當(dāng)所述讀取編輯模塊對文檔操作結(jié)束時(shí),清除所述記錄模塊在所述緩存中對文檔對象信息進(jìn)行操作的所述記錄。較佳地,所述文檔對象信息是撤銷/重做信息。較佳地,所述記錄模塊是根據(jù)撤銷/重做對象數(shù)組中的信息進(jìn)行記錄的。較佳地,所述文檔對象信息是文檔對象的標(biāo)識及操作狀態(tài)。較佳地,所述文檔中每個(gè)操作對象的標(biāo)識是唯一的。較佳地,所述操作狀態(tài)是對象的改變、和/或?qū)ο蟮膭h除、和/或?qū)ο蟮膭?chuàng)建。較佳地,所述讀取編輯模塊包括第一操作單元,用于當(dāng)文檔對象信息中操作狀態(tài)是對象的改變時(shí),將改變的對象標(biāo)識及操作狀態(tài)讀到所述對象中;第二操作單元,用于當(dāng)文檔對象信息中操作狀態(tài)是對象的刪除時(shí),將所述對象刪除;第三操作單元,用于當(dāng)文檔對象信息中操作狀態(tài)是對象的創(chuàng)建時(shí),創(chuàng)建所述對象并讀入所述對象標(biāo)識及操作狀態(tài)。較佳地,所述第一存儲模塊包括第一存儲單元,用于當(dāng)文檔對象信息中操作狀態(tài)是對象的改變時(shí),存儲所述改變的對象標(biāo)識及操作狀態(tài)到所述存儲器中;第二存儲單元,用于當(dāng)文檔對象信息中操作狀態(tài)是對象的刪除時(shí),存儲所述對象標(biāo)識到所述存儲器中;第三存儲單元,用于當(dāng)文檔對象信息中操作狀態(tài)是對象的創(chuàng)建時(shí),存儲所述創(chuàng)建的對象標(biāo)識及操作狀態(tài)到所述存儲器中。較佳地,進(jìn)一步包括檢測模塊、第二存儲才莫塊,其中第二存儲模塊,與所述存儲器相連,用于將所述文檔存儲至所述存儲器中;檢測模塊,與所述讀取編輯模塊、第一存儲模塊、第二存儲模塊相連,用于^r測所述讀取編輯-漠塊讀取的文檔,當(dāng)所述文檔對象數(shù)目大于預(yù)設(shè)閾值時(shí),關(guān)閉第一存儲模塊,開啟第二存儲模塊進(jìn)行存儲。較佳地,進(jìn)一步包括第三存儲模塊,與所述存儲器相連,用于在首次存儲文檔時(shí),將文檔按流式存儲至所述存儲器。本發(fā)明有益效果如下由于本發(fā)明是在基于流式存儲方法的基礎(chǔ)上實(shí)現(xiàn)了增量存儲,因此結(jié)合了兩種存儲的優(yōu)勢,使得當(dāng)本發(fā)明運(yùn)用于文檔容量超大情況下的系統(tǒng)中時(shí),能保持操作的穩(wěn)定、高效,還使得運(yùn)用文檔存儲的系統(tǒng)在運(yùn)行效率、運(yùn)行穩(wěn)定性、可操作數(shù)據(jù)容量等各種方面的性能都得到了大幅度的提高,效果十分突出。同時(shí),由于本發(fā)明是基于流式存儲以及結(jié)構(gòu)式存儲的基本原理進(jìn)^f亍的創(chuàng)造性結(jié)合,因此本發(fā)明對于任何文檔的存儲都具有通用性。優(yōu)選實(shí)施中,由于本發(fā)明在對文檔的首次存儲中使用了流式存儲,因而本發(fā)明中具備了流式存儲首次存儲高效率的優(yōu)點(diǎn)。優(yōu)選實(shí)施中,由于本發(fā)明對對象數(shù)設(shè)定了閾值,使得本發(fā)明存儲方式靈活多樣,能適應(yīng)各種要求。優(yōu)選實(shí)施中,本發(fā)明使用了Undo/Redo(撤銷/重做)原理來實(shí)現(xiàn)本發(fā)明,因此使得本發(fā)明容易實(shí)現(xiàn)、操作簡單。圖1為
背景技術(shù)
中所述普通流式存儲中文檔對象的布局示意圖;圖2為
背景技術(shù)
中所述結(jié)構(gòu)化存儲中文檔對象的布局示意圖;圖3為實(shí)施例中所述根據(jù)本發(fā)明存儲原理進(jìn)行操作的流程示意圖;圖4為實(shí)施例中所述本發(fā)明文檔存儲方法的實(shí)施流程示意圖;圖5為實(shí)施例中所述本發(fā)明文檔存儲系統(tǒng)的結(jié)構(gòu)示意圖。具體實(shí)施方式下面結(jié)合附圖對本發(fā)明的具體實(shí)施進(jìn)行說明。為了將普通流式存儲及結(jié)構(gòu)化存儲的優(yōu)勢結(jié)合起來,本發(fā)明提出了基于流式存儲的增量存儲方法,現(xiàn)將本發(fā)明構(gòu)思原理闡述如下首先,在本發(fā)明構(gòu)思中,在首次存儲文檔中的所有對象時(shí),采用了普通流式存儲的方法進(jìn)行文檔的首次存儲,其目的是保證了首次存儲的高效率。下面進(jìn)一步闡述本發(fā)明的構(gòu)思,為便于理解,將本文中文檔首次存儲的部分稱為"基礎(chǔ)部分"。然后利用Undo/Redo(撤銷/重做)的原理來實(shí)現(xiàn)文檔的增量存儲。用Undo/Redo來進(jìn)行il明是因?yàn)閹缀醅F(xiàn)在所有的文檔式應(yīng)用程序中,都提供了撤銷/重做功能,如Word、Excel,還有寫Java程序用的JBuiider。如果說在早期,許多的應(yīng)用程序還只能提供單一的Undo/Redo功能的話,自進(jìn)入90年代以來,隨著面向?qū)ο缶幊?ObjectOrientedProgramming,OOP)及設(shè)計(jì)模式(DesignPattern)的流行,實(shí)現(xiàn)無限次數(shù)的Undo/Redo編輯功能已不是難事。因此本發(fā)明在闡述本發(fā)明的構(gòu)思時(shí),將使用Undo/Redo來說明本發(fā)明的具體實(shí)施方式,但隨著對本發(fā)明的進(jìn)一步闡述,顯而易見的是,Undo/Redo僅僅是實(shí)現(xiàn)本發(fā)明的一個(gè)4支術(shù)手段,實(shí)現(xiàn)本發(fā)明并不僅僅局限于使用Undo/Redo的原理。本發(fā)明構(gòu)思在于,當(dāng)文檔在被首次存儲后,如果再對文檔進(jìn)行修改,則僅將對文檔修改的部分作為Redo信息搜集起來。這樣當(dāng)再次進(jìn)行存儲的時(shí)候,只是將該Redo信息存儲在基礎(chǔ)部分的后面,作為"增量部分"。從而實(shí)現(xiàn)了文檔的增量存儲。為方便闡述,以將增量部分的信息保存在文檔中作為實(shí)施例,但是,顯然增量部分的保存在具體實(shí)施中并不必然需要保存在文檔中,比如也可單獨(dú)將增量部分的信息保存在一個(gè)獨(dú)立的文檔中,也可開辟別的存儲區(qū)來保存,同時(shí)也不必用文檔形式保存。這樣在本發(fā)明實(shí)施時(shí),在打開文檔的時(shí)候,先讀入基礎(chǔ)部分,然后讀入增量部分,在基礎(chǔ)部分的基礎(chǔ)上做一次Redo,就可得到最終的文檔信息。而當(dāng)文檔再做修改的時(shí)候,可以在原有的Redo信息中繼續(xù)累加信息,這樣存儲的時(shí)候,僅需覆蓋文檔中舊的增量部分即可。對于增量的保存來說,可以采用一段增量,也可以采用多段增量的方式。也就是在打開一個(gè)已經(jīng)有增量信息的文件時(shí),先讀文件中的增量信息,重建增量對象信息的集合。再做操作時(shí),將對象信息追加到這個(gè)集合中。保存文件時(shí),覆蓋以前的增量信息。這樣文件中永遠(yuǎn)只是存在一段增量。當(dāng)然打開文件后也可以不重建增量對象信息的集合,而是新建增量對象的集合,這樣就形成了多段增量。這樣無論是連續(xù)保存,還是重新打開文件,都可以覆蓋增量形成一段增量,或者是不覆蓋增量形成多段增量。下述實(shí)施例中我們以采用一賴:增量的方式進(jìn)行說明。圖3為根據(jù)本發(fā)明存儲原理進(jìn)行操作的流程示意圖,下表是結(jié)合附圖對本發(fā)明在實(shí)施時(shí)的Redo信息以及文檔的變化進(jìn)行的說明,以便更進(jìn)一步的闡述本發(fā)明構(gòu)思,表中分別為在對應(yīng)步驟時(shí)Redo信息和文檔的狀態(tài)。5301、新建文檔;5302、做系列操作;5303、保存文檔;5304、再做系列操作,此時(shí)有Redo信息;5305、保存文檔,將Redo信息寫入文檔作為增量部分;5306、再做系列操作,將Redo信息追加進(jìn)文檔增量部分;5307、再保存文檔,將Redo信息寫入文檔,覆蓋舊的增量部分,可以任意次重復(fù)步驟S306到S307;5308、關(guān)閉文檔,此時(shí)將Redo信息清空,文檔中保留了基礎(chǔ)部分和覆蓋后的增量部分;5309、打開文檔,Redo信息同步驟S307,文檔同S307,可以任意次重復(fù)步驟S306到S308。<table>tableseeoriginaldocumentpage13</column></row><table>保存文檔六基礎(chǔ)部分再做系列操作有基礎(chǔ)部分保存文檔有基礎(chǔ)部分和增量部分再做系列操作有基礎(chǔ)部分和增量部分再保存文檔有舊的增量部分被覆蓋關(guān)閉文檔-漆々/月同再保存文檔打開文檔同再保存文檔同再保存文檔基于以上構(gòu)思,下面結(jié)合本發(fā)明的具體實(shí)施方式。具體實(shí)施時(shí),一個(gè)文檔的存儲有以下幾個(gè)基本步驟收集文檔對象信息存儲文檔、讀文檔,下面先通過這幾個(gè)步驟的描述來進(jìn)一步闡明本發(fā)明的實(shí)施。一、搜集文檔對象及操作狀態(tài)。當(dāng)以Redo的原理為例來說明具體實(shí)施,首先需要建立文檔操作的Redo信息,在這個(gè)信息中記錄了文檔的對象以及這個(gè)對象的操作狀態(tài)。先為文檔中創(chuàng)建的每個(gè)對象都被分配一個(gè)唯一的ID。同時(shí),將對文檔的操作歸納為3種情況A、對象的改變表示為(IDModify);B、對象的刪除表示為(IDDelete);C、對象的創(chuàng)建表示為(IDCreate)。在操作過程中,可以將文檔中每個(gè)對象的ID以及上述三種操作狀態(tài)記錄到一個(gè)Redo對象數(shù)組中,再根據(jù)Redo對象數(shù)組保存Redo信息。二、存儲文檔Redo信息。在存儲文檔時(shí),不是要存儲整個(gè)文檔,而是存儲文檔的Redo信息。具體方法是根據(jù)Redo對象數(shù)組中的信息,將操作狀態(tài)為"對象的改變"及"對象的創(chuàng)建"的對象的ID及操作狀態(tài)記錄到文檔中;對于操作狀態(tài)為"對象的刪除"的對象,僅僅記錄其ID到文檔中就可以了,于是這樣就將Redo信息記錄到了文檔中。三、讀文檔及Redo信息。本發(fā)明在實(shí)施時(shí),在打開文檔時(shí),首先將文檔的基礎(chǔ)部分讀到緩存區(qū)中,然后再讀取Redo信息,實(shí)施中將內(nèi)存作為緩存區(qū)為例來給予說明,即將文檔的基礎(chǔ)部分以及Redo信息讀入內(nèi)存中。由于對每個(gè)對象都采用了一個(gè)唯一的ID進(jìn)行標(biāo)識,因此在讀取Redo信息的時(shí)候,通過ID以及操作狀態(tài)就知道是對哪些對象進(jìn)行了那些操作。對于Redo信息中操作狀態(tài)為"對象的創(chuàng)建"的對象,在內(nèi)存中創(chuàng)建該對象并讀入該對象信息;對于操作狀態(tài)為"對象的改變"的對象,則將Redo中記錄的信息讀到該對象中;對于操作狀態(tài)為"對象的刪除,,的對象,則從內(nèi)存中直接刪除該對象。這樣就將基礎(chǔ)文檔連同Redo信息讀到內(nèi)存中了。在讀取Redo信息的同時(shí),可以重建Redo對象數(shù)組,當(dāng)用戶再做操作的時(shí)候,將對象的操作累加到該Redo對象數(shù)組中,再按第二步的方法進(jìn)行文檔存儲,可以看出,如此反復(fù),就實(shí)現(xiàn)了文檔的增量存儲。優(yōu)選實(shí)施中,還考慮到了在Redo信息數(shù)組中累積的對象過多時(shí),采用全量存儲將會使存儲效率更高。因此在具體實(shí)施時(shí)設(shè)定一個(gè)閾值,當(dāng)文檔的對象超過閾值時(shí)采用全量存儲,即將整個(gè)文檔進(jìn)行存儲,不再保存Redo信息。經(jīng)過試驗(yàn),可以優(yōu)選1000作為文檔對象數(shù)量的閾值,也就是當(dāng)被操作的對象少于1000個(gè)時(shí),采用增量存儲。當(dāng)被操作的對象超過1000個(gè)時(shí),采用全量存儲。圖4為本發(fā)明文檔存儲方法的實(shí)施流程示意圖,基于上述構(gòu)思,本發(fā)明在文檔存儲方法實(shí)施時(shí)流程如圖所示為5401、新建文檔;5402、操作版面;5403、搜集增量信息;5404、判斷是否存儲文檔,是則轉(zhuǎn)入步驟S405,否則轉(zhuǎn)入步驟S406;5405、存儲增量信息;5406、判斷是否關(guān)閉文檔,是則轉(zhuǎn)入步驟S407,否則轉(zhuǎn)入步驟S402;5407、清除增量信息;5408、文檔操作結(jié)束。根據(jù)前述原理,優(yōu)選實(shí)施中,在步驟S401新建文檔時(shí)采用流式存儲。在步驟S403中,在搜集增量信息時(shí),當(dāng)發(fā)現(xiàn)對象個(gè)數(shù)大于設(shè)定的閾值時(shí),則改釆用全量存儲。根據(jù)上述的發(fā)明構(gòu)思,本發(fā)明還提供了一種文檔存儲系統(tǒng),下面結(jié)合附圖對本系統(tǒng)的具體實(shí)施方式進(jìn)行說明。圖5是本發(fā)明文檔存儲系統(tǒng)的結(jié)構(gòu)示意圖,如圖所示,在本系統(tǒng)中包括存儲器501、讀取編輯模塊502、記錄模塊503、第一存儲模塊504、清除模塊505、緩存506、檢測模塊507、第二存儲模塊508、第三存儲模塊509。在讀取編輯模塊502中包括第一操作單元5021、第二操作單元5022、第三操作單元5023,在第一存儲單元504中包括第一存儲單元5041、第二存儲單元5042、第三存儲單元5043。下面首先對本系統(tǒng)中各模塊、單元的位置、結(jié)構(gòu)關(guān)系進(jìn)4亍描述,然后再通過對各模塊、單元的工作原理及功能的說明來闡述如何具體實(shí)施本系統(tǒng)以實(shí)現(xiàn)本發(fā)明。系統(tǒng)中,與存儲器501相連的分別有讀取編輯模塊502、第一存儲模塊504第二存儲模塊508、第三存儲模塊509;記錄模塊503分別與讀取編輯模塊502、第一存儲模塊504、緩存506相連;檢測模塊507分別與讀取編輯模塊502、第一存儲模塊504、第二存儲模塊508相連;緩存506上連接了清除模塊505。仍以Redo的原理為例來說明本系統(tǒng)的具體實(shí)施,首先需要建立文檔操作的Redo信息,在這個(gè)信息中記錄了文檔的對象以及這個(gè)對象的操作狀態(tài)。先為文檔中創(chuàng)建的每個(gè)對象都被分配一個(gè)唯一的ID。同時(shí),將對文檔的操作歸納為3種情況A、對象的改變表示為(IDModify);B、對象的刪除表示為(IDDelete);C、對象的創(chuàng)建表示為(IDCreate)。在操作過程中,可以將文檔中每個(gè)對象的ID以及上述三種操作狀態(tài)記錄到一個(gè)Redo對象數(shù)組中,再根據(jù)Redo對象數(shù)組保存Redo信息。在具體實(shí)施時(shí),讀取編輯模塊根據(jù)存儲器中存儲模塊存儲的文檔及文檔對象信息記錄進(jìn)行讀取并操作,記錄模塊在讀取編輯模塊對文檔進(jìn)行操作時(shí),記錄對文檔對象信息進(jìn)行的操作信息,第一存儲模塊根據(jù)記錄模塊的記錄,將文檔及對文檔對象信息進(jìn)行操作的記錄存儲至存儲器。讀取編輯模塊包括用于當(dāng)文檔對象信息中操作狀態(tài)是"對象的改變"時(shí),將改變的對象標(biāo)識及操作狀態(tài)讀到所述對象中的第一操作單元;用于當(dāng)文檔對象信息中操作狀態(tài)是"對象的刪除"時(shí),將所述對象刪除的第二操作單元;用于當(dāng)文檔對象信息中操作狀態(tài)是"對象的創(chuàng)建"時(shí),創(chuàng)建所述對象并讀入所述對象標(biāo)識及操作狀態(tài)的第三操作單元。第一存儲模塊包括用于當(dāng)文檔對象信息中操作狀態(tài)是"對象的改變"時(shí),存儲所述改變的對象標(biāo)識及操作狀態(tài)到所述存儲器中的第一存儲單元;用于當(dāng)文檔對象信息中操作狀態(tài)是"對象的刪除"時(shí),存儲所述對象標(biāo)識到所述存儲器中的第二存儲單元;用于當(dāng)文檔對象信息中操作狀態(tài)是"對象的創(chuàng)建"時(shí),存儲所述創(chuàng)建的對象標(biāo)識及操作狀態(tài)到所述存儲器中的第三存儲單元。即在讀取編輯^i塊打開文檔后,首先將文檔的基礎(chǔ)部分讀到緩存中,然后再讀取Redo信息,實(shí)施中將內(nèi)存作為緩存區(qū)為例來給予說明,即將文檔的基礎(chǔ)部分以及Redo信息讀入內(nèi)存中。由于對每個(gè)對象都采用了一個(gè)唯一的ID進(jìn)行標(biāo)識,因此在讀取Redo信息的時(shí)候,記錄模塊通過ID以及操作狀態(tài)就知道是對哪些對象進(jìn)行了那些操作。對于Redo信息中操作狀態(tài)為"對象的創(chuàng)建"的對象,第三操作單元在內(nèi)存中創(chuàng)建該對象并讀入該對象信息;對于操作狀態(tài)為"對象的改變"的對象,第一操作單元?jiǎng)t將Redo中記錄的信息讀到該對象中;對于操作狀態(tài)為"對象的刪除,,的對象,第三操作單元?jiǎng)t從內(nèi)存中直接刪除該對象。這樣就將基礎(chǔ)文檔連同Redo信息讀到內(nèi)存中了。在第一存儲模塊存儲文檔時(shí),不是要存儲整個(gè)文檔,而是存儲文檔的Redo信息。具體是根據(jù)Redo對象數(shù)組中的信息,第一存儲單元將操作狀態(tài)為"對象的改變"、第二存儲單元將操作狀態(tài)為"對象的創(chuàng)建"的對象的ID及操作狀態(tài)記錄到文檔中;對于操作狀態(tài)為"對象的刪除"的對象,第三存儲單元僅僅記錄其ID到文檔中就可以了,于是這樣就將Redo信息記錄到了文檔中。在讀取Redo信息的同時(shí),可以重建Redo對象數(shù)組,當(dāng)用戶再做操作的時(shí)候,記錄模塊將對象的操作累加到該Redo對象數(shù)組中,存儲模塊再進(jìn)行文檔存儲,可以看出,如此反復(fù),就實(shí)現(xiàn)了文檔的增量存儲。優(yōu)選實(shí)施中,記錄^t塊在緩存中記錄對文檔對象信息進(jìn)行的操作信息,當(dāng)讀取編輯模塊對文檔的操作結(jié)束時(shí),清除模塊清除記錄模塊在緩存中對文檔對象信息進(jìn)行操作的記錄。優(yōu)選實(shí)施中,考慮到在Redo信息數(shù)組中累積的對象過多時(shí),采用全量存儲將會使存儲效率更高。因此在檢測模塊中設(shè)定一個(gè)閾值,當(dāng)文檔的對象超過閾值時(shí)開啟第二存儲模塊采用全量存儲,即將整個(gè)文檔進(jìn)行存儲,不再保存Redo信息。經(jīng)過試驗(yàn),可以優(yōu)選1000作為文檔對象數(shù)量的閾值,也就是當(dāng)被操作的對象少于1000個(gè)時(shí),采用增量存儲。當(dāng)被操作的對象超過1000個(gè)時(shí),采用全量存儲。也就是檢測模塊檢測讀取編輯模塊讀取的文檔,當(dāng)文檔對象數(shù)目大于閾值時(shí),關(guān)閉第一存儲才莫塊,開啟第二存儲模塊進(jìn)行存儲。優(yōu)選實(shí)施中,為了保證了首次存儲的高效率,在首次存儲文檔中的所有對象時(shí),采用了普通流式存儲的方法進(jìn)行文檔的首次存儲,也就是第三存儲模塊,在首次存儲文檔時(shí),將文檔按流式存儲至存儲器。通過對本發(fā)明種方法與系統(tǒng)的實(shí)施,顯然能得到下表中對普通流式存儲、結(jié)構(gòu)化存儲及基于流式存儲的增量存儲的優(yōu)劣進(jìn)行比較的結(jié)論方式普通流式存儲結(jié)構(gòu)化存儲本發(fā)明基于流式存儲的增量存儲存儲效率高低高增量存儲不能實(shí)現(xiàn)能實(shí)現(xiàn)能實(shí)現(xiàn)首次存儲效率高效率低效率高后繼存儲效率低效率高效率高實(shí)現(xiàn)方法很簡單復(fù)雜較簡單為進(jìn)一步的證明本發(fā)明具有顯著的進(jìn)步,將本發(fā)明與流式、結(jié)構(gòu)式存儲分別運(yùn)用于方正的排版系統(tǒng)中,通過實(shí)驗(yàn),三種存儲方式實(shí)際效率比較數(shù)據(jù)如下:存儲方式普通流式存儲時(shí)間結(jié)構(gòu)化存儲時(shí)間本發(fā)明存儲時(shí)間1000頁長文檔首次存儲3秒16秒3秒后繼存儲3秒0.2秒0.2秒超大股市表版面首次存儲2秒9.24秒2秒后繼存儲2秒0.2秒0.1秒顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。權(quán)利要求1、一種文檔存儲方法,其特征在于,包括如下步驟根據(jù)文檔及存儲的文檔對象信息記錄進(jìn)行讀取并操作,對所迷文檔操作時(shí),記錄對所述文檔對象信息進(jìn)行的操作信息;存儲所述文檔及對所述文檔對象信息進(jìn)行操作的記錄。2、如權(quán)利要求1所述的方法,其特征在于,所述記錄對所述文檔對象信息進(jìn)行的操作信息步驟,是在讀取的所述文檔對象信息記錄上進(jìn)行記錄,或新建文檔對象信息記錄后進(jìn)行記錄。3、如權(quán)利要求l所述的方法,其特征在于,進(jìn)一步包括如下步驟在緩存區(qū)中記錄對所述文檔對象信息進(jìn)行的操作信息;當(dāng)對所述文檔的操作結(jié)束時(shí),清除所述緩存區(qū)中對文檔對象信息進(jìn)行操作的所述記錄。4、如權(quán)利要求1或2或3所述的方法,其特征在于,所述文檔對象信息是撤銷/重做信息。5、如權(quán)利要求1或2或3所述的方法,其特征在于,所述記錄對所述文檔對象信息進(jìn)行的操作信息,是根據(jù)撤銷/重做對象數(shù)組中的信息進(jìn)行記錄的。6、如權(quán)利要求1或2或3所述的方法,其特征在于,所述文檔對象信息是文檔對象的標(biāo)識及"t喿作狀態(tài)。7、如權(quán)利要求6所述的方法,其特征在于,所述文檔中每個(gè)操作對象的標(biāo)識是唯一的。8、如權(quán)利要求6所述的方法,其特征在于,所述操作狀態(tài)是對象的改變、和/或?qū)ο蟮膭h除、和/或?qū)ο蟮膭?chuàng)建9、如權(quán)利要求8所述的方法,其特征在于,所述根據(jù)文檔及保存的文檔對象信息記錄進(jìn)行讀取,包括當(dāng)文檔對象信息中操作狀態(tài)是對象的改變時(shí),將改變的對象標(biāo)識及操作狀態(tài)讀到所述對象中;當(dāng)文檔對象信息中操作狀態(tài)是對象的刪除時(shí),將所述對象刪除;當(dāng)文檔對象信息中操作狀態(tài)是對象的創(chuàng)建時(shí),創(chuàng)建所述對象并讀入所述對象標(biāo)識及纟喿作狀態(tài)。10、如權(quán)利要求8所述的方法,其特征在于,所述存儲所述文檔及對所述文檔對象信息進(jìn)行操作的記錄,包括當(dāng)文檔對象信息中操作狀態(tài)是對象的改變時(shí),存儲所述改變的對象標(biāo)識及操作狀態(tài)到所述記錄中;當(dāng)文檔對象信息中操作狀態(tài)是對象的刪除時(shí),存儲所述對象標(biāo)識到所述記錄中;當(dāng)文檔對象信息中操作狀態(tài)是對象的創(chuàng)建時(shí),存儲所述創(chuàng)建的對象標(biāo)識及操作狀態(tài)到所述記錄中。11、如權(quán)利要求l所述的方法,其特征在于,進(jìn)一步包括如下步驟當(dāng)所述文檔對象數(shù)目大于預(yù)設(shè)閾值時(shí),存儲所述文檔。12、如權(quán)利要求l所述的方法,其特征在于,進(jìn)一步包括如下步驟首次存儲文檔時(shí),將文檔對象按流式存儲。13、一種文檔存儲系統(tǒng),包括存儲器,其特征在于,還包括讀取編輯模塊、記錄模塊、存儲模塊,其中讀取編輯模塊,與所述存儲器相連,根據(jù)所述存儲器中所述存儲模塊存儲的文檔及文檔對象信息記錄進(jìn)行讀取并操作;記錄模塊,與所述存儲器、第一存儲模塊相連,在所述讀取編輯模塊對所述文檔操作時(shí),記錄對所述文檔對象信息進(jìn)行的操作信息;第一存儲模塊,與所述存儲器相連,根據(jù)所述記錄模塊的記錄,將所述文檔及對所述文檔對象信息進(jìn)行操作的記錄存儲至存儲器。14、如權(quán)利要求13所述的系統(tǒng),其特征在于,進(jìn)一步包括緩存、清除模塊,其中所述記錄模塊在所述援存中記錄對所述文檔對象信息進(jìn)行的操作信息;清除模塊,與緩存相連,用于當(dāng)所述讀取編輯模塊對文檔操作結(jié)束時(shí),清除所述記錄模塊在所述緩存中對文檔對象信息進(jìn)行操作的所述記錄。15、如權(quán)利要求13或14所述的系統(tǒng),其特征在于,所述文檔對象信息是撤銷/重做信息。16、如權(quán)利要求13或14所述的系統(tǒng),其特征在于,所述記錄模塊是根據(jù)撤銷/重做對象數(shù)組中的信息進(jìn)行記錄的。17、如權(quán)利要求13或14所述的系統(tǒng),其特征在于,所述文檔對象信息是文檔對象的標(biāo)識及操作狀態(tài)。18、如權(quán)利要求17所述的系統(tǒng),其特征在于,所述文檔中每個(gè)操作對象的標(biāo)識是唯一的。19、如權(quán)利要求17所述的系統(tǒng),其特征在于,所述操作狀態(tài)是對象的改變、和/或?qū)ο蟮膭h除、和/或?qū)ο蟮膭?chuàng)建。20、如權(quán)利要求19所述的系統(tǒng),其特征在于,所述讀取編輯模塊包括第一操作單元,用于當(dāng)文檔對象信息中操作狀態(tài)是對象的改變時(shí),將改變的對象標(biāo)識及操作狀態(tài)讀到所述對象中;第二操作單元,用于當(dāng)文檔對象信息中操作狀態(tài)是對象的刪除時(shí),將所述對象刪除;第三操作單元,用于當(dāng)文檔對象信息中操作狀態(tài)是對象的創(chuàng)建時(shí),創(chuàng)建所述對象并讀入所述對象標(biāo)識及操作狀態(tài)。21、如權(quán)利要求19所述的系統(tǒng),其特征在于,所述第一存儲模塊包括第一存儲單元,用于當(dāng)文檔對象信息中操作狀態(tài)是對象的改變時(shí),存儲所述改變的對象標(biāo)識及操作狀態(tài)到所述存儲器中;第二存儲單元,用于當(dāng)文檔對象信息中才乘作狀態(tài)是對象的刪除時(shí),存儲所述對象標(biāo)識到所述存儲器中;第三存儲單元,用于當(dāng)文檔對象信息中操作狀態(tài)是對象的創(chuàng)建時(shí),存儲所述創(chuàng)建的對象標(biāo)識及操作狀態(tài)到所述存儲器中。22、如權(quán)利要求13所述的系統(tǒng),其特征在于,進(jìn)一步包括檢測模塊、第二存儲模塊,其中第二存儲模塊,與所述存儲器相連,用于將所述文檔存儲至所述存儲器中;檢測模塊,與所述讀取編輯模塊、第一存儲模塊、第二存儲模塊相連,用于檢測所述讀取編輯;漠塊讀取的文檔,當(dāng)所述文檔對象數(shù)目大于預(yù)設(shè)閾值時(shí),關(guān)閉第一存儲模塊,開啟第二存儲模塊進(jìn)行存儲。23、如權(quán)利要求13所述的系統(tǒng),其特征在于,進(jìn)一步包括第三存儲模塊,與所述存儲器相連,用于在首次存儲文檔時(shí),將文檔按流式存儲至所述存儲器。全文摘要本發(fā)明公開了一種軟件設(shè)計(jì)領(lǐng)域中文檔的存儲方法及系統(tǒng),用以將普通流式存儲和結(jié)構(gòu)化存儲結(jié)合起來運(yùn)用于文檔存儲中。本發(fā)明是根據(jù)文檔及存儲的文檔對象信息記錄進(jìn)行讀取并操作,當(dāng)對文檔操作時(shí),記錄對文檔對象信息進(jìn)行的操作信息;存儲文檔及對文檔對象信息進(jìn)行操作的記錄。本發(fā)明結(jié)合了兩種存儲的優(yōu)勢,當(dāng)本發(fā)明運(yùn)用于文檔容量超大情況下的系統(tǒng)中時(shí),使得系統(tǒng)在運(yùn)行效率、運(yùn)行穩(wěn)定性、可操作數(shù)據(jù)容量等各種方面的性能都得到了大幅度的提高,效果十分突出。同時(shí),由于本發(fā)明是基于流式存儲以及結(jié)構(gòu)式存儲的基本原理進(jìn)行的創(chuàng)造性結(jié)合,因此本發(fā)明對于任何文檔的存儲都具有通用性。文檔編號G06F17/30GK101122906SQ20061008922公開日2008年2月13日申請日期2006年8月9日優(yōu)先權(quán)日2006年8月9日發(fā)明者楊雷鳴,王振斌申請人:北京北大方正電子有限公司;北京大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1