專利名稱:一種用于管理具有可變長度的電子數(shù)據(jù)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一個(gè)用于在計(jì)算機(jī)系統(tǒng)中使用和存儲(chǔ)電子數(shù)據(jù)的方法和裝置,更具體的涉及用于通過改進(jìn)平衡樹(平衡樹)方法管理和維護(hù)具有可變長度的數(shù)據(jù)的過程。
現(xiàn)有技術(shù)中的數(shù)據(jù)庫系統(tǒng)主要集中在管理具有固定記錄長度的電子數(shù)據(jù),使用預(yù)先設(shè)定的屬性構(gòu)成索引數(shù)據(jù)用于用戶的搜索。
圖10中所示的臺(tái)北ROC,1987年的國家計(jì)算機(jī)討論會(huì)的前言中的“根據(jù)相關(guān)分級(jí)模式的集成多媒體數(shù)據(jù)庫(MMDB)”是一個(gè)典型的實(shí)例。
MMDB使用用戶接口1作為用于控制用戶與系統(tǒng)進(jìn)行通訊的接口,即用戶輸入工作指令而系統(tǒng)輸出結(jié)果數(shù)據(jù)。
由用戶接口1所接收到的信息被轉(zhuǎn)換到記錄處理方法2,其確定處理模式,包括數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)提取。在處理模式被確定后,記錄處理方法3將連續(xù)的與表處理方法3和樹處理方法4進(jìn)行通訊從而獲取或存儲(chǔ)要求的記錄的數(shù)據(jù)。輸入數(shù)據(jù)的順序并非是在MMDM中存儲(chǔ)數(shù)據(jù)的實(shí)際的順序,這是因?yàn)樵贛MDB中的刪除過程僅將先前的數(shù)據(jù)設(shè)定到未使用的狀態(tài),從而后面的新數(shù)據(jù)可被存儲(chǔ)在未使用的空間。因此,對(duì)MMDB記錄無順序號(hào)。
在MMDB設(shè)計(jì)中使用表處理方法3通過表處理實(shí)現(xiàn)MMDB中的數(shù)據(jù)的存取和連接,該表處理方法處理所有要求的表。在MMDB中存在八個(gè)表,通過它系統(tǒng)可對(duì)所有類型的數(shù)據(jù)建立關(guān)系,包括數(shù)據(jù)文件管理,索引樹和記錄樹之間的關(guān)系,屬性和記錄之間的關(guān)系,搜索數(shù)據(jù)的結(jié)果等。與數(shù)據(jù)相關(guān)的每個(gè)過程需要一個(gè)或多個(gè)表進(jìn)行存取和執(zhí)行。例如,為了從數(shù)據(jù)庫獲得數(shù)據(jù)的記錄,系統(tǒng)首先需要一個(gè)TMT(表管理表)以確定記錄的是哪一個(gè)表和樹的結(jié)構(gòu),并計(jì)算記錄的位置,和一個(gè)TDT(表類型定義表)以處理記錄數(shù)據(jù)的結(jié)構(gòu)格式。最后,需要描述ADT(屬性定義表)并提供數(shù)據(jù)。根據(jù)記錄處理方法2要求的內(nèi)容表處理方法3將構(gòu)成或提供適宜的信息。
MMDB中的數(shù)據(jù)全部都被用樹的格式存儲(chǔ)在數(shù)據(jù)庫中,在相同條件下產(chǎn)生的數(shù)據(jù)被存儲(chǔ)在同一樹中(例如記錄樹,索引樹或排序樹)。因此,MMDB文件是選擇的一組樹。在處理數(shù)據(jù)樹時(shí),記錄處理方法2從表處理方法3獲得要求的數(shù)據(jù)存取規(guī)則,并處理來自樹處理方法4的樹數(shù)據(jù),然后樹處理方法4將數(shù)據(jù)存儲(chǔ)進(jìn)相應(yīng)的樹中或獲得數(shù)據(jù)將其發(fā)送回記錄處理方法2。在MMDB中存在兩種樹,包括數(shù)據(jù)模式樹和索引模式樹。對(duì)于數(shù)據(jù)模式樹,數(shù)據(jù)被存儲(chǔ)在諸如記錄樹的樹的節(jié)點(diǎn)中,只要找到所需節(jié)點(diǎn)的位置就可獲得數(shù)據(jù);對(duì)于索引模式樹,在數(shù)據(jù)模式樹和索引樹的幫助下,只能通過非直接的方式獲得數(shù)據(jù),位于節(jié)點(diǎn)中的數(shù)據(jù)可作為另一個(gè)樹的索引。在MMDB構(gòu)成索引樹時(shí),形成索引的數(shù)據(jù)被及時(shí)地存儲(chǔ)進(jìn)索引樹中。在根據(jù)條件搜索所需的數(shù)據(jù)時(shí),只有找到的記錄的標(biāo)識(shí)被存儲(chǔ)進(jìn)搜尋樹中。在搜索過程中,對(duì)每個(gè)單一條件構(gòu)成一個(gè)新樹,其被用于通過“與”運(yùn)算或“或”運(yùn)算適當(dāng)?shù)亟Y(jié)合進(jìn)一步構(gòu)成一個(gè)搜尋樹。對(duì)于排序過程,MMDB使用快速排序和氣泡排序,且構(gòu)成一個(gè)排序樹的過程與用于構(gòu)成一個(gè)搜尋樹的過程相同。
MMDB使用傳統(tǒng)的平衡樹作為基礎(chǔ),具有固定長度的數(shù)據(jù)塊作為樹的節(jié)點(diǎn)。每個(gè)塊的長度為512字節(jié)。在塊中的記錄數(shù)據(jù)的數(shù)據(jù)與記錄的尺寸成反比,即記錄的越長,塊中記錄的數(shù)目越少。當(dāng)確定需要哪一個(gè)節(jié)點(diǎn)時(shí),樹處理方法4將通知塊處理方法5根據(jù)返回到樹處理方法4的節(jié)點(diǎn)獲取塊以處理并將數(shù)據(jù)存儲(chǔ)進(jìn)數(shù)據(jù)庫。
通過記錄處理方法2獲取并分析來自樹處理方法4的記錄數(shù)據(jù),并最后將其發(fā)送回用戶接口1。
在上述提到的MMDB系統(tǒng)中存在五個(gè)問題,包含記錄長度需要被固定,不允許長度發(fā)生變化。
記錄被隨機(jī)的進(jìn)行存取,記錄的實(shí)際的順序只能由系統(tǒng)進(jìn)行決定,用戶無法進(jìn)行改變。
由于在系統(tǒng)中存在太多的表,對(duì)于單個(gè)的記錄搜索或條件搜索的運(yùn)算速度很低,由于重新安排表和記錄的過程太復(fù)雜,從而較難處理數(shù)據(jù)壓縮。
由于需要轉(zhuǎn)換太多的表,從而為了完成排序過程需要很多的時(shí)間。
當(dāng)數(shù)據(jù)的尺寸變大時(shí),由于塊的長度固定,記錄數(shù)據(jù)的數(shù)目被降低,從而無法按照需要的完成所需的樹結(jié)構(gòu)。
本發(fā)明的目的是提供一種用于在計(jì)算機(jī)系統(tǒng)中管理具有可變長度的電子數(shù)據(jù)的方法。
根據(jù)本發(fā)明,對(duì)于存儲(chǔ)數(shù)據(jù)的過程,記錄被存儲(chǔ)進(jìn)數(shù)據(jù)區(qū),然后獲取所存儲(chǔ)的地址和記錄的數(shù)據(jù)長度。確定用戶所使用的當(dāng)前的記錄集合(平衡樹)和所存儲(chǔ)數(shù)據(jù)的相應(yīng)的標(biāo)識(shí)。為了進(jìn)行獲取數(shù)據(jù)的過程,確定用戶所使用的當(dāng)前的記錄集合和所獲取數(shù)據(jù)的相應(yīng)的標(biāo)識(shí)。
通過所需的記錄集合和記錄標(biāo)識(shí),根據(jù)用于改進(jìn)的平衡樹的搜索算法搜索包括所需記錄的子葉的節(jié)點(diǎn)。從節(jié)點(diǎn)緩沖器或數(shù)據(jù)區(qū)域可找到所需的節(jié)點(diǎn)。
為了存儲(chǔ)數(shù)據(jù),將所獲得的記錄地址和記錄長度存儲(chǔ)進(jìn)找到的所需節(jié)點(diǎn)的所需子葉中。為了獲取數(shù)據(jù),從指定的子葉獲得所需記錄的地址和長度,然后根據(jù)地址和長度獲得所需的記錄。
因此,本發(fā)明同樣提供一種裝置,用于管理具有可變長度的電子數(shù)據(jù),其包含記錄管理裝置,搜索控制裝置,排序控制裝置,改進(jìn)的平衡樹管理裝置,節(jié)點(diǎn)管理裝置和輸出裝置。
記錄管理裝置接收來自用戶的要求,用于刪除、加入或獲得記錄,或從搜索控制裝置或排序控制裝置接收要求,通過改進(jìn)的平衡樹裝置獲得所存儲(chǔ)記錄的地址和長度,從數(shù)據(jù)區(qū)獲得記錄數(shù)據(jù),然后發(fā)送到輸出裝置或返回到搜索控制裝置或排序控制裝置。
搜索控制裝置處理來自用戶的搜索數(shù)據(jù),包括單一記錄搜索和條件搜索。排序控制裝置處理來自用戶的數(shù)據(jù)排序的指令,并根據(jù)排序條件和比較的結(jié)果將指定的記錄集合分配到結(jié)果集合(新的排序樹)中。
改進(jìn)的平衡樹管理裝置管理幾個(gè)改進(jìn)的平衡樹,包括系統(tǒng)樹,搜尋樹和排序樹。系統(tǒng)樹并用于管理數(shù)據(jù)庫中的每個(gè)記錄的數(shù)據(jù)長度和文件地址。搜尋樹被用于存儲(chǔ)搜索過程的結(jié)果并管理符合搜索條件的記錄的標(biāo)識(shí)。排序樹和搜尋樹的結(jié)構(gòu)一樣,當(dāng)排序樹被用于管理記錄存儲(chǔ)的結(jié)果。
節(jié)點(diǎn)管理裝置被用于根據(jù)改進(jìn)的平衡樹管理裝置的要求從節(jié)點(diǎn)緩沖區(qū)或數(shù)據(jù)區(qū)獲得所需的節(jié)點(diǎn)數(shù)據(jù)。
本發(fā)明提供一種數(shù)據(jù)管理裝置,用于管理數(shù)據(jù)庫中的記錄和所有的數(shù)據(jù)操作之間的關(guān)系。用戶可將具有任何格式和任意長度的數(shù)據(jù)組合成記錄段然后將記錄轉(zhuǎn)換到裝置進(jìn)行處理。根據(jù)用戶的要求通過本發(fā)明的裝置可將有關(guān)記錄的存取的數(shù)據(jù)放入系統(tǒng)樹中。當(dāng)用戶想獲得特定的記錄數(shù)據(jù)時(shí),通過記錄標(biāo)識(shí)(記錄的順序值)從系統(tǒng)樹獲得記錄的文件地址和數(shù)據(jù)長度,然后從數(shù)據(jù)區(qū)獲得所需的記錄數(shù)據(jù)。
除了系統(tǒng)樹外,裝置同樣提供可使用戶管理記錄子集的搜尋樹和排序樹。用戶可通過系統(tǒng)樹獲得記錄數(shù)據(jù)并將符合搜索條件的記錄的標(biāo)識(shí)轉(zhuǎn)換到搜尋樹,搜尋樹在記錄被過濾后對(duì)其進(jìn)行管理。用戶可通過搜尋樹和系統(tǒng)樹獲得關(guān)于記錄子集的數(shù)據(jù)。然而,用戶可對(duì)記錄子集再進(jìn)行搜索過程以構(gòu)成另外一個(gè)搜尋樹用于解決所謂的部分搜尋的問題。對(duì)于排序過程,用戶只是需要制定用于排序的數(shù)據(jù)(可來自系統(tǒng)樹,搜尋樹或另一個(gè)排序樹)并通知裝置如何比較數(shù)據(jù),從而裝置可再被排序后構(gòu)成新的排序樹。
通過下面結(jié)合相應(yīng)附圖的描述將會(huì)對(duì)本發(fā)明的特征和優(yōu)點(diǎn)有更清楚的了解。
圖1示出本發(fā)明的最佳實(shí)施例的系統(tǒng)方框圖;圖2示出本發(fā)明中的搜索控制裝置的工作流程圖;圖3示出本發(fā)明中的排序控制裝置的工作流程圖;圖4包含圖4A和4B,其示出了本發(fā)明中的記錄管理裝置的工作流程圖;圖5包括圖5A和5B,其示出了本發(fā)明中的改進(jìn)的平衡樹的工作流程圖;圖6示出了本發(fā)明中的節(jié)點(diǎn)管理裝置的工作流程圖;圖7示出了本發(fā)明中的節(jié)點(diǎn)結(jié)構(gòu)的示意圖,其中圖7A是用于改進(jìn)的平衡樹節(jié)點(diǎn)標(biāo)頭的示意圖,圖7B為系統(tǒng)樹中的子葉的示意圖,圖7C為搜尋樹和排序樹中的子葉的示意圖8為本發(fā)明中的搜索過程的示意圖;圖9為本發(fā)明中的種類記錄的示意圖,其中圖9A為再加入排序數(shù)據(jù)之前的排序樹的示意圖,圖9B為在加入排序數(shù)據(jù)后的排序樹的示意圖,及圖9C為數(shù)據(jù)區(qū)的示意圖;及圖10為現(xiàn)有技術(shù)中的系統(tǒng)方框圖。
本發(fā)明是用于處理可變長度的數(shù)據(jù)裝置,其還用于有效的管理數(shù)據(jù)的搜索和排序。為了實(shí)現(xiàn)上述的目的,在本發(fā)明中有三種的改進(jìn)的平衡樹,包括系統(tǒng)樹,搜尋樹和排序樹。在圖8中,樹A為排序樹,F(xiàn)1為根節(jié)點(diǎn),而F2,F(xiàn)3和F4是相關(guān)的子節(jié)點(diǎn),樹B為系統(tǒng)樹,S1為根節(jié)點(diǎn),而S2,S3,…,和S13為相關(guān)的子節(jié)點(diǎn)。
系統(tǒng)樹,搜尋樹,排序樹的相應(yīng)的節(jié)點(diǎn)由節(jié)點(diǎn)標(biāo)頭和幾個(gè)子葉構(gòu)成。圖7A示出節(jié)點(diǎn)標(biāo)頭的結(jié)構(gòu),其由三個(gè)單元構(gòu)成,包括LeafNum,SubNum和NxtBlk。每個(gè)單元的長度可是4字節(jié)。LeafNum為節(jié)點(diǎn)中子葉的數(shù)目,SubNum為子樹中子葉的總數(shù),NxtBlk為子樹中根節(jié)點(diǎn)的地址。圖7B為系統(tǒng)樹的節(jié)點(diǎn)中的子葉的結(jié)構(gòu)。圖7C為搜尋樹和排序樹的節(jié)點(diǎn)中的子葉的結(jié)構(gòu)。每個(gè)子葉中的單元的長度可為4字節(jié)。雖然平衡樹的種類不同,上述三個(gè)改進(jìn)的平衡樹中的節(jié)點(diǎn)塊的尺寸一樣,從而只需管理一個(gè)尺寸的節(jié)點(diǎn)塊。過程被簡化而工作速度被提高。由于節(jié)點(diǎn)塊的尺寸一樣而在不同的平衡樹中的子葉的尺寸不同,不同平衡樹的節(jié)點(diǎn)塊中的子葉的數(shù)目通常不同。圖7B中的系統(tǒng)樹的子葉被用于存儲(chǔ)數(shù)據(jù)庫中的記錄的文件地址和記錄長度。文件地址和記錄長度被存儲(chǔ)在RecAddr和RecL中,NxtBlk在下一個(gè)字節(jié)中存儲(chǔ)節(jié)點(diǎn)的位置,即子樹的原始位置,而SubNum存儲(chǔ)使用NxtBlk作為子樹的根節(jié)點(diǎn)的子葉的總數(shù)。圖7C中所示的搜尋樹和排序樹的結(jié)構(gòu)包括Rec標(biāo)識(shí),其對(duì)應(yīng)系統(tǒng)樹中記錄的順序。裝置中的每類樹的節(jié)點(diǎn)具有記錄節(jié)點(diǎn)的狀態(tài)的相同的標(biāo)題。圖7A中所示的標(biāo)題包括LeafNum,其存儲(chǔ)節(jié)點(diǎn)中子葉的數(shù)目,并在當(dāng)前被使用。
圖8示出了本發(fā)明中的搜索過程的示意圖。假設(shè)系統(tǒng)已經(jīng)接收到用戶要求的搜索過程,而樹A為具有根節(jié)點(diǎn)F1的搜尋樹。如果用戶想從F1搜索到第28個(gè)記錄,系統(tǒng)將確定記錄位于第一子葉的NxtBlk子樹(因?yàn)?5<28<25+1+20),而所需的數(shù)據(jù)位于F3的第二子葉(28-25-1),其中記錄與來自子葉的ReclD的的系統(tǒng)樹中的第791記錄有關(guān)。樹B同樣是一個(gè)系統(tǒng)樹,其使用同樣的過程搜索所需的記錄。在節(jié)點(diǎn)S1中的第三子葉的子樹NxtBlk記錄是已知的(因?yàn)?25+1+280+1+247<791<225+1+280+1+247+1+391)。在進(jìn)行完另一個(gè)搜索過程后,在節(jié)點(diǎn)S5的第36個(gè)記錄處記錄是已知的(因?yàn)?91-225-1-280-1-247-1=36)。在下面的搜索過程后,在節(jié)點(diǎn)S53的第二子葉所需的記錄是已知的。通過獲得RecLen和RecAddr可找到實(shí)際的記錄數(shù)據(jù)。
用于增加或刪除相關(guān)記錄的指令將被分配一個(gè)標(biāo)識(shí),并根據(jù)平衡樹的原則和用于通過樹的路徑,從指定的節(jié)點(diǎn)增加子葉或減少子葉的操作需要修改子樹中的子葉的數(shù)目(即圖7中的SubNum數(shù)據(jù))。然而,排序記錄過程使用比較的方法用于增加新的記錄代替制定一個(gè)標(biāo)識(shí)。該方法指定一個(gè)適宜的比較條件,通過該條件系統(tǒng)將要被加入到樹中的記錄數(shù)據(jù)與存儲(chǔ)在排序中的存儲(chǔ)的當(dāng)前的記錄數(shù)據(jù)進(jìn)行比較,從而找到要被插入的記錄數(shù)據(jù)的適宜的位置。
圖9示出本發(fā)明中的排序記錄的示意圖。圖9A示出當(dāng)前排序樹(樹A)的狀態(tài),而圖9C示出數(shù)據(jù)區(qū)中的記錄數(shù)據(jù)(為了描述方便,標(biāo)題上的號(hào)是記錄標(biāo)識(shí)而不是文件地址)。如果當(dāng)前系統(tǒng)樹中的具有標(biāo)識(shí)2300的記錄(數(shù)據(jù)為“Japan”)將要被加入到排序樹,排序的比較方法使用字母的順序,第一步是根據(jù)二進(jìn)制搜索原則從樹A的根節(jié)點(diǎn)搜索最近的子葉,然后從該子葉獲得子樹的下一層。通過相同的二進(jìn)制搜索重復(fù)上述的過程,直到找到節(jié)點(diǎn)的最后一層,從而可獲得要被加入的所需子葉的地址。例如,在來自樹A的節(jié)點(diǎn)S1的節(jié)點(diǎn)中有40子葉。第一個(gè)要比較的記錄位于通過二進(jìn)制搜索位于節(jié)點(diǎn)S1的第20子葉(40/2=20),而第20子葉示出第297記錄。從系統(tǒng)樹獲得記錄地址和第297記錄的長度,并被用于從數(shù)據(jù)區(qū)獲得所需的數(shù)據(jù)。在圖9C中,所需的數(shù)據(jù)已知被作為比“Japan”小的“American”,從而搜索過程繼續(xù)從S1的第21子葉進(jìn)行到第40子葉。最后,發(fā)現(xiàn)“Japan”位于第26子葉(數(shù)據(jù)為“Chinese”)和第27子葉(數(shù)據(jù)為“Philippine”),從而系統(tǒng)由第26子葉所指定的子樹開始搜索,即從節(jié)點(diǎn)S1-26以相同的方式搜索到終端節(jié)點(diǎn)S125。會(huì)發(fā)現(xiàn)“Japan”位于第2子葉(數(shù)據(jù)為“France”)和第三子葉(數(shù)據(jù)為“Malaysia“)之間,而S125的第三子葉是用于插入記錄的位置。用于增加記錄的比較方法與上述的方法類似,即兩種方法都根據(jù)穿過樹的路徑修改子樹的子葉數(shù)目。圖9C示出將“Japan”加入到排序樹中的結(jié)果。
圖1示出本發(fā)明中的一個(gè)最佳實(shí)施例的方框圖。用戶發(fā)出一個(gè)指令通過用戶接口1要求一個(gè)操作,其包括增加,刪除,獲取,搜索和排序記錄。如果接收到諸如增加,刪除或獲取記錄的指令,用戶接口1將直接將指令轉(zhuǎn)換到記錄管理裝置2。如果用戶接口1接收到一個(gè)排序指令,指令將被轉(zhuǎn)換到排序控制裝置4。當(dāng)搜索控制裝置3接收到包含搜索條件的搜索指令時(shí),搜索控制裝置3將與記錄管理裝置2取得聯(lián)系,以構(gòu)成一個(gè)新的搜尋樹,并要求記錄管理裝置2在搜索范圍內(nèi)提供所有的記錄數(shù)據(jù)。然后記錄管理裝置2被通知符合搜索條件的記錄的記錄標(biāo)識(shí),且記錄被加入到新的搜尋樹中。此方法克服了與現(xiàn)有技術(shù)中所描述的表過多的問題。搜索控制裝置3通過與記錄管理裝置2聯(lián)系存取記錄數(shù)據(jù)。通過排序控制裝置4可構(gòu)成新的排序樹。然后記錄管理裝置2被要求提供所需的記錄數(shù)據(jù),相應(yīng)的數(shù)據(jù)被通過記錄轉(zhuǎn)換到記錄管理裝置2。通過比較的方式將這些數(shù)據(jù)加到新的排序樹中。當(dāng)然,來自用戶接口1的比較條件被傳輸?shù)接涗浌芾硌b置2。執(zhí)行排序過的過程正如形成平衡樹和比較數(shù)據(jù)一樣無需構(gòu)成復(fù)雜的表。由于不需管理太多的數(shù)據(jù)轉(zhuǎn)換過程,其克服了在MMDB中由于數(shù)據(jù)轉(zhuǎn)換所帶來的性能變化的問題。除了增加,刪除或獲得記錄的指令外,記錄管理裝置2同樣接收來自搜索控制裝置3和排序控制裝置4的指令。
本發(fā)明使用幾個(gè)改進(jìn)的平衡樹管理數(shù)據(jù)庫,包括系統(tǒng)樹、搜尋樹和排序樹。改進(jìn)的平衡樹管理裝置5高效管理平衡樹的中心裝置。系統(tǒng)樹被用于管理數(shù)據(jù)庫中的每個(gè)記錄的數(shù)據(jù)長度和文件地址。如果獲得了數(shù)據(jù)長度和文件地址用戶可容易的存取具有任意長度的記錄數(shù)據(jù)。結(jié)果,不需要象傳統(tǒng)的MMDB中的那樣固定記錄的數(shù)據(jù)長度。
當(dāng)用于向數(shù)據(jù)庫中加入一個(gè)記錄時(shí),記錄的數(shù)據(jù)長度和文件地址將被設(shè)置到系統(tǒng)樹的子葉中,子葉的位置可通過用戶或在系統(tǒng)樹的末端確定。如果刪除記錄,系統(tǒng)樹將刪除掉關(guān)于該記錄的子葉。因此,記錄的順序正是系統(tǒng)樹中子葉的順序,不存在現(xiàn)有技術(shù)中的無序的問題。
搜尋樹被用于存儲(chǔ)搜索過程的結(jié)果和管理符合搜索條件的記錄的標(biāo)識(shí)。標(biāo)識(shí)的值代表系統(tǒng)樹中的順序。排序樹和搜尋樹的結(jié)構(gòu)相同,但排序樹被用于管理記錄排序的結(jié)果。改進(jìn)的平衡樹控制裝置5被用于接收來自記錄管理裝置2的要求,以管理那些平衡樹,包括構(gòu)成樹和增加及刪除子葉。
本發(fā)明中的每類樹具有固定長度的子葉,其原因是需要固定節(jié)點(diǎn)中的子葉的數(shù)目,從而當(dāng)子葉中的記錄長度變化時(shí)子葉的數(shù)目不會(huì)發(fā)生變化,平衡樹的進(jìn)一步的好處在于其可克服現(xiàn)有技術(shù)中的缺點(diǎn)。本發(fā)明將所有的樹的節(jié)點(diǎn)設(shè)定到相同的長度,從而統(tǒng)一的管理節(jié)點(diǎn)數(shù)據(jù),避免保持節(jié)點(diǎn)的不同長度的復(fù)雜性。節(jié)點(diǎn)管理裝置6的功能在于根據(jù)改進(jìn)的平衡樹管理裝置5的要求從節(jié)點(diǎn)緩沖區(qū)7或數(shù)據(jù)區(qū)9獲得所需的節(jié)點(diǎn)數(shù)據(jù)。簡單地說,記錄管理裝置2通過改進(jìn)的平衡樹管理裝置5(包括增加,刪除,獲取和修改)可有效的處理具有可變長度的記錄的文件地址和數(shù)據(jù)長度,并進(jìn)一步從數(shù)據(jù)區(qū)9存取記錄數(shù)據(jù),從而將用戶需要的數(shù)據(jù)輸出到輸出裝置8。改進(jìn)的平衡樹管理裝置5控制裝置中的所有的與改進(jìn)的平衡樹相關(guān)的操作,但當(dāng)存在與節(jié)點(diǎn)數(shù)據(jù)相關(guān)的任何過程時(shí),節(jié)點(diǎn)管理裝置6將管理所述過程。節(jié)點(diǎn)管理裝置6對(duì)當(dāng)前使用的節(jié)點(diǎn)在節(jié)點(diǎn)緩沖區(qū)7和數(shù)據(jù)區(qū)9之間形成最優(yōu)的結(jié)構(gòu)。
圖2為本發(fā)明中的搜索控制裝置3的工作流程圖。通過下面的順序逐步的描述對(duì)流程圖進(jìn)程詳細(xì)描述。首先,步驟301從用戶接口1接收搜索指令,搜索范圍和搜索條件。步驟302通知記錄管理裝置2構(gòu)成一個(gè)新的搜索樹。步驟303要求記錄管理裝置2轉(zhuǎn)換搜索范圍內(nèi)的記錄數(shù)據(jù)。由于來自用戶接口1的搜索范圍僅被用于指定所需的樹,步驟303通知記錄管理裝置2獲取關(guān)于被指定樹的所有的記錄數(shù)據(jù)。步驟304在由搜索范圍內(nèi)確定的記錄集合中獲得記錄數(shù)據(jù)。步驟305決定記錄數(shù)據(jù)是否符合搜索條件,如果不符合,步驟307被執(zhí)行;如果符合,步驟306將要求記錄管理裝置2將記錄標(biāo)識(shí)加到新的搜索樹,然后步驟307將檢查搜索范圍內(nèi)的所有記錄是否被完成,如果仍然還有未完成的記錄,繼續(xù)執(zhí)行步驟304管理下一段記錄數(shù)據(jù);如果完成所有的記錄,搜索控制裝置3的工作結(jié)束。
圖3為本發(fā)明中的排序控制裝置的工作流程圖。首先,步驟401從用戶接口1接收排序指令,排序范圍和排序條件。步驟402通知記錄管理裝置2構(gòu)成一個(gè)新的排序樹。步驟403要求記錄管理裝置2轉(zhuǎn)換排序范圍內(nèi)的記錄數(shù)據(jù)。步驟404在由排序范圍內(nèi)確定的記錄集合中獲得記錄數(shù)據(jù);步驟405將記錄和排序條件轉(zhuǎn)換到記錄管理裝置2并要求記錄管理裝置2以比較的方式將記錄標(biāo)識(shí)加到新的排序樹。接著,步驟406將檢查排序范圍內(nèi)的所有記錄是否被完成,如果仍然還有未完成的記錄,繼續(xù)執(zhí)行步驟404管理下一段記錄數(shù)據(jù);如果完成所有的記錄,排序控制裝置3的工作結(jié)束。
圖4示出本發(fā)明中的記錄管理裝置的工作流程圖。首先步驟201確定所要求的工作模式。如果記錄為新加入的,執(zhí)行步驟202檢查為加入所指定的樹是否為系統(tǒng)樹。如果不是,其意味著輸入數(shù)據(jù)的值是要被加到搜索或排序樹的記錄標(biāo)識(shí),并執(zhí)行步驟204。如果是,其意味著輸入數(shù)據(jù)的值是記錄數(shù)據(jù)然后數(shù)據(jù)被存儲(chǔ)進(jìn)數(shù)據(jù)區(qū)9。在存儲(chǔ)完數(shù)據(jù)后可獲得文件地址和記錄長度。文件地址和記錄長度被作為新加入的數(shù)據(jù)子葉,并被存儲(chǔ)進(jìn)系統(tǒng)樹中。步驟204通知改進(jìn)的平衡樹管理裝置5根據(jù)記錄標(biāo)識(shí)將新的子葉加到指定的樹中。步驟205將數(shù)據(jù)存儲(chǔ)進(jìn)新的子葉中。
如果由步驟201確定了刪除記錄數(shù)據(jù)的過程,執(zhí)行步驟206,要求改進(jìn)的平衡樹管理裝置5將指定的子葉從指定的樹中刪除掉,并發(fā)回存儲(chǔ)在子葉中的數(shù)據(jù)。步驟207將確定所指定的樹是否是系統(tǒng)樹;如果不是,完成刪除操作;如果是,其意味著被刪除的子葉中的數(shù)據(jù)為記錄的文件地址和數(shù)據(jù)長度,并執(zhí)行步驟208以刪除掉數(shù)據(jù)區(qū)9中的相應(yīng)的數(shù)據(jù)。
如果在步驟201中為了加入數(shù)據(jù)決定過程模式是比較,其意味著進(jìn)行排序過程,并執(zhí)行步驟209以要求改進(jìn)的平衡樹管理裝置5提供所指定的排序樹的第一層中的數(shù)據(jù)。然后執(zhí)行步驟210,使用二進(jìn)制搜索,從而根據(jù)為了加入所進(jìn)行的比較搜索要被加入的數(shù)據(jù)的最近的子葉。改進(jìn)的平衡樹管理裝置5在此步驟中被連續(xù)通訊聯(lián)絡(luò)以獲得記錄的文件地址和數(shù)據(jù)長度用于進(jìn)行比較過程。在找到最近的子葉后,開始步驟211,檢查節(jié)點(diǎn)是否為終端節(jié)點(diǎn);如果不是,其意味著仍未找到插入點(diǎn),然后執(zhí)行步驟212,要求改進(jìn)的平衡樹管理裝置5提供在子葉上具有根的子樹的下一子葉中的數(shù)據(jù),再執(zhí)行步驟210重復(fù)上述的過程;如果是,其意味著找到了插入點(diǎn),即步驟210已經(jīng)找到了子葉的位置,步驟213要求改進(jìn)的平衡樹管理裝置5加入新的子葉并將用于比較的記錄標(biāo)識(shí)加到子葉中。
如果在步驟201中過程模式被確定作為記錄數(shù)據(jù)的數(shù)據(jù)搜索,將執(zhí)行步驟214,通知改進(jìn)的平衡樹管理裝置5根據(jù)記錄標(biāo)識(shí)從指定的樹中搜索子葉的數(shù)據(jù)。步驟215檢查所指定的樹是否是系統(tǒng)樹;如果是,將執(zhí)行步驟217;如果不是,則所找到的子葉數(shù)據(jù)應(yīng)該是系統(tǒng)樹中的記錄標(biāo)識(shí),從而步驟216需要改進(jìn)的平衡樹管理裝置5參考前面找到的作為記錄標(biāo)識(shí)的子葉數(shù)據(jù)從系統(tǒng)樹中搜索子葉數(shù)據(jù),然后執(zhí)行步驟217。如果請(qǐng)求需要數(shù)據(jù),所找到的子葉數(shù)據(jù)被作為記錄的文件地址和數(shù)據(jù)長度,從數(shù)據(jù)區(qū)9中獲得所需要的所需記錄數(shù)據(jù);如果請(qǐng)求修改數(shù)據(jù),子葉數(shù)據(jù)同樣被作為記錄的文件地址和數(shù)據(jù)長度,從數(shù)據(jù)區(qū)9刪除掉所需的記錄數(shù)據(jù),將新的數(shù)據(jù)存儲(chǔ)進(jìn)數(shù)據(jù)區(qū)9,在上述的過程中所獲得的文件地址和數(shù)據(jù)長度被存回子葉中。
如果在步驟201中存在一個(gè)改進(jìn)的平衡樹,步驟218將通知改進(jìn)的平衡樹管理裝置5刪除被指定的改進(jìn)平衡樹。如果在步驟201中存在要被加入的改進(jìn)平衡樹,步驟219將通知改進(jìn)的平衡樹管理裝置5增加改進(jìn)的平衡樹。
圖5示出本發(fā)明中的改進(jìn)的平衡樹管理裝置的工作流程圖。首先,步驟501確定所要求的工作模式。如果確定要加入一個(gè)新的子葉,步驟502將連續(xù)與節(jié)點(diǎn)管理裝置6通訊,從而搜索要被加入的子葉的節(jié)點(diǎn),其是通過根據(jù)所獲得的記錄標(biāo)識(shí)通過改進(jìn)的平衡樹所獲得的。步驟503將新的子葉加入到所找到的節(jié)點(diǎn)的位置,而步驟504處理平衡樹中的節(jié)點(diǎn)分離問題。步驟505將所獲得的數(shù)據(jù)存儲(chǔ)進(jìn)新的子葉。步驟509將根據(jù)在步驟502中在改進(jìn)的平衡樹中的通過的路徑矯正關(guān)于在相關(guān)的子樹中的子葉的總數(shù)。如果在步驟501中確定刪除掉一個(gè)子葉,步驟506將連續(xù)與節(jié)點(diǎn)管理裝置6進(jìn)行通訊以根據(jù)所指定的標(biāo)識(shí)通過通過所指定的改進(jìn)的平衡樹搜索要被刪除的子葉的節(jié)點(diǎn)。步驟508將處理在改進(jìn)的平衡樹中的節(jié)點(diǎn)結(jié)合的問題。步驟508將處理在改進(jìn)的平衡樹中的節(jié)點(diǎn)結(jié)合的問題。步驟509根據(jù)在步驟506中的改進(jìn)的平衡樹中的通過的路徑矯正關(guān)于在相關(guān)的子樹中的子葉的總數(shù)。如果在步驟501中確定獲得子葉數(shù)據(jù),步驟510將連續(xù)與節(jié)點(diǎn)管理裝置6進(jìn)行通訊以搜索子葉的節(jié)點(diǎn),其是通過根據(jù)指定的標(biāo)識(shí)通過被指定的改進(jìn)的平衡樹而實(shí)現(xiàn)的。步驟511獲得子葉數(shù)據(jù)。如果在步驟501中確認(rèn)加入一個(gè)新樹,步驟512將構(gòu)成一個(gè)新樹的啟始節(jié)點(diǎn)。如果在步驟501中確定刪除一個(gè)樹,步驟513將刪除掉指定樹的所有的節(jié)點(diǎn)。如果在步驟501中確定獲得節(jié)點(diǎn)數(shù)據(jù),步驟514通知節(jié)點(diǎn)管理裝置6轉(zhuǎn)換回所指定的節(jié)點(diǎn)數(shù)據(jù)。
圖6示出本發(fā)明中的節(jié)點(diǎn)管理裝置6的工作流程圖。首先,步驟601檢查要被尋找的節(jié)點(diǎn)是否在節(jié)點(diǎn)緩沖區(qū)7內(nèi)。如果是,則執(zhí)行步驟606。否則,步驟602從數(shù)據(jù)區(qū)9獲得指定的節(jié)點(diǎn)。步驟603檢查該節(jié)點(diǎn)緩沖區(qū)7是否為滿的。如果其是滿的,步驟604以LRU(最近最少使用法)方式刪除節(jié)點(diǎn),其將刪除掉最長的時(shí)間內(nèi)未被使用的節(jié)點(diǎn)。如果修改了要被替代的節(jié)點(diǎn)。節(jié)點(diǎn)被存回?cái)?shù)據(jù)區(qū)9。接著,步驟605將節(jié)點(diǎn)數(shù)據(jù)放置到節(jié)點(diǎn)緩沖區(qū)7上。步驟606修改節(jié)點(diǎn)的存取過程中的順序值(為LRU所提供的),并發(fā)送回節(jié)點(diǎn)數(shù)據(jù)。
通過上面的描述,本發(fā)明的裝置可被用于解決具有可變長度的電子數(shù)據(jù)的存取問題。改進(jìn)的平衡樹可將所有的記錄與可變長度相連以通過容易的增加和刪除記錄及存儲(chǔ)記錄的順序的方法形成完整的數(shù)據(jù)庫。用戶可通過記錄管理裝置、搜索控制裝置和排序控制裝置根據(jù)要求形成記錄集合的任何的一部分。另外,通過過濾、搜索和排序的過程可重復(fù)地處理記錄集合的那些部分,從而獲得數(shù)據(jù)管理和應(yīng)用的目的。節(jié)點(diǎn)管理裝置使用好的管理規(guī)則以最優(yōu)的調(diào)節(jié)和應(yīng)用節(jié)點(diǎn)緩沖區(qū)的資源,進(jìn)而提高與裝置相關(guān)的執(zhí)行的效率。
雖然在上面的描述中只示出和描述了本發(fā)明的最佳實(shí)施例,但應(yīng)明確在本發(fā)明范圍內(nèi)的各種的修改和變更都受到保護(hù)。
權(quán)利要求
1.一種在計(jì)算機(jī)系統(tǒng)中用于管理具有可變長度的電子數(shù)據(jù)的方法,其中包括的數(shù)據(jù)存儲(chǔ)過程包含如下的步驟將數(shù)據(jù)記錄存儲(chǔ)進(jìn)數(shù)據(jù)區(qū),獲得被存儲(chǔ)的所述數(shù)據(jù)記錄的記錄存儲(chǔ)地址和數(shù)據(jù)長度,并確定當(dāng)前的記錄集合和相應(yīng)的記錄標(biāo)識(shí)符;根據(jù)改進(jìn)的平衡樹的搜索算法使用在步驟a中確定的當(dāng)前的記錄集合和記錄標(biāo)識(shí)符搜索所需的樹中記錄中的所需子葉的所需節(jié)點(diǎn);從節(jié)點(diǎn)緩沖區(qū)或數(shù)據(jù)區(qū)尋找步驟b的所需的節(jié)點(diǎn);將在步驟a中獲得的記錄存儲(chǔ)地址和數(shù)據(jù)長度存儲(chǔ)進(jìn)步驟b的所需的子葉中;以及其中包括的數(shù)據(jù)獲取的過程包含下面的步驟識(shí)別所需的數(shù)據(jù)記錄的當(dāng)前的記錄集合和相應(yīng)的記錄標(biāo)識(shí)符;根據(jù)所述變化平衡樹的所述搜索算法使用在步驟e中識(shí)別的當(dāng)前的記錄集合和記錄標(biāo)識(shí)符搜索所需的樹的記錄中的指定子葉的所需節(jié)點(diǎn);從節(jié)點(diǎn)緩沖區(qū)和數(shù)據(jù)區(qū)尋找步驟f的所需的節(jié)點(diǎn);及從所述指定的子葉獲得所述所需數(shù)據(jù)記錄的所需記錄地址和所需數(shù)據(jù)長度,然后根據(jù)所需的記錄地址和所需的數(shù)據(jù)長度獲得所述的所需數(shù)據(jù)記錄。
2.一種用于管理具有可變長度的電子數(shù)據(jù)的裝置,其被用于在具有輸入裝置、存儲(chǔ)裝置和輸出裝置的計(jì)算機(jī)系統(tǒng)中存儲(chǔ)和使用電子數(shù)據(jù),包含記錄管理裝置,用于增加、刪除和獲取數(shù)據(jù)記錄;搜索控制裝置,用于執(zhí)行搜索過程和管理被搜索的數(shù)據(jù)記錄;排序控制裝置,用于通過為增加數(shù)據(jù)記錄所進(jìn)行的比較執(zhí)行排序過程;變化平衡樹管理裝置,用于變化平衡樹中的管理系統(tǒng)樹、排序樹和搜尋樹,將數(shù)據(jù)記錄的文件地址和數(shù)據(jù)長度存儲(chǔ)進(jìn)系統(tǒng)樹中,在數(shù)據(jù)庫中處理所有的記錄數(shù)據(jù),并將系統(tǒng)樹的記錄標(biāo)識(shí)符作為數(shù)據(jù)記錄的一部分存儲(chǔ)進(jìn)排序樹或搜尋樹;及節(jié)點(diǎn)管理裝置,用于管理節(jié)點(diǎn)緩沖區(qū)和數(shù)據(jù)區(qū)中的記錄數(shù)據(jù)的存儲(chǔ)。
全文摘要
一種在計(jì)算機(jī)系統(tǒng)中使用改進(jìn)的平衡樹用于管理不同類型的具有可變長度的電子數(shù)據(jù)的裝置。平衡樹包括系統(tǒng)樹,搜尋樹和排序樹。系統(tǒng)樹用于管理數(shù)據(jù)的長度和數(shù)據(jù)庫中的每個(gè)記錄的文件地址。搜尋樹用于存儲(chǔ)和管理搜索過程的結(jié)果。排序樹用于管理記錄排序的結(jié)果。數(shù)據(jù)管理裝置包含記錄管理裝置,搜尋控制裝置,排序控制裝置,平衡樹管理裝置,節(jié)點(diǎn)管理裝置和輸出裝置,用于對(duì)具有可變長度的電子數(shù)據(jù)的數(shù)據(jù)庫中的所需的記錄進(jìn)行快速的搜尋和排序。
文檔編號(hào)G06F17/30GK1252578SQ9912183
公開日2000年5月10日 申請(qǐng)日期1999年10月19日 優(yōu)先權(quán)日1998年10月23日
發(fā)明者歐陽彥一 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社