專利名稱:一種使用類聚簇的實時數(shù)據(jù)庫存儲方法
技術(shù)領(lǐng)域:
本技術(shù)發(fā)明涉及工業(yè)自動化領(lǐng)域,尤其涉及分布式監(jiān)控系統(tǒng)領(lǐng)域,本技術(shù)發(fā)明可 廣泛適用于工業(yè)自動化領(lǐng)域的電網(wǎng)監(jiān)控、電氣化鐵路和城市軌道交通各專業(yè)以及綜合監(jiān)控
等應(yīng)用。
背景技術(shù):
在工業(yè)控制領(lǐng)域,隨著自動化技術(shù)的發(fā)展,越來越多的工程應(yīng)用,如工業(yè)生產(chǎn)、電 力調(diào)度、樓宇自動化、火災(zāi)防控等,使用監(jiān)控系統(tǒng)實現(xiàn)過程或應(yīng)用自動化。監(jiān)控系統(tǒng)應(yīng)用于 某一工程時,一般先依據(jù)工程應(yīng)用的需求配置需要的數(shù)據(jù)結(jié)構(gòu),然后在運行時根據(jù)配置生 成對應(yīng)的實時數(shù)據(jù)庫內(nèi)的數(shù)據(jù),并圍繞實時數(shù)據(jù)庫這一系統(tǒng)核心模塊,運行人機(jī)界面、報警 等系統(tǒng)的各種上層服務(wù)。但是由于工程應(yīng)用的需求往往隨著現(xiàn)實情況的變化而改變,這經(jīng) 常導(dǎo)致需要對實時數(shù)據(jù)庫內(nèi)的數(shù)據(jù)進(jìn)行修改,例如增添沒有的數(shù)據(jù),或者刪除已有的數(shù)據(jù) 等等,以適應(yīng)應(yīng)用的需要。這種對實時數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行修正,使得它可以滿足變化的需 求的過程稱為提交。傳統(tǒng)的監(jiān)控系統(tǒng)的實時數(shù)據(jù)庫一般采用離線式提交。即首先確定所有需要進(jìn)行的 修改并對配置進(jìn)行相應(yīng)的修正,然后停止系統(tǒng)的運行,重新根據(jù)修正后的配置生成實時數(shù) 據(jù)庫中的數(shù)據(jù),然后再次運行系統(tǒng)。這種離線式提交的方式需要在一定時間內(nèi)停止系統(tǒng)的 運行,而現(xiàn)代工程應(yīng)用更期望監(jiān)控系統(tǒng)持續(xù)運行,因此不少現(xiàn)代監(jiān)控系統(tǒng)的實時數(shù)據(jù)庫采 用運行時提交的方式。一種運行時提交的方式是停止實時數(shù)據(jù)庫的服務(wù),根據(jù)修改過的配置重新生成實 時數(shù)據(jù)庫內(nèi)的數(shù)據(jù),然后再開啟實時數(shù)據(jù)庫的服務(wù)。采用這種方式,雖然系統(tǒng)仍然在運行, 但是在重新生成整個實時數(shù)據(jù)庫的過程中,不提供實時數(shù)據(jù)服務(wù),那么在相當(dāng)長的一段時 間內(nèi)系統(tǒng)失去響應(yīng),這種運行時提交的方式相比于離線提交的方式并無太多實質(zhì)性改進(jìn)。另一種運行時提交的方式是在初次配置時為將來可能增加的數(shù)據(jù)預(yù)留足夠的空 間,當(dāng)需求發(fā)生變化時,暫停實時數(shù)據(jù)庫的服務(wù),根據(jù)配置的變化對實時數(shù)據(jù)庫中的數(shù)據(jù)進(jìn) 行修正,然后恢復(fù)實時數(shù)據(jù)庫的服務(wù)。采用這種方式,由于只是對實時數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行 修正,而非全部重新生成,也就是增量提交,而非完全提交,因此失去響應(yīng)的時間要短的多。 但即使如此,相對于數(shù)據(jù)的實時訪問這種實時操作而言,這種時間依然過于漫長,甚至是難 以接受的。更重要的是,由于提交時實時數(shù)據(jù)庫中的數(shù)據(jù)修正是由工程需求變化導(dǎo)致的,因 此難以在初次配置時預(yù)計這種變化,同時又由于各種類型數(shù)據(jù)所占的空間不同,因此在初 次配置時難以準(zhǔn)確的預(yù)留合適的數(shù)據(jù)空間,往往造成大量的額外空間浪費,降低系統(tǒng)的時 空性能。還有一種運行時提交的方式是對實時數(shù)據(jù)庫中的每一個數(shù)據(jù)獨立分配空間,當(dāng)提 交時,因為各個數(shù)據(jù)的空間是獨立的,就可以很方便的刪除已有數(shù)據(jù),并為新的數(shù)據(jù)分配空 間。而且采用這種方式,可以將提交的多個操作分別穿插于各個實時數(shù)據(jù)訪問之間,從而不 需要暫停實時數(shù)據(jù)服務(wù)。但是在這種情況下,由于實時數(shù)據(jù)庫為每一個數(shù)據(jù)獨立分配空間,
4在組織管理上稍顯困難;而且由于各種數(shù)據(jù)類型需要的空間大小不一,伴隨著多次提交中 增刪操作的進(jìn)行,在計算機(jī)內(nèi)存中會產(chǎn)生大量無法重用的碎片,隨著系統(tǒng)的運行??臻g資源 的開銷將不斷增加,甚至耗盡從而導(dǎo)致系統(tǒng)崩潰,這是難以接受的。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中存在的不足,本發(fā)明的目的是,實時數(shù)據(jù)庫的提交(除初次提交 外)表現(xiàn)出這樣一些特點>實時數(shù)據(jù)庫的提交是由工程應(yīng)用的需求變化導(dǎo)致的,因此實時數(shù)據(jù)庫提交時的 數(shù)據(jù)變化是難以在初次提交時預(yù)計的。>實時數(shù)據(jù)庫提交時需要修正的數(shù)據(jù)量與初次提交時完全生成的數(shù)據(jù)量相比是很 小的。>實時數(shù)據(jù)庫的提交頻率與實時數(shù)據(jù)訪問的頻率相比是非常小的。>實時數(shù)據(jù)庫中各種類型的數(shù)據(jù)的特性各異,所占的空間大小也不一致??紤]到實時數(shù)據(jù)庫的提交所具有的這些特點,應(yīng)當(dāng)在實時數(shù)據(jù)庫中采用有效的存 儲結(jié)構(gòu),使得實時數(shù)據(jù)庫在提交時盡可能滿足這樣一些要求令實時數(shù)據(jù)庫的提交應(yīng)當(dāng)采用運行時提交方式,而避免使用離線提交方式,從而 支持系統(tǒng)的持續(xù)運行。今實時數(shù)據(jù)庫的提交應(yīng)當(dāng)采用增量提交方式,而不是完全提交方式,從而減少提 交的需要的時間。令實時數(shù)據(jù)庫提交過程中的數(shù)據(jù)修正操作應(yīng)當(dāng)可以獨立分別進(jìn)行,而不是連續(xù)進(jìn) 行,并且單個數(shù)據(jù)修正操作和單次實時數(shù)據(jù)訪問的時間開銷應(yīng)當(dāng)是可比的,從而避免實時 數(shù)據(jù)庫長時間無響應(yīng)。今實時數(shù)據(jù)庫中的數(shù)據(jù)所需要的空間資源應(yīng)當(dāng)動態(tài)分配,而不是一次性分配,從 而避免過多的預(yù)分配空間資源浪費。今實時數(shù)據(jù)庫中的數(shù)據(jù)使用的空間資源應(yīng)當(dāng)可以重用,而不是釋放后無法再次使 用,從而避免空間資源開銷不斷增加而導(dǎo)致資源耗盡,系統(tǒng)崩潰。因此這里提供一種使用類聚簇的實時數(shù)據(jù)庫存儲方法,從而滿足實時數(shù)據(jù)庫提交 時的上述一些要求。本發(fā)明采用的技術(shù)方案是一種使用類聚簇的實時數(shù)據(jù)庫存儲方法,其特征在于,它包括構(gòu)造步驟,采用類似于數(shù)據(jù)庫中聚簇的一種數(shù)據(jù)結(jié)構(gòu)作為基本數(shù)據(jù)單元,每個數(shù) 據(jù)單元中包含一個同種數(shù)據(jù)類型的列表,數(shù)據(jù)列表中只存放該類型數(shù)據(jù),因此每個數(shù)據(jù)占 有的空間大小是一致的,這個數(shù)據(jù)單元同時還包含一個為這個數(shù)據(jù)列表建立的位圖,位圖 的長度等于列表中數(shù)據(jù)的個數(shù),位圖中每一位與列表中的一個數(shù)據(jù)順序?qū)?yīng),表示這一數(shù) 據(jù)是可使用還是已使用;位的值為0表示可使用,即可以存放新的數(shù)據(jù);位的值為1表示已 使用,即已存放數(shù)據(jù),不可用于新數(shù)據(jù)的存放;存儲步驟,初次提交時每一種數(shù)據(jù)類型構(gòu)造一個對應(yīng)的數(shù)據(jù)單元,數(shù)據(jù)單元可容 納的數(shù)據(jù)數(shù)量略大于初始時需要的這種類型數(shù)據(jù)的數(shù)量,將數(shù)據(jù)置入列表,并將位圖對應(yīng) 的位初始化;每次提交時,均對數(shù)據(jù)進(jìn)行修正,當(dāng)沒有可重用的數(shù)據(jù)空間,需要新的數(shù)據(jù)空間時,才分配一個新的數(shù)據(jù)單元,結(jié)構(gòu)和原數(shù)據(jù)單元一致,但可容納數(shù)據(jù)數(shù)量則僅為預(yù)先指 定的較小的值,并通過鏈表方式和原數(shù)據(jù)單元相連;刪除步驟,在實時數(shù)據(jù)庫中使用所述的數(shù)據(jù)單元存儲數(shù)據(jù),當(dāng)需要對其中的某個 數(shù)據(jù)進(jìn)行刪除時,首先定位到該數(shù)據(jù),清空數(shù)據(jù)值,但并不釋放數(shù)據(jù)對應(yīng)的空間,只是將數(shù) 據(jù)對應(yīng)的位的值設(shè)為0,表示該數(shù)據(jù)位置可使用;只有當(dāng)一個數(shù)據(jù)單元內(nèi)的所有數(shù)據(jù)位置 都可使用,即位圖的所有位都為0時,才釋放整個數(shù)據(jù)單元的空間;增添步驟,在實時數(shù)據(jù)庫中使用所述的數(shù)據(jù)單元存儲數(shù)據(jù),當(dāng)需要增添一個該類 型數(shù)據(jù)時,首先確定數(shù)據(jù)單元內(nèi)是否都是已使用的數(shù)據(jù)位置,即在數(shù)據(jù)單元的位圖中是否 所有位的值都為1,如果有值為0的位,那么表示該位對應(yīng)的數(shù)據(jù)位置可使用,直接使用;而 如果沒有,即位圖中的所有位的值均為1,那么新建一個數(shù)據(jù)單元,將新建數(shù)據(jù)單元的位圖 清0,使用第一個數(shù)據(jù)位置即可,并將對應(yīng)位圖的位的值置1。相對應(yīng)的,本發(fā)明還公開了一種使用類聚簇的實時數(shù)據(jù)庫存儲裝置,它包括構(gòu)造模塊,采用類似于數(shù)據(jù)庫中聚簇的一種數(shù)據(jù)結(jié)構(gòu)作為基本數(shù)據(jù)單元,每個數(shù) 據(jù)單元中包含一個同種數(shù)據(jù)類型的列表,數(shù)據(jù)列表中只存放該類型數(shù)據(jù),因此每個數(shù)據(jù)占 有的空間大小是一致的,這個數(shù)據(jù)單元同時還包含一個為這個數(shù)據(jù)列表建立的位圖,位圖 的長度等于列表中數(shù)據(jù)的個數(shù),位圖中每一位與列表中的一個數(shù)據(jù)順序?qū)?yīng),表示這一數(shù) 據(jù)是可使用還是已使用;位的值為0表示可使用,即可以存放新的數(shù)據(jù);位的值為1表示已 使用,即已存放數(shù)據(jù),不可用于新數(shù)據(jù)的存放;存儲模塊,初次提交時每一種數(shù)據(jù)類型構(gòu)造一個對應(yīng)的數(shù)據(jù)單元,數(shù)據(jù)單元可容 納的數(shù)據(jù)數(shù)量略大于初始時需要的這種類型數(shù)據(jù)的數(shù)量,將數(shù)據(jù)置入列表,并將位圖對應(yīng) 的位初始化;每次提交時,均對數(shù)據(jù)進(jìn)行修正,當(dāng)沒有可重用的數(shù)據(jù)空間,需要新的數(shù)據(jù)空 間時,才分配一個新的數(shù)據(jù)單元,結(jié)構(gòu)和原數(shù)據(jù)單元一致,但可容納數(shù)據(jù)數(shù)量則僅為預(yù)先指 定的較小的值,并通過鏈表方式和原數(shù)據(jù)單元相連。刪除模塊,在實時數(shù)據(jù)庫中使用所述的數(shù)據(jù)單元存儲數(shù)據(jù),當(dāng)需要對其中的某個 數(shù)據(jù)進(jìn)行刪除時,首先定位到該數(shù)據(jù),清空數(shù)據(jù)值,但并不釋放數(shù)據(jù)對應(yīng)的空間,只是將數(shù) 據(jù)對應(yīng)的位的值設(shè)為0,表示該數(shù)據(jù)位置可使用;只有當(dāng)一個數(shù)據(jù)單元內(nèi)的所有數(shù)據(jù)位置 都可使用,即位圖的所有位都為0時,才釋放整個數(shù)據(jù)單元的空間;增添模塊,在實時數(shù)據(jù)庫中使用所述的數(shù)據(jù)單元存儲數(shù)據(jù),當(dāng)需要增添一個該類 型數(shù)據(jù)時,首先確定數(shù)據(jù)單元內(nèi)是否都是已使用的數(shù)據(jù)位置,即在數(shù)據(jù)單元的位圖中是否 所有位的值都為1,如果有值為0的位,那么表示該位對應(yīng)的數(shù)據(jù)位置可使用,直接使用;而 如果沒有,即位圖中的所有位的值均為1,那么新建一個數(shù)據(jù)單元,將新建數(shù)據(jù)單元的位圖 清0,使用第一個數(shù)據(jù)位置即可,并將對應(yīng)位圖的位的值置1。本發(fā)明具有如下的有益效果通過在實時數(shù)據(jù)庫中使用這種類似于聚簇的數(shù)據(jù)單 元來存儲數(shù)據(jù),可以實現(xiàn)實時數(shù)據(jù)庫的運行時增量提交。而在提交過程中,數(shù)據(jù)的使用和棄 用依靠位圖的置位動作表示,一般不作空間操作,因此具有很高的性能。下面結(jié)合附圖和具體實施方式
對本發(fā)明作進(jìn)一步詳細(xì)的說明。附圖和具體實施方 式并不限制本發(fā)明要求保護(hù)的范圍。
圖1是本發(fā)明采用的類聚簇的基本數(shù)據(jù)單元示意圖;圖2是本發(fā)明刪除操作過程示意圖;圖3是本發(fā)明增添操作過程示意圖;圖4是本發(fā)明實時數(shù)據(jù)庫存儲結(jié)構(gòu)示意圖。
具體實施例方式下面結(jié)合附圖和實施例對本發(fā)明進(jìn)一步說明。這種實時數(shù)據(jù)庫的存儲結(jié)構(gòu)采用類似于數(shù)據(jù)庫中聚簇的一種數(shù)據(jù)結(jié)構(gòu)作為基本 數(shù)據(jù)單元,也就是將同一類型的數(shù)據(jù)集中存放。具體而言,每個數(shù)據(jù)單元中包含一個同種數(shù) 據(jù)類型的列表,數(shù)據(jù)列表中只存放該類型數(shù)據(jù),因此每個數(shù)據(jù)占有的空間大小是一致的。這 個數(shù)據(jù)單元同時還包含了一個為這個數(shù)據(jù)列表建立的位圖,位圖的長度等于列表中數(shù)據(jù)的 個數(shù),位圖中每一位與列表中的一個數(shù)據(jù)順序?qū)?yīng),表示這一數(shù)據(jù)是可使用還是已使用。位 的值為0表示可使用,即可以存放新的數(shù)據(jù);為1表示已使用,即已存放數(shù)據(jù),不可用于新數(shù) 據(jù)的存放。因為每個數(shù)據(jù)只用1位表示,因此增加的額外空間資源開銷很小,相比于數(shù)據(jù)本 身可以忽略不計。數(shù)據(jù)單元如圖1所示。在實時數(shù)據(jù)庫的提交過程中對數(shù)據(jù)存儲機(jī)構(gòu)產(chǎn)生影響的操作主要為數(shù)據(jù)的刪除 和增添。在實時數(shù)據(jù)庫中使用上述的數(shù)據(jù)單元存放數(shù)據(jù),當(dāng)需要對其中的某個數(shù)據(jù)進(jìn)行刪 除時,首先定位到該數(shù)據(jù),清空數(shù)據(jù)值,但并不釋放數(shù)據(jù)對應(yīng)的空間,只是將數(shù)據(jù)對應(yīng)的位 的值設(shè)為0,表示該數(shù)據(jù)位置可使用,從而避免釋放單個數(shù)據(jù)空間造成小的內(nèi)存碎片無法重 用。只有當(dāng)一個數(shù)據(jù)單元內(nèi)的所有數(shù)據(jù)位置都可使用,即位圖的所有位都為0時,才釋放整 個數(shù)據(jù)單元的空間。這一般是一塊較大的內(nèi)存空間,可以重用。刪除操作的過程如圖2所 示。由于刪除時只是設(shè)定位圖中一位的值,而判斷是否數(shù)據(jù)單元內(nèi)所有數(shù)據(jù)位置都可使用 時也是通過位圖操作進(jìn)行,因此刪除操作的時間開銷很小,與實時數(shù)據(jù)訪問可比。當(dāng)需要增 添一個該類型數(shù)據(jù)時,首先確定數(shù)據(jù)單元內(nèi)是否都是已使用的數(shù)據(jù)位置,即在數(shù)據(jù)單元的 位圖中是否所有位的值都為1,如果有值為0的位,那么表示該位對應(yīng)的數(shù)據(jù)位置可使用, 直接使用;而如果沒有,即位圖中的所有位的值均為1,那么新建一個數(shù)據(jù)單元,將新建數(shù) 據(jù)單元的位圖清0,使用第一個數(shù)據(jù)位置即可。因為數(shù)據(jù)單元內(nèi)的數(shù)據(jù)類型是相同的,所需 的空間大小是一致的,因此添加的數(shù)據(jù)可以使用找到的可使用的數(shù)據(jù)位置,并將對應(yīng)位圖 的位的值置1。增添操作的過程如圖3所示。在添加時和刪除時類似,確定數(shù)據(jù)單元內(nèi)是否 都是已使用的數(shù)據(jù)位置,以及查找是否存在可使用的數(shù)據(jù)位置都是對位圖操作,同樣時間 開銷很小,與實時數(shù)據(jù)訪問可比。在實時數(shù)據(jù)庫中使用這種數(shù)據(jù)單元來管理數(shù)據(jù),可以在初次提交時為每一種數(shù)據(jù) 類型構(gòu)造一個對應(yīng)的數(shù)據(jù)單元,數(shù)據(jù)單元可容納的數(shù)據(jù)數(shù)量可以略大于初始時需要的這種 類型數(shù)據(jù)的數(shù)量,將數(shù)據(jù)置入列表,并將位圖對應(yīng)的位初始化。每次提交時,可以采用上述 方法進(jìn)行數(shù)據(jù)修正,當(dāng)沒有可重用的數(shù)據(jù)空間,確實需要新的數(shù)據(jù)空間時,才分配一個新的 數(shù)據(jù)單元,結(jié)構(gòu)和原數(shù)據(jù)單元一致,但可容納數(shù)據(jù)數(shù)量則僅為預(yù)先指定的較小的值,并通過 鏈表方式和原數(shù)據(jù)單元相連。每當(dāng)必須申請新的數(shù)據(jù)空間時就重復(fù)這過程,產(chǎn)生的實時數(shù) 據(jù)庫的存儲結(jié)構(gòu)如圖4所示。
通過在實時數(shù)據(jù)庫中使用這種類似于聚簇的數(shù)據(jù)單元來存儲數(shù)據(jù),就可以實現(xiàn)實 時數(shù)據(jù)庫的運行時增量提交。由于提交時每個操作可以獨立分別進(jìn)行,且時間開銷與實時 數(shù)據(jù)訪問可比,因此可以將提交的多個操作依次穿插于各個實時數(shù)據(jù)訪問之間進(jìn)行,而不 影響實時數(shù)據(jù)庫的實時訪問。因為在初次提交時分配的數(shù)據(jù)空間僅僅略多于實際數(shù)據(jù)空間 需求,就避免了初次提交就預(yù)先分配大量的閑置空間造成空間資源浪費。而在提交過程中, 數(shù)據(jù)的使用和棄用依靠位圖的置位動作表示,一般不作空間操作,因此具有很高的性能。同 時在提交時只有當(dāng)確實需要新的數(shù)據(jù)空間或者確實有大量的數(shù)據(jù)空間不使用時才以數(shù)據(jù) 單元為單位整塊申請或釋放空間,并且可以分多次申請或釋放,從而可以重用已經(jīng)不用的 數(shù)據(jù)空間,避免用過的空間無法重用,而每次都需要使用新的空間,最終造成空間資源耗盡 的問題??梢钥闯?,如果實時數(shù)據(jù)庫使用這種類似于聚簇的數(shù)據(jù)單元來存儲數(shù)據(jù),那么在提 交時可以有效地滿足了文中的要求。以上已以較佳實施例公布了本發(fā)明,然其并非用以限制本發(fā)明,凡采取等同替換 或等效變換的方案所獲得的技術(shù)方案,均落在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
一種使用類聚簇的實時數(shù)據(jù)庫存儲方法,其特征在于,它包括構(gòu)造步驟,采用類似于數(shù)據(jù)庫中聚簇的一種數(shù)據(jù)結(jié)構(gòu)作為基本數(shù)據(jù)單元,每個數(shù)據(jù)單元中包含一個同種數(shù)據(jù)類型的列表,數(shù)據(jù)列表中只存放該類型數(shù)據(jù),因此每個數(shù)據(jù)占有的空間大小是一致的,這個數(shù)據(jù)單元同時還包含一個為這個數(shù)據(jù)列表建立的位圖,位圖的長度等于列表中數(shù)據(jù)的個數(shù),位圖中每一位與列表中的一個數(shù)據(jù)順序?qū)?yīng),表示這一數(shù)據(jù)是可使用還是已使用;刪除步驟,在實時數(shù)據(jù)庫中使用所述的數(shù)據(jù)單元存儲數(shù)據(jù),當(dāng)需要對其中的某個數(shù)據(jù)進(jìn)行刪除時,首先定位到該數(shù)據(jù),清空數(shù)據(jù)值,但并不釋放數(shù)據(jù)對應(yīng)的空間,只是將數(shù)據(jù)對應(yīng)的位的值設(shè)為0,表示該數(shù)據(jù)位置可使用;只有當(dāng)一個數(shù)據(jù)單元內(nèi)的所有數(shù)據(jù)位置都可使用,即位圖的所有位都為0時,才釋放整個數(shù)據(jù)單元的空間;增添步驟,在實時數(shù)據(jù)庫中使用所述的數(shù)據(jù)單元存儲數(shù)據(jù),當(dāng)需要增添一個該類型數(shù)據(jù)時,首先確定數(shù)據(jù)單元內(nèi)是否都是已使用的數(shù)據(jù)位置,即在數(shù)據(jù)單元的位圖中是否所有位的值都為1,如果有值為0的位,那么表示該位對應(yīng)的數(shù)據(jù)位置可使用,直接使用;而如果沒有,即位圖中的所有位的值均為1,那么新建一個數(shù)據(jù)單元,將新建數(shù)據(jù)單元的位圖清0,使用第一個數(shù)據(jù)位置即可,并將對應(yīng)位圖的位的值置1。
2.根據(jù)權(quán)利要求1所述的使用類聚簇的實時數(shù)據(jù)庫存儲方法,其特征在于位的值為0表示可使用,即可以存放新的數(shù)據(jù);位的值為1表示已使用,即已存放數(shù)據(jù), 不可用于新數(shù)據(jù)的存放。
3.根據(jù)權(quán)利要求2所述的使用類聚簇的實時數(shù)據(jù)庫存儲方法,其特征在于,它還包括存儲步驟,初次提交時每一種數(shù)據(jù)類型構(gòu)造一個對應(yīng)的數(shù)據(jù)單元,數(shù)據(jù)單元可容納的數(shù)據(jù)數(shù)量略大于初始時需要的這種類型數(shù)據(jù)的數(shù)量,將數(shù)據(jù)置入列表,并將位圖對應(yīng)的位 初始化;每次提交時,均對數(shù)據(jù)進(jìn)行修正,當(dāng)沒有可重用的數(shù)據(jù)空間,需要新的數(shù)據(jù)空間時, 才分配一個新的數(shù)據(jù)單元,結(jié)構(gòu)和原數(shù)據(jù)單元一致,但可容納數(shù)據(jù)數(shù)量則僅為預(yù)先指定的 較小的值,并通過鏈表方式和原數(shù)據(jù)單元相連。
4.一種使用類聚簇的實時數(shù)據(jù)庫存儲裝置,其特征在于,它包括構(gòu)造模塊,采用類似于數(shù)據(jù)庫中聚簇的一種數(shù)據(jù)結(jié)構(gòu)作為基本數(shù)據(jù)單元,每個數(shù)據(jù)單 元中包含一個同種數(shù)據(jù)類型的列表,數(shù)據(jù)列表中只存放該類型數(shù)據(jù),因此每個數(shù)據(jù)占有的 空間大小是一致的,這個數(shù)據(jù)單元同時還包含一個為這個數(shù)據(jù)列表建立的位圖,位圖的長 度等于列表中數(shù)據(jù)的個數(shù),位圖中每一位與列表中的一個數(shù)據(jù)順序?qū)?yīng),表示這一數(shù)據(jù)是 可使用還是已使用;刪除模塊,在實時數(shù)據(jù)庫中使用所述的數(shù)據(jù)單元存儲數(shù)據(jù),當(dāng)需要對其中的某個數(shù)據(jù) 進(jìn)行刪除時,首先定位到該數(shù)據(jù),清空數(shù)據(jù)值,但并不釋放數(shù)據(jù)對應(yīng)的空間,只是將數(shù)據(jù)對 應(yīng)的位的值設(shè)為0,表示該數(shù)據(jù)位置可使用;只有當(dāng)一個數(shù)據(jù)單元內(nèi)的所有數(shù)據(jù)位置都可 使用,即位圖的所有位都為0時,才釋放整個數(shù)據(jù)單元的空間;增添模塊,在實時數(shù)據(jù)庫中使用所述的數(shù)據(jù)單元存儲數(shù)據(jù),當(dāng)需要增添一個該類型數(shù) 據(jù)時,首先確定數(shù)據(jù)單元內(nèi)是否都是已使用的數(shù)據(jù)位置,即在數(shù)據(jù)單元的位圖中是否所有 位的值都為1,如果有值為0的位,那么表示該位對應(yīng)的數(shù)據(jù)位置可使用,直接使用;而如果 沒有,即位圖中的所有位的值均為1,那么新建一個數(shù)據(jù)單元,將新建數(shù)據(jù)單元的位圖清0, 使用第一個數(shù)據(jù)位置即可,并將對應(yīng)位圖的位的值置1。
5.根據(jù)權(quán)利要求4所述的使用類聚簇的實時數(shù)據(jù)庫存儲方法,其特征在于位的值為0表示可使用,即可以存放新的數(shù)據(jù);位的值為1表示已使用,即已存放數(shù)據(jù), 不可用于新數(shù)據(jù)的存放。
6.根據(jù)權(quán)利要求5所述的使用類聚簇的實時數(shù)據(jù)庫存儲方法,其特征在于,它還包括 存儲模塊,初次提交時每一種數(shù)據(jù)類型構(gòu)造一個對應(yīng)的數(shù)據(jù)單元,數(shù)據(jù)單元可容納的數(shù)據(jù)數(shù)量略大于初始時需要的這種類型數(shù)據(jù)的數(shù)量,將數(shù)據(jù)置入列表,并將位圖對應(yīng)的位 初始化;每次提交時,均對數(shù)據(jù)進(jìn)行修正,當(dāng)沒有可重用的數(shù)據(jù)空間,需要新的數(shù)據(jù)空間時, 才分配一個新的數(shù)據(jù)單元,結(jié)構(gòu)和原數(shù)據(jù)單元一致,但可容納數(shù)據(jù)數(shù)量則僅為預(yù)先指定的 較小的值,并通過鏈表方式和原數(shù)據(jù)單元相連。
全文摘要
本發(fā)明公開了使用類聚簇的一種支持運行式提交的實時數(shù)據(jù)庫存儲技術(shù),通過在實時數(shù)據(jù)庫中使用這種類似于聚簇的數(shù)據(jù)單元來存儲數(shù)據(jù),就可以實現(xiàn)實時數(shù)據(jù)庫的運行時增量提交。由于提交時每個操作可以獨立分別進(jìn)行,且時間開銷與實時數(shù)據(jù)訪問可比,因此可以將提交的多個操作依次穿插于各個實時數(shù)據(jù)訪問之間進(jìn)行,而不影響實時數(shù)據(jù)庫的實時訪問。因為在初次提交時分配的數(shù)據(jù)空間僅僅略多于實際數(shù)據(jù)空間需求,就避免了初次提交就預(yù)先分配大量的閑置空間造成空間資源浪費。同時在提交時只有當(dāng)確實需要新的數(shù)據(jù)空間或者確實有大量的數(shù)據(jù)空間不使用時才以數(shù)據(jù)單元為單位整塊申請或釋放空間,避免用過的空間無法重用的問題。
文檔編號G06F17/30GK101901261SQ201010235099
公開日2010年12月1日 申請日期2010年7月23日 優(yōu)先權(quán)日2010年7月23日
發(fā)明者包德梅, 戴宏斌, 金舒 申請人:南京國電南自軌道交通工程有限公司