專利名稱:數(shù)據(jù)編譯方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)處理方法以及數(shù)據(jù)處理裝置,通過使用信息處理裝置,例如計(jì)算機(jī),用以處理大量數(shù)據(jù)。更具體地說,本發(fā)明涉及一種方法和裝置,用以將處于任意表格格式之中的數(shù)據(jù)轉(zhuǎn)換為處于適于快速處理的預(yù)定格式的數(shù)據(jù)。
背景技術(shù):
對大量的數(shù)據(jù)(例如數(shù)據(jù)庫)進(jìn)行檢索、總結(jié)(summarize)和排序,或者進(jìn)行連接與更新,都需要大量的時間。為了解決這個問題,本發(fā)明人提出了一種方法,用于在一種表格格式中極快地進(jìn)行檢索、總結(jié)和排序,以及一種方法,用于進(jìn)行連接與更新,或者用于對處于一種表格格式之中的數(shù)據(jù)進(jìn)行事務(wù)處理(JP-A-10-227278和JP-A-10-338133PCT/JP99/04300,JP-A-11-151156PCT/JP00/03465,以及JP-A-11-215450PCT/JP00/05135)。
根據(jù)一系列已提出的這些方法,就能通過不使用索引來創(chuàng)造性地進(jìn)行統(tǒng)一的處理。此外,通過保持效率,就能在一個子集中進(jìn)行處理。
為了實(shí)現(xiàn)快速檢索、總結(jié)、排序、連接和更新,必須將處于給定的表格格式之中的數(shù)據(jù)轉(zhuǎn)換為處于預(yù)定格式之中的數(shù)據(jù)(在下文中,這種處理將被稱為“編譯”或“編譯處理”)。在這種形式中,如圖2所示,提供了一個數(shù)值列表以及一個數(shù)組(指針數(shù)組)。在數(shù)值列表中,以無冗余方式、按照預(yù)定順序來定位一個給定項(xiàng)目的項(xiàng)目數(shù)值。該數(shù)組包括對應(yīng)于記錄號碼的元素。每一個元素都在含有對應(yīng)于記錄號碼的項(xiàng)目數(shù)值的數(shù)值列表中指定一個位置。處于預(yù)定格式之中的一個給定項(xiàng)目的一個數(shù)據(jù)組被稱為信息塊。
在下列情形下需要編譯處理
(1)在新給出的表格格式之中的數(shù)據(jù)應(yīng)當(dāng)被轉(zhuǎn)換并且被存儲為處于預(yù)定格式之中的數(shù)據(jù)時;(2)從一個或多個項(xiàng)目來計(jì)算一個新項(xiàng)目時;以及(3)在一種表格格式之中的數(shù)據(jù)應(yīng)當(dāng)被添加到處于其他表格格式之中的數(shù)據(jù)時,例如,在將二月份的表格添加到一月份的表格時。
為了實(shí)現(xiàn)在這些情形下的編譯處理,按照常規(guī)是通過使用一種已知的排序方法(例如,快速排序),以不同的順序來排列處于一個數(shù)值列表之中的項(xiàng)目數(shù)值。
然而,當(dāng)使用已知的排序方法來生成一個信息塊時,可能會出現(xiàn)下列問題(1)一般來說,需要進(jìn)行O(n*log(n))次比較計(jì)算,這需要大量的處理時間;(2)當(dāng)特殊地使用快速排序時,在某些數(shù)據(jù)分布中,處理效率可能會極度地降低;以及(3)難以通過使用多處理器來進(jìn)行快速排序。
本發(fā)明的一個目標(biāo)就是提供一種數(shù)據(jù)編譯方法,它允許較快的處理時間,同時,不會在某些數(shù)據(jù)分布中極度地降低處理效率。
本發(fā)明可以同樣有效地應(yīng)用于單一處理器的情形。特別是,本發(fā)明的另一個目標(biāo)就是提供一種數(shù)據(jù)編譯方法,它能在一個大規(guī)模的并行系統(tǒng)中,顯著地改進(jìn)其性能。
發(fā)明內(nèi)容
通過一種數(shù)據(jù)編譯方法就能實(shí)現(xiàn)本發(fā)明的各項(xiàng)目標(biāo)。該方法將表格格式數(shù)據(jù)轉(zhuǎn)換為一種信息塊形式,上述表格格式數(shù)據(jù)被表示為記錄的一個數(shù)組,其中每個記錄都包括一個項(xiàng)目以及其中所含的項(xiàng)目數(shù)值;上述信息塊形式具有一個數(shù)值列表,其中包括按照預(yù)定順序、無冗余排列的項(xiàng)目數(shù)值,以及一個位置指定數(shù)組,含有位置指定號碼,用以根據(jù)記錄號碼在數(shù)值列表中指定項(xiàng)目數(shù)值,該方法包括下列各步驟在表格格式數(shù)據(jù)中,生成一個含有一個項(xiàng)目數(shù)值數(shù)組的部分中間塊,上述項(xiàng)目數(shù)值數(shù)組包括對應(yīng)于記錄號碼的項(xiàng)目數(shù)值,一個順序指定數(shù)組,用以指定項(xiàng)目數(shù)值在項(xiàng)目數(shù)值數(shù)組中的位置,以及一個位置指定數(shù)組,用以在順序指定數(shù)組中指定元素,該部分中間塊初始地對應(yīng)于一個單一的記錄;選擇相鄰的部分中間塊,并生成由第一部分中間塊和第二部分中間塊組成的一個對子;合并該對子的項(xiàng)目數(shù)值數(shù)組,以生成一個新項(xiàng)目數(shù)值數(shù)組;確定順序指定數(shù)組的元素,以便在已合并的新項(xiàng)目數(shù)值數(shù)組中,通過將該對子中屬于第一部分中間塊的項(xiàng)目數(shù)值與屬于第二部分中間塊的項(xiàng)目數(shù)值進(jìn)行比較,來以預(yù)定的順序規(guī)定項(xiàng)目數(shù)值;當(dāng)順序指定數(shù)組的元素被確定時,確定位置指定數(shù)組的元素以便規(guī)定在合并前的項(xiàng)目數(shù)值;以及重復(fù)選擇相鄰的部分中間塊并結(jié)成對子,并生成一個新的部分中間塊,其中包括一個已合并的項(xiàng)目數(shù)值數(shù)組,以及其元素已被確定的一個順序指定數(shù)組以及位置指定數(shù)組,以便最后生成一個部分中間塊,其中,最后生成的部分中間塊是一個信息塊,并且其中一個數(shù)值列表包括順序指定數(shù)組以及項(xiàng)目數(shù)值數(shù)組。
根據(jù)本發(fā)明,部分中間塊是成對的,并且,通過對部分中間塊的項(xiàng)目數(shù)值進(jìn)行比較,來確定在對子中的項(xiàng)目數(shù)值的順序。通過順序地將相鄰的各個部分中間塊結(jié)成對子,來生成新的部分中間塊,這就是說,在一種所謂的錦標(biāo)賽(tournament)的形式中,生成一個較大的部分中間塊。根據(jù)本發(fā)明,對“n”個記錄來說,當(dāng)項(xiàng)目數(shù)值完全不同時,比較次數(shù)約為“n*(log2(n)-1)”次,即,0(n*log(n))。然而,當(dāng)只有“m(n>m)”個項(xiàng)目數(shù)值為不同并且當(dāng)“m”顯著地小于“n”時,比較次數(shù)才會降低到大約“n”。即使當(dāng)“m”為相對地較大時,比較次數(shù)也為“m*(log2(n)-1)”。換句話說,可以對處理效率進(jìn)行評估。此外,即使當(dāng)處理效率為最低時,處理效率仍然不低于0(n*log(n))。
而且,由于采用所謂的錦標(biāo)賽的形式,可以適當(dāng)?shù)赝ㄟ^多處理器,以并行方式來進(jìn)行部分中間塊的對子的比較。這樣一來,就能顯著地縮短處理時間。
根據(jù)本發(fā)明的一個優(yōu)選實(shí)施例,確定順序指定數(shù)組的元素的步驟包括下列各步驟生成一個新的順序指定數(shù)組;以及將在第一部分中間塊中的項(xiàng)目數(shù)值與在第二部分中間塊中的項(xiàng)目數(shù)值進(jìn)行比較,確定較高的一個,并且從在新順序指定數(shù)組中較高的項(xiàng)目數(shù)值開始,順序地定位由項(xiàng)目數(shù)值指定的第一部分中間塊或第二部分中間塊中的順序指定數(shù)組的數(shù)值。
確定位置指定數(shù)組的元素的步驟包括下列各步驟生成一個位置指定重定義數(shù)組,用以指定新的順序指定數(shù)組;以及當(dāng)順序指定數(shù)組的數(shù)值被定位之后,對元素進(jìn)行定位,用以規(guī)定定位于新的順序指定數(shù)組的數(shù)值在第一部分中間塊或第二部分中間塊的位置指定重定義數(shù)組中的相應(yīng)位置。
該方法還包括一個在位置指定重定義數(shù)組中轉(zhuǎn)換位置指定數(shù)組的數(shù)值,并獲得一個新的位置指定數(shù)組的步驟。
根據(jù)本發(fā)明,各信息塊的數(shù)值列表可以是一個順序指定數(shù)組和一個項(xiàng)目數(shù)值數(shù)組??晒┻x擇地,根據(jù)另一個實(shí)施例,本方法包括這樣一個步驟在最后生成一個部分中間塊之后,順序地定位由順序指定數(shù)組中位置較高的元素所規(guī)定的項(xiàng)目數(shù)值,以便生成一個在其中項(xiàng)目數(shù)值按照預(yù)定順序、無冗余地定位的新項(xiàng)目數(shù)值數(shù)組。
本發(fā)明的各項(xiàng)目標(biāo)可以通過一種計(jì)算機(jī)可讀介質(zhì)來實(shí)現(xiàn)。該計(jì)算機(jī)可讀介質(zhì)存儲著含有上述各步驟的程序。而且,本發(fā)明的各項(xiàng)目標(biāo)可以通過一段程序來實(shí)現(xiàn),該程序令計(jì)算機(jī)去執(zhí)行上述各步驟。
圖1是一個方框圖,表示一個能實(shí)行根據(jù)本發(fā)明的一個實(shí)施例的檢索、總結(jié)和查找方法的計(jì)算機(jī)系統(tǒng)的硬件配置;圖2表示在該實(shí)施例中所使用的一個信息塊;圖3A是表格格式數(shù)據(jù)的一個實(shí)例;圖3B至3D這3個圖表示基于表格格式數(shù)據(jù)的各種信息塊的實(shí)例;圖4A表示表格格式數(shù)據(jù)的另一個實(shí)例;圖4B和4C表示基于表格格式數(shù)據(jù)的一個信息塊的其他實(shí)例;圖5是一個流程圖,表示針對一個單一項(xiàng)目的檢索方法;圖6A和6B分別表示介于記錄號碼以及針對一個給定項(xiàng)目的項(xiàng)目數(shù)值之間的關(guān)系,以及根據(jù)本實(shí)施例的一個完整的信息塊;圖7是一個流程圖,表示根據(jù)本實(shí)施例的編譯處理過程的要點(diǎn);圖8A至8C表示在根據(jù)本實(shí)施例的處理步驟中的部分中間塊的一些實(shí)例;圖9是一個流程圖,表示通過將根據(jù)本實(shí)施例的兩個部分中間塊加以合并,以便生成一個新的部分中間塊的處理過程的要點(diǎn);圖10是一個流程圖,詳細(xì)表示在圖9中的步驟904的處理過程;圖11是一個流程圖,詳細(xì)表示在圖10中的步驟1005的處理過程;圖12是一個流程圖,詳細(xì)表示在圖10中的步驟1007和1013的處理過程;圖13是一個流程圖,詳細(xì)表示在圖10中的步驟1009和1011的處理過程;圖14是一個流程圖,詳細(xì)表示在圖10中的步驟1014的處理過程;圖15A和圖15B表示通過對初始部分中間塊加以合并,來生成一個新的部分中間塊的實(shí)例;圖16表示生成一個根據(jù)本實(shí)施例的新的PV的處理過程;圖17A和17B表示根據(jù)本實(shí)施例對部分中間塊進(jìn)行合并時的各種狀態(tài);圖18A至18D分別說明根據(jù)本實(shí)施例對各個部分中間塊進(jìn)行合并的處理過程;圖19A至19C分別說明根據(jù)本實(shí)施例對各個部分中間塊進(jìn)行合并的處理過程;
圖20A和20B這兩個實(shí)例分別表示用以生成一個根據(jù)本實(shí)施例的新的PV的處理過程;圖21A至21C分別說明根據(jù)本實(shí)施例對各個部分中間塊進(jìn)行合并的處理過程;圖22A至22C分別說明根據(jù)本實(shí)施例對各個部分中間塊進(jìn)行合并的處理過程;圖23A和23B分別表示用以生成一個根據(jù)本實(shí)施例的新的PV的處理過程;圖24是一個流程圖,表示根據(jù)本實(shí)施例用于生成一個壓縮型數(shù)值列表的處理過程;圖25A和25B說明根據(jù)本實(shí)施例用于生成一個壓縮型數(shù)值列表的處理過程;圖26表示根據(jù)本實(shí)施例用于檢查處理速度的一個數(shù)組的實(shí)例。
具體實(shí)施例方式
在下文中,將參照附圖,對本發(fā)明的實(shí)施例進(jìn)行說明。
圖1是一個方框圖,表示一個能實(shí)行根據(jù)本發(fā)明的一個實(shí)施例的檢索、總結(jié)和搜索方法的計(jì)算機(jī)系統(tǒng)的硬件配置。如圖1所示,計(jì)算機(jī)系統(tǒng)10具有與通常的計(jì)算機(jī)相同的配置。計(jì)算機(jī)系統(tǒng)10包括一個CPU 12,通過執(zhí)行各項(xiàng)程序,來控制整個系統(tǒng)以及各個部件,一個隨機(jī)存取存儲器(RAM)14用于存儲工作數(shù)據(jù)等,一個只讀存儲器(ROM)16用于存儲各項(xiàng)程序等,一個靜止存儲器介質(zhì)18(例如一個硬盤),一個CD-ROM驅(qū)動器20用于訪問CD-ROM 19,一個接口(I/F)22,用于與被連接到CD-ROM驅(qū)動器20以及外部網(wǎng)絡(luò)(未示出)的外部終端建立接口關(guān)系,一個輸入設(shè)備24,包括一個鍵盤和/或一個鼠標(biāo)以及一個CRT顯示裝置26。CPU 12,RAM 14,ROM 16,外存儲器介質(zhì)18,接口22,輸入設(shè)備24,以及顯示裝置26通過總線28互相連接。
在CD-ROM 19中,可以存儲著根據(jù)本實(shí)施例的用于編譯任意表格格式數(shù)據(jù)的程序,用于生成含有來自已編譯的表格格式數(shù)據(jù)的一個預(yù)定項(xiàng)目的表格(視圖)的程序,檢索程序,總結(jié)程序以及排序程序。然后,可以由CD-ROM驅(qū)動器20對CD-ROM 19進(jìn)行讀出??晒┻x擇地,也可以事先將這些程序存儲在ROM 16之中。從CD-ROM 19讀出的各項(xiàng)程序可以存儲在外部存儲器介質(zhì)18的一個預(yù)定區(qū)域之中??晒┻x擇地,也可以通過一個網(wǎng)絡(luò)(未示出)、一個外部終端以及接口22從外部提供這些程序。
根據(jù)本發(fā)明,對任意表格格式數(shù)據(jù)進(jìn)行編譯,以建立具有信息塊集合形式的數(shù)據(jù),這些信息塊集合可以快速地被檢索、被總結(jié)以及被排序。用于建立數(shù)據(jù)的快速編譯方法是本發(fā)明的實(shí)質(zhì)內(nèi)容。
本發(fā)明人已經(jīng)提出了一種檢索、總結(jié)和排序方法(JP-A-10-227278PCT/JP99/04300),該方法使用具有一種信息塊集合形式的數(shù)據(jù)。而且,本發(fā)明人也已經(jīng)提出了一種用于連接數(shù)據(jù)的方法,以及一種通過具有該種形式的數(shù)據(jù)、用于刪除/添加/更新數(shù)據(jù)的方法(JP-A-11-151156PCT/JP00/03465以及JP-A-11-215450PCT/JP00/05135)。首先,將說明這些信息塊的結(jié)構(gòu)以及通過使用這種結(jié)構(gòu)來進(jìn)行搜索。然后將說明各信息塊的生成(編譯)。
圖2表示在本實(shí)施例中所使用的信息塊。如圖2所示,信息塊100含有一個數(shù)值列表110和一個指向數(shù)值列表的指針數(shù)組120。數(shù)值列表110是一個表格,其中存儲了表格格式數(shù)據(jù)中與項(xiàng)目數(shù)值號碼相對應(yīng)的每個項(xiàng)目的項(xiàng)目數(shù)值111。項(xiàng)目數(shù)值號碼(整數(shù))指的是屬于一個給定項(xiàng)目的項(xiàng)目數(shù)值的順序。指向數(shù)值列表的指針數(shù)組120是存儲表格格式數(shù)據(jù)的列(即,一個給定項(xiàng)目)的項(xiàng)目數(shù)值號碼的數(shù)組。也就是說,指向按照表格格式數(shù)據(jù)的記錄號碼順序排列的數(shù)值列表110的指針。
當(dāng)給定一個記錄號碼時,通過將指向數(shù)值列表的指針數(shù)組120與數(shù)值列表110組合在一起,就能從涉及一個預(yù)定項(xiàng)目的指向數(shù)值列表的指針數(shù)組120中取出按照該記錄號碼而被存儲的項(xiàng)目數(shù)值號碼。接下來,在數(shù)值列表110中取出按照項(xiàng)目數(shù)值號碼而被存儲的一個項(xiàng)目數(shù)值。這樣,在記錄號碼的基礎(chǔ)上,就能得到該項(xiàng)目數(shù)值。因此,像普通的數(shù)據(jù)表一樣,通過使用包括記錄號碼(行)和項(xiàng)目(列)的坐標(biāo),就能查找所有的數(shù)據(jù)(項(xiàng)目數(shù)值)。
圖3A所示的表格格式數(shù)據(jù)就是一個實(shí)例。在該實(shí)例中,向各項(xiàng)目給定了各種項(xiàng)目數(shù)值,包括客戶標(biāo)識,客戶名字和電話號碼。根據(jù)本實(shí)施例,表格格式數(shù)據(jù)是按照圖3B-3D所示的格式作為信息塊而被保存的。例如,在圖3B中,指針數(shù)組120-1是與數(shù)值列表110-1相關(guān)的,數(shù)值列表110-1存儲著表示客戶標(biāo)識的項(xiàng)目數(shù)值。換句話說,也就是指向第一個記錄(記錄號碼為“0”)的指針數(shù)組的指針數(shù)值為零(0)。相應(yīng)地,項(xiàng)目數(shù)值“1”表示可以得到客戶標(biāo)識。在圖3B中,指針數(shù)組120-2與數(shù)值列表110-2相關(guān),該數(shù)值列表存儲著表示客戶名字的項(xiàng)目數(shù)值。例如,在指針數(shù)組中與第一項(xiàng)記錄(記錄號碼“0”)相對應(yīng)的指針數(shù)值為“5”。相應(yīng)地,就可以得到表示客戶名字的項(xiàng)目數(shù)值“Williams”。在圖3C中,類似地和明顯地,指針數(shù)組120-3與數(shù)值列表110-3相關(guān),該數(shù)值列表存儲著表示電話號碼的項(xiàng)目數(shù)值。在每個數(shù)值列表中,項(xiàng)目數(shù)值按照預(yù)定的順序排列(在本實(shí)例中按升序排列)。
而且,根據(jù)本實(shí)施例,信息塊100的數(shù)值管理表包含數(shù)值列表110,一個用于檢索和總結(jié)的分類號標(biāo)志數(shù)組,一個起始位置數(shù)組,用于指示存儲與項(xiàng)目數(shù)值相對應(yīng)的指針的存儲器空間的第一地址,以及一個基數(shù)數(shù)組。分類號標(biāo)志數(shù)組中的各標(biāo)志和基數(shù)數(shù)組中的基數(shù)分別對應(yīng)于項(xiàng)目數(shù)值。通常,分類號標(biāo)志的標(biāo)志數(shù)值通常為“0”,在進(jìn)行檢索和/或總結(jié)時,根據(jù)待查找的項(xiàng)目數(shù)值,它被設(shè)置為“1”。基數(shù)與具有給定項(xiàng)目數(shù)值的記錄號碼相對應(yīng)。起始位置與基數(shù)的總和相對應(yīng),所述基數(shù)是與低于相應(yīng)指針數(shù)值的指針數(shù)值相對應(yīng)的。因此,并不總是需要起始位置。
圖4A是表示表格格式數(shù)據(jù)的另一個實(shí)例的示意圖。圖4B和圖4C分別表示與“性別”和“年齡”相關(guān)的信息塊。如圖4B所示,與“性別”相關(guān)的信息塊200-1的值管理表210-1含有與指針數(shù)組220中的指針數(shù)值對應(yīng)的項(xiàng)目數(shù)值(“男”和“女”),分類號,起始位置,以及與項(xiàng)目數(shù)值相對應(yīng)的基數(shù)。例如,與指針數(shù)值“0”(也就是數(shù)值列表中的項(xiàng)目數(shù)值為“男”)相對應(yīng)的記錄數(shù)為632,564。另一方面,與指針數(shù)值“1”(也就是數(shù)值列表中的項(xiàng)目數(shù)值為“女”)相對應(yīng)的記錄數(shù)為367,426。與每個項(xiàng)目數(shù)值相對應(yīng)的起始位置表示指向記錄的一個指針數(shù)組230-1的第一地址。這將在以后加以敘述。很顯然,圖4C中的情況也是如此。
下面將對使用具有數(shù)據(jù)結(jié)構(gòu)的信息塊進(jìn)行檢索的實(shí)例進(jìn)行說明。圖5是涉及單一項(xiàng)目檢索方法的流程圖。中央處理器(CPU)12(見圖1)通過執(zhí)行一個預(yù)定的檢索程序來完成處理。在本例中,對“年齡”方面的項(xiàng)目數(shù)值為16歲或19歲的記錄進(jìn)行檢索。首先,在涉及表格格式數(shù)據(jù)的各信息塊中,規(guī)定示于圖4C的與“年齡”有關(guān)的一個信息塊200-2(步驟501)。
其次,在已規(guī)定的信息塊的數(shù)值列表210-2中,具有與檢索條件(16歲或19歲)相匹配的行的分類號被設(shè)置為“1”(步驟502)。在本例中,與項(xiàng)目數(shù)值“0”和項(xiàng)目數(shù)值號碼“3”相對應(yīng)的行的分類號被設(shè)置為“1”。然后,就得到了對應(yīng)于分類號被設(shè)置為“1”的行的起始位置和基數(shù)(步驟503)。這些類信息被稱為指針取出(pointer taking-out)信息。在步驟503所獲得的指針取出信息的基礎(chǔ)上,從指向記錄的指針數(shù)組中取出表示指向匹配于檢索條件的記錄的指針的記錄號碼(步驟504)。在本例中,指向與項(xiàng)目數(shù)值號碼“0”相對應(yīng)的記錄的指針被存儲在從起始位置“0”開始的一個區(qū)域,也就是說,從第一號地址起,直到第45898號地址為止。另一方面,指向項(xiàng)目數(shù)值號碼“3”所對應(yīng)的記錄的指針被存儲在指向記錄的指針數(shù)組中從第2383137號地址到第189653號地址的區(qū)域。最后,為了在以后處理中加以應(yīng)用,生成已檢索到的記錄號碼的數(shù)組,并且作為一個結(jié)果集合被保存(步驟505)。
可以通過使用分類號、起始位置和基數(shù)來實(shí)施總結(jié)和排序。
下面,對生成信息塊的編譯處理過程進(jìn)行說明。在編譯處理過程中,生成一個數(shù)值列表。與給定項(xiàng)目有關(guān)的隨機(jī)排列的數(shù)據(jù)以無冗余的方式、按照一種給定的順序(例如,按照字母順序)在數(shù)值列表中進(jìn)行排序。圖6A是表示在表格格式數(shù)據(jù)中對一個給定項(xiàng)目的各項(xiàng)記錄和項(xiàng)目數(shù)值的示意圖。在如圖6A所示的根據(jù)本實(shí)施例的編譯處理過程中,以圖6B所示的形式,為一個具有隨機(jī)排列的項(xiàng)目數(shù)值的項(xiàng)目生成一個信息塊。
在圖6B中,信息塊600包含一個指向數(shù)值列表(以下稱為“PV”)的指針數(shù)組601和一個數(shù)值列表602。緊接在編譯處理過程之后,數(shù)值列表602含有一個存儲著各項(xiàng)原始項(xiàng)目數(shù)值603的數(shù)組(原始項(xiàng)目數(shù)值數(shù)組)和存儲著原始項(xiàng)目數(shù)值數(shù)組603的位置號碼的數(shù)組604(以下稱為“VLP”)。指針數(shù)組(PV)可能就是位置指定數(shù)組,因?yàn)樵跀?shù)值列表中的項(xiàng)目數(shù)值已被指定。而且,VLP也可能是一個位置指定數(shù)組,因?yàn)閂LP指定項(xiàng)目數(shù)值的順序。緊接在編譯處理過程之后的信息塊的形式與圖3B所示的上述信息塊的形式稍有不同。但是,通過在后面描述的處理,信息塊就能擁有相同的形式。
圖7是一個流程圖,表示本實(shí)施例編譯處理過程的要點(diǎn)。如圖7所示,在編譯處理過程中,舉例來說,計(jì)算機(jī)系統(tǒng)10讀出存儲在靜態(tài)存儲介質(zhì)18中的表格格式數(shù)據(jù)(步驟701)。然后,計(jì)算機(jī)系統(tǒng)10識別需要生成信息塊的項(xiàng)目(步驟702)。例如,可能為所有的項(xiàng)目生成信息塊。另外一種情況就是只生成針對某個規(guī)定的任意項(xiàng)目的信息塊。考慮到處理時間,已讀出的表格格式數(shù)據(jù)最好暫時地保存在RAM 14之中。
其次,計(jì)算機(jī)系統(tǒng)10從表格格式數(shù)據(jù)中選擇一個預(yù)定的項(xiàng)目。然后,計(jì)算機(jī)系統(tǒng)10通過與記錄號碼建立關(guān)聯(lián),來取出與該項(xiàng)目有關(guān)的數(shù)據(jù)(項(xiàng)目數(shù)值)(步驟703)。這樣一來,就能取出例如具有如圖6A所示形式的數(shù)據(jù)。接著,生成針對該項(xiàng)目的一個信息塊(步驟704)。其處理步驟將在下面詳細(xì)說明。對所有已規(guī)定的項(xiàng)目都執(zhí)行步驟703和704(見步驟705和706)。因此,針對預(yù)定項(xiàng)目的信息塊完成。
下面,將詳細(xì)說明步驟704的處理過程。通過對相鄰的記錄順序地加以組合以及通過確定在該組合的PV和/或VLP中的數(shù)值,來實(shí)施步驟704的處理過程。例如,如圖8A所示,4n+1個部分中間塊801-0至801-(4n)初始地被認(rèn)為是具有記錄號碼0至4n的項(xiàng)目(記錄的數(shù)目=4n+1)。相鄰的兩個部分中間塊(例如,一個部分中間塊801-0以及一個部分中間塊801-1)被組合。然后,考慮一個示于圖8B的新的部分中間塊(例如,部分中間塊811-0)。在新的部分中間塊中,在PV和VLP中的各項(xiàng)數(shù)值均被更新。這里,如圖8B所示,生成了(2n+1)個新的部分中間塊。
而且,相鄰的兩個部分中間塊(例如,部分中間塊811-0以及811-1)被組合。如圖8C所示,生成了一個新的部分中間塊(例如,部分中間塊821-0)。然后,新的部分中間塊的PV和VLP中的各項(xiàng)數(shù)值均被更新。
通過重復(fù)執(zhí)行這樣的處理過程,就能最后生成將兩個部分中間塊組合而成的一個新塊。該塊是一個信息塊。圖9是表示這樣的處理過程的流程圖。
在圖9的步驟901中生成的初始的各個部分中間塊對應(yīng)于圖8A中的各個部分中間塊。相鄰的各個部分中間塊被選出,直到最后一塊為止(步驟902)。它們被合并,并且獲得用于一個轉(zhuǎn)換數(shù)組(以下稱為“TR”)和/或用于表示合并后的新的存儲位置號碼的一個數(shù)組(以下稱為“VLP’”)的空間(步驟903)。其次,在已合并的部分中間塊的PV和/或VLP中的各項(xiàng)數(shù)值均被更新(步驟904和905)。TR被用來重新定義PV。因此,TR可能是一個位置指定重定義數(shù)組。
當(dāng)已經(jīng)以一定的層次將部分中間塊合并到部分中間塊的末尾時,確定已合并的部分中間塊的數(shù)目是否為1(步驟906)。在這里,若結(jié)果為“是”,則這一個部分中間塊就是一個完成的信息塊。另一方面,若結(jié)果為“否”,則在步驟902至905,對已合并的多個部分中間塊再次進(jìn)行處理。
下面,將參照在圖6A中所示的記錄號碼以及對應(yīng)于項(xiàng)目“姓”的項(xiàng)目數(shù)值,詳細(xì)說明在圖9中,特別是在步驟902至904中的處理過程。
首先,如圖15A所示,生成9個初始部分中間塊(見圖9中的步驟901)。在這里,起始處的部分中間塊1501-0和1501-1被合并。然后,對PV和VLP進(jìn)行更新(見圖9中的步驟904)。
圖10是一個流程圖,詳細(xì)說明在圖9的步驟904中的處理過程。在處理過程中,分別將待合并的兩個部分中間塊中有較小的記錄數(shù)的以及有較大的記錄數(shù)的稱為第一部分中間塊和第二部分中間塊。定位于第一部分中間塊的、在VLP中指定一個數(shù)值以表示待比較的一個項(xiàng)目數(shù)值的指針被稱為第一比較位置指針。定位于第二部分中間塊的、在VLP中指定一個數(shù)值以表示待比較的一個項(xiàng)目數(shù)值的指針被稱為第二比較位置指針。在圖10的處理過程的開始,比較位置指針在每一個部分中間塊中都指定一個具有最小記錄號的VLP數(shù)值。而且,指定用以存儲在處理過程中生成的一個VLP’中的數(shù)值的位置的指針被稱為存儲位置指針。在進(jìn)行圖10的處理之前,第一比較位置指針、第二比較位置指針以及存儲位置指針都被設(shè)置在起始位置(在每一個VLP中的開始位置)上。
如圖10所示,計(jì)算機(jī)系統(tǒng)10取出由第一比較位置指針?biāo)付ǖ囊粋€項(xiàng)目數(shù)值(第一指定數(shù)值),以及由第二比較位置指針?biāo)付ǖ囊粋€項(xiàng)目數(shù)值(第二指定數(shù)值),并對這些數(shù)值進(jìn)行比較(步驟1001至1003)。接著,根據(jù)第一指定數(shù)值以及第二指定數(shù)值的大和小,或者根據(jù)第一比較指針和第一比較指針的位置,執(zhí)行不同的處理過程(見步驟1004至1014)。
在圖15A所示的部分中間塊1501-0和1501-1中,第一比較位置指針起初在部分中間塊1501-0中指定“Smith”。另一方面,第二比較位置指針起初在部分中間塊1501-1中指定“Carter”。因此,它們的比較(見圖10中的步驟1003)將導(dǎo)致“第一指定數(shù)值>第二指定數(shù)值”(見步驟1008)。在這種情況下,本方法進(jìn)入步驟1009,執(zhí)行圖13所示的處理過程。
更詳細(xì)地說,對應(yīng)于由第二比較位置指針?biāo)付ǖ捻?xiàng)目數(shù)值“Carter”的一個VLP數(shù)值“1”被規(guī)定(步驟1301)。VLP數(shù)值“1”被存儲在由VLP的存儲位置指針?biāo)付ǖ囊粋€位置(起始位置,即,存儲位置號碼為“0”的位置)上(步驟1302)。其次,給出存儲位置指針?biāo)诘囊粋€存儲位置號碼(在本例中為“0”),作為對應(yīng)于第二比較位置指針的位置的一個TR數(shù)值(步驟1303)。
然后,計(jì)算機(jī)系統(tǒng)10將第二比較位置指針移動到下行一側(cè)(存儲位置號碼變大的一側(cè))(步驟1304)。此外,計(jì)算機(jī)系統(tǒng)10將存儲位置指針移動到下行一側(cè)(步驟1305)。
進(jìn)行此項(xiàng)處理之后,再次進(jìn)行步驟1001至1003的處理。然而,當(dāng)?shù)诙鎯ξ恢弥羔槺灰苿拥缴鲜鰧?shí)例中的下行一側(cè)時,由第二比較指針?biāo)付ǖ囊粋€項(xiàng)目數(shù)值并不存在。因此,步驟1012的結(jié)果為“是”。接著,進(jìn)行圖12所示的處理。
更詳細(xì)地說,對應(yīng)于由第一比較位置指針?biāo)付ǖ捻?xiàng)目數(shù)值“Smith”的一個VLP數(shù)值“0”被識別(步驟1201)。VLP數(shù)值“0”被存儲在由VLP’的存儲位置指針?biāo)付ǖ囊粋€位置(第二位置,即,存儲位置號碼為“1”所指示的位置)上。其次,給出表示存儲位置指針的位置的一個存儲位置號碼(在本例中為“1”), 作為對應(yīng)于第一比較位置指針的位置的一個TR數(shù)值(步驟1203)。然后,第二比較位置指針被移動到下行一側(cè)(存儲位置號碼變大的一側(cè))(步驟1204)。存儲位置指針也被移動到下行一側(cè)(步驟1205)。
然后,再次執(zhí)行步驟1001至1003。然而,由第一比較指針和第二比較指針?biāo)付ǖ膬蓚€項(xiàng)目數(shù)值并不存在。因此,步驟1004至1012的結(jié)果為“否”。接著,處理過程進(jìn)入步驟1014。
更詳細(xì)地說,在第一部分中間塊(見圖15A中的參考數(shù)字1501-0)中,PV數(shù)值被轉(zhuǎn)換為一個對應(yīng)的TR數(shù)值,以便生成一個新的PV數(shù)值(步驟1401)。在第二部分中間塊(見圖15A中的參考數(shù)字1501-1)中,PV數(shù)值被轉(zhuǎn)換為一個對應(yīng)的TR數(shù)值,以便生成一個新的PV數(shù)值(步驟1402)。圖16特別地說明新的PV和VLP各項(xiàng)數(shù)值的生成。例如,在第一部分中間塊1501-0中取出一個PV(舊PV)1601的一個元素(數(shù)值)“0”,并且規(guī)定具有由該元素所指定的一個存儲位置號碼的一個TR 1602的一個元素(數(shù)值)。由于該元素(數(shù)值)為“1”,所以,舊PV中的元素“0”可以被存儲在由該TR的該元素所指定的存儲位置號碼所指定的一個新的PV 1603的位置上。在第二部分中間塊中,執(zhí)行相同的處理。因此,就能生成一個新的PV。
通過重復(fù)執(zhí)行在圖10的步驟1001至1013中的處理過程而生成的一個VLP’變?yōu)橐粋€新的VLP(見圖16中的步驟1403以及參考數(shù)字1604)。
對其他部分中間塊集合執(zhí)行圖10所示的處理過程,以便生成新的PV’和新的VLP’。通過著重于在圖10至14中迄今尚未被說明的處理部分,來說明對其他部分中間塊集合所進(jìn)行的處理。例如,在圖15A所示的部分中間塊1501-4中,第一比較位置指針起初指定“Carter”。另一方面,在圖15A所示的部分中間塊1501-5中,第二比較位置指針起初指定“Smith”。它們的比較將導(dǎo)致“第一指定數(shù)值<第二指定數(shù)值”(在步驟1006中的“是”)。處理過程進(jìn)入步驟1007,執(zhí)行圖12所示的處理過程。
在圖12中,對應(yīng)于由第一比較位置指針?biāo)付ǖ捻?xiàng)目數(shù)值“Carter”的一個VLP數(shù)值“4”被規(guī)定(步驟1201)。然后,VLP數(shù)值“4”被存儲在由VLP’的存儲位置指針?biāo)付ǖ囊粋€位置(存儲位置號碼為“4”的位置)上(步驟1202)。其次,給出存儲位置指針?biāo)诘囊粋€存儲位置號碼(在本例中為“4”),作為對應(yīng)于第一比較位置指針的位置的一個TR數(shù)值(步驟1203)。
然后,計(jì)算機(jī)系統(tǒng)10將第一比較位置指針移動到下行一側(cè)(存儲位置號碼變大的一側(cè))(步驟1204)。存儲位置指針也被移動到下行一側(cè)(步驟1205)。
進(jìn)行上述處理之后,再次進(jìn)行步驟1001至1003的處理。然而,在這個實(shí)例中,當(dāng)?shù)谝槐容^位置指針被移動到下行一側(cè)時,由第一比較指針指定的一個項(xiàng)目數(shù)值并不存在。因此,在這里,步驟1010的結(jié)果為“是”。接著,執(zhí)行圖13所示的處理過程。
在圖13所示的處理過程中,對應(yīng)于由第二比較位置指針?biāo)付ǖ捻?xiàng)目數(shù)值“Smith”的一個VLP數(shù)值“5”被規(guī)定。VLP數(shù)值“5”被存儲在由VLP’的存儲位置號碼“5”所指定的一個位置上(步驟1301和1302)。給出存儲位置號碼“5”,作為對應(yīng)于第二比較位置指針的一個TR數(shù)值(步驟1303)。其次,第二比較位置指針以及存儲位置指針都被移動到下行一側(cè)(步驟1304和1305)。
在這里,由第一比較指針以及第二比較指針指定的項(xiàng)目數(shù)值均不存在。因此,處理過程進(jìn)入步驟1014,生成一個新的PV和一個新的VLP(見步驟1401至1403)。
其次,在圖15A所示的部分中間塊1501-7中,第一比較位置指針起初指定“Greene”。另一方面,在圖15A所示的部分中間塊1501-7中,第二比較位置指針起初指定“Greene”。它們的比較將導(dǎo)致“第一指定數(shù)值=第二指定數(shù)值”(在步驟1004中的“是”)。然后,處理過程進(jìn)入步驟1005。
在圖11中,對應(yīng)于由第一比較位置指針?biāo)付ǖ捻?xiàng)目數(shù)值“Greene”的一個VLP數(shù)值“6”被規(guī)定。然后,VLP數(shù)值“6”被存儲在該VLP’中由存儲位置指針?biāo)付ǖ囊粋€位置(即,存儲位置號碼“6”)上(步驟1102)。其次,給出存儲位置指針?biāo)诘拇鎯ξ恢锰柎a“6”,作為對應(yīng)于第一比較位置指針的一個TR數(shù)值(步驟1103)。隨后,第一比較位置指針被移動到下行一側(cè)。
類似地,給出存儲位置指針?biāo)诘拇鎯ξ恢锰柎a“6”,作為對應(yīng)于第二比較位置指針的位置的一個TR數(shù)值,(步驟1105)。隨后,第二比較位置指針被移動到下行一側(cè)(步驟1106)。
這樣一來,當(dāng)在兩個部分中間塊中存在相同的項(xiàng)目數(shù)值時,通過消除重復(fù),將該數(shù)值存儲在VLP’之中。
在后繼的處理中,由第一比較位置指針和第二比較位置指針?biāo)付ǖ捻?xiàng)目數(shù)值均不存在。處理過程進(jìn)入圖4所示的處理,在此生成一個新的PV以及一個新的VLP。
這樣一來,就能獲得如圖15B中的參考數(shù)字1511-0至1511-4所表示的新的部分中間塊。對這些部分中間塊執(zhí)行在圖9至14中所示的處理過程。在這里,如圖17A所示,部分中間塊1511-0保留原樣。部分中間塊1511-1和1511-2以及部分中間塊1511-3和1511-4被組成對子。對部分中間塊的對子中的每一個進(jìn)行處理。
下面,將參照流程圖,再次對部分中間塊1511-1和1511-2組成的對子的處理過程進(jìn)行說明。如圖18A中的箭頭A,B和C所示,開始時,第一比較位置指針,第二比較位置指針以及第三比較位置指針均被定位于VLP’和VLP’的開始處。
在圖10中,取出由第一比較位置指針(圖18A中的箭頭A)所指定的一個VLP數(shù)值“3”所規(guī)定的一個項(xiàng)目數(shù)值“Greene”(見步驟1011)。另一方面,取出由第二比較位置指針(圖18A中的箭頭B)所指定的一個VLP數(shù)值“4”所說明的一個項(xiàng)目數(shù)值“Carter”(步驟1012)。
介于第一指定數(shù)值“Greene”以及第二指定數(shù)值“Carter”之間的比較將導(dǎo)致“第一指定數(shù)值>第二指定數(shù)值”(在步驟1008中的“是”),因此,執(zhí)行圖13所示的處理過程。這樣一來,如圖18B所示,VLP數(shù)值“4”以及在TR中的一個預(yù)定數(shù)值被定位于由存儲位置指針(箭頭C)所指定的一個位置上。然后,第二比較位置指針以及存儲位置指針被移動到下行一側(cè)(見箭頭B’和C’)。
其次,對由第一比較位置指針(圖18B中的箭頭A)所指定的一個VLP數(shù)值“3”所規(guī)定的一個項(xiàng)目數(shù)值“Greene”以及由第二比較位置指針(圖18B中的箭頭B’)所指定的一個VLP數(shù)值“5”所規(guī)定的一個項(xiàng)目數(shù)值“Smith”進(jìn)行比較(圖10中的步驟1001至1003)。在這種情況下,第一指定數(shù)值<第二指定數(shù)值。因此,處理過程進(jìn)入步驟1007。如圖18C所示,由第一比較位置指針?biāo)付ǖ囊粋€VLP數(shù)值“3”以及一個預(yù)定的TR數(shù)值均被定位于由存儲位置指針(圖18C中的箭頭C)所指定的位置上。然后,第一比較位置指針和存儲位置指針被移動到下行一側(cè)(見箭頭A’和C’)。
再有,對由第一比較位置指針(圖18C中的箭頭A’)所指定的一個VLP數(shù)值“2”所規(guī)定的一個項(xiàng)目數(shù)值“Smith”以及由第二比較位置指針(圖18C中的箭頭B)所指定的一個VLP數(shù)值“5”所規(guī)定的一個項(xiàng)目數(shù)值“Smith”進(jìn)行比較(圖10中的步驟1001至1003)。在這種情況下,第一指定數(shù)值=第二指定數(shù)值。因此,處理過程進(jìn)入步驟1005。在這里,如圖18D所示,由第一比較位置指針?biāo)付ǖ囊粋€VLP數(shù)值“2”被定位于由存儲位置指針(箭頭C)所指定的位置上。然后,作為對應(yīng)于由第一比較位置指針和第二比較位置指針?biāo)付ǖ奈恢玫囊粋€TR數(shù)值,由存儲位置指針?biāo)付ǖ囊粋€存儲位置號碼“4”位于其中。
在此項(xiàng)處理之后,再次進(jìn)行圖10的處理過程。隨后,處理過程進(jìn)入步驟1014。在這里,在TR中的舊PV被轉(zhuǎn)換,以生成新的PV。舊PV數(shù)值被取出,并且由該數(shù)值所指定的一個位置的TR數(shù)值被規(guī)定。該TR數(shù)值被定位于在新的PV中對應(yīng)于從其中取出舊PV的那個數(shù)值的位置的一個位置上。通過重復(fù)進(jìn)行此項(xiàng)處理,就能獲得如圖20B所示的一個新PV 2001。
其次,將簡要地說明對部分中間塊1511-3和1511-4所組成的對子的處理過程。在這里,還進(jìn)行與對前面的部分中間塊集合所進(jìn)行的處理相同的處理。例如,如圖19B所示,通過首先執(zhí)行圖10中的處理過程,由第二存儲位置指針(圖19B中的箭頭B)所指定的一個VLP數(shù)值“8”被定位于該存儲位置指針(圖19B中的箭頭C)的一個位置上,此外,對應(yīng)的TR數(shù)值“6”被確定。如圖19C所示,通過其次執(zhí)行圖10中的處理過程,由第一比較位置指針(圖19B中的箭頭A)所指定的VLP數(shù)值“6”被定位于該存儲位置指針(圖19C中的箭頭C)所指定的一個位置上。此外,預(yù)定的TR數(shù)值(對應(yīng)于由第一比較位置指針以及第二比較位置指針?biāo)付ǖ奈恢玫囊粋€TR數(shù)值)被確定。
最后,通過再次執(zhí)行圖10中的處理過程,在步驟1014中生成一個新的PV(見圖20B)。
這樣一來,就能生成在圖17A中由參考數(shù)字1701-1和1701-2所指示的各個部分中間塊。
還有,在本例中,部分中間塊1701-0(實(shí)際上相同于部分中間塊1501-0)以及部分中間塊1701-1被合并。在這里,也重復(fù)執(zhí)行圖10所示的處理過程。對由部分中間塊1701-0和1701-1的比較位置指針?biāo)付ǖ腣LP數(shù)值所規(guī)定的項(xiàng)目數(shù)值進(jìn)行比較。根據(jù)比較結(jié)果,順序地確定VLP’數(shù)值和TR數(shù)值。
如圖21A所示,對部分中間塊1701-0和部分中間塊1701-1進(jìn)行圖10所示的處理。如圖21A所示,在首先進(jìn)行的圖10的處理過程中,由第一比較位置指針(圖21中的箭頭A)所指定的一個VLP數(shù)值“1”所規(guī)定的一個項(xiàng)目數(shù)值“Carter”與由第二比較位置指針(圖21中的箭頭B)所指定的一個VLP數(shù)值“4”所規(guī)定的一個項(xiàng)目數(shù)值“Carter”進(jìn)行比較,根據(jù)比較結(jié)果,執(zhí)行在圖11中的處理過程(步驟1105)。這樣一來,就確定由存儲位置指針(圖21A中的箭頭C)所指示的VLP’中的數(shù)值“1”。此外,還確定對應(yīng)于第一和第二比較位置指針的TR中的一個數(shù)值“0”。
如圖21B所示,在圖10的下一步處理中,由第一比較位置指針(圖21A中的箭頭A)所指定的VLP數(shù)值“0”所規(guī)定的一個項(xiàng)目數(shù)值“Smith”與由第二比較位置指針(圖21B中的箭頭B)所指定的一個VLP數(shù)值“3”所規(guī)定的一個項(xiàng)目數(shù)值“Greene”進(jìn)行比較,根據(jù)比較結(jié)果,執(zhí)行在圖13中的處理過程(步驟1109)。這樣一來,就確定由存儲位置指針(圖21B中的箭頭C)所指定的VLP’中的數(shù)值“3”。此外,還確定對應(yīng)于第二比較位置指針的TR中的一個數(shù)值“1”。
而且,如圖21C所示,在圖10的下一步處理中,由第一比較位置指針(圖21C中的箭頭A)所指定的VLP數(shù)值“0”所規(guī)定的一個項(xiàng)目數(shù)值“Smith”與由第二比較位置指針(圖21C中的箭頭B)所指定的VLP數(shù)值“2”所規(guī)定的一個項(xiàng)目數(shù)值“Smith”進(jìn)行比較。根據(jù)比較結(jié)果,執(zhí)行在圖11中的處理過程(步驟1005)。這樣一來,就確定由存儲位置指針(圖21C中的箭頭C)所指定的VLP’中的數(shù)值“0”。此外,還確定對應(yīng)于第一和第二比較位置指針的TR中的一個數(shù)值“2”。在此后執(zhí)行的圖10的處理中,由第一比較位置指針和第二比較位置指針?biāo)付ǖ腣LP數(shù)值并不存在。因此,執(zhí)行在圖14中的處理過程(步驟1014)。在相關(guān)的TR中,對PV(舊PV)數(shù)值進(jìn)行轉(zhuǎn)換。這樣一來,就能獲得一個新的PV(見圖23A)。
通過執(zhí)行上述處理過程,生成由圖17B中的參考數(shù)字1711-0所表示的一個部分中間塊。最后,部分中間塊1711-0和部分中間塊1711-1(它們實(shí)際上相同于部分中間塊1701-2)被組成對子。隨后,對該部分中間塊的對子進(jìn)行預(yù)定的處理。
下面將參照流程圖等,來說明準(zhǔn)備對部分中間塊1711-0和1711-1組成的對子所進(jìn)行的處理。例如,在圖10的處理中,首先,如圖22A所示,由第一比較位置指針(圖22A中的箭頭A)所指定的VLP數(shù)值“1”所規(guī)定的一個項(xiàng)目數(shù)值“Carter”與由第二比較位置指針(圖22B中的箭頭B)所指定的VLP數(shù)值“8”所規(guī)定的一個項(xiàng)目數(shù)值“Carter”進(jìn)行比較。根據(jù)比較結(jié)果,執(zhí)行在圖11中的處理過程(步驟1005)。這樣一來,就確定由存儲位置指針(圖22A中的箭頭C)所指定的VLP’中的數(shù)值“1”。此外,還確定對應(yīng)于第一和第二比較位置指針的TR中的一個數(shù)值“0”。
如圖22A所示,在此后執(zhí)行的圖10的處理中,由第一比較位置指針(圖22A中的箭頭A)所指定的VLP數(shù)值“3”所規(guī)定的一個項(xiàng)目數(shù)值“Greene”與由第二比較位置指針(圖22B中的箭頭B)所指定的VLP數(shù)值“3”所規(guī)定的一個項(xiàng)目數(shù)值“Greene”進(jìn)行比較,根據(jù)比較結(jié)果,執(zhí)行在圖11中的處理過程(步驟1005)。這樣一來,就確定由存儲位置指針(圖22B中的箭頭C)所指定的VLP’中的一個數(shù)值“3”。此外,還確定對應(yīng)于第一和第二比較位置指針的TR中的一個數(shù)值“1”。
還有,如圖22C所示,在圖10的下一步處理過程中,存在由第一比較位置指針(圖22C中的箭頭A)所指定的VLP數(shù)值“0”。然而,第二比較位置指針(圖22C中的箭頭B)所指定的VLP數(shù)值并不存在。因此,執(zhí)行在圖12中的處理過程(步驟1013)。在這里,確定由存儲位置指針(圖22C中的箭頭C)所指定的VLP’數(shù)值“0”。此外,還確定在對應(yīng)于第一比較位置指針的TR中的一個數(shù)值“2”。在此后執(zhí)行的圖10的處理中,由第一比較位置指針和第二比較位置指針?biāo)付ǖ腣LP數(shù)值并不存在。因此,執(zhí)行在圖14中的處理過程(步驟1014)。在相關(guān)的TR中,對PV(舊PV)數(shù)值進(jìn)行轉(zhuǎn)換。這樣一來,就能獲得一個新的PV(見圖23B)。
這樣一來,如圖6B所示,就獲得了一個信息塊600,它有一個數(shù)值列表602,在數(shù)值列表602中又包括一個VP 601,一個VLP 604以及一個原始項(xiàng)目數(shù)值數(shù)組603。這里,在原始項(xiàng)目數(shù)值數(shù)組603中,實(shí)際上被使用的僅有對應(yīng)于存儲位置號碼“0”、“1”、和“3”的元素(項(xiàng)目數(shù)值)“Smith”、“Carter”和“Greene”(見參考數(shù)字610、611和613)。顯而易見,其他元素(項(xiàng)目數(shù)值)(例如,參考數(shù)字612和614)均不被使用,即,不被VLP數(shù)值所指定。換句話說,當(dāng)在原始項(xiàng)目數(shù)值數(shù)組中存在相同的項(xiàng)目數(shù)值時,只有具有最小的存儲位置號碼的那一個才被使用。其他的均不被使用。
下面將說明這種形式的信息塊等效于圖3B所示的信息塊這樣一個事實(shí)。例如,在圖6A中,根據(jù)記錄號碼“0”來規(guī)定項(xiàng)目數(shù)值“Smith”。同樣,在圖6B中,根據(jù)記錄號碼“0”來規(guī)定在PV中的一個元素(數(shù)值)“2”。當(dāng)在VLP中的一個元素(數(shù)值)被規(guī)定、使得元素“2”成為存儲位置號碼時,就能獲得“0”。而且,在原始項(xiàng)目數(shù)值數(shù)組中,還可能獲得其存儲位置號碼為VLP元素(數(shù)值)“0”的項(xiàng)目數(shù)值“Smith”。顯而易見,類似地,可以為其他記錄號碼規(guī)定各自的項(xiàng)目數(shù)值。
因此,通過使用圖6B所示的含有VLP 604以及原始項(xiàng)目數(shù)值數(shù)組603的數(shù)值列表602,就能進(jìn)行檢索、總結(jié)和排序。然而,在這種情況下,原始項(xiàng)目數(shù)值數(shù)組照原樣被使用。從圖6B可以清楚地看出,當(dāng)在原始項(xiàng)目數(shù)值數(shù)組中存在相同的項(xiàng)目數(shù)值時,只有具有最小的存儲位置號碼的那一個才被使用。其他的項(xiàng)目數(shù)值均不被使用。因此,當(dāng)在原始項(xiàng)目數(shù)值數(shù)組中存在多項(xiàng)重疊時,許多部分均不被使用。通過把由一個VLP數(shù)值所指定的一個項(xiàng)目數(shù)值存儲到一個新的數(shù)組中,就能生成一個沒有冗余的項(xiàng)目數(shù)值數(shù)組(壓縮型數(shù)值列表)。
圖24是一個流程圖,表示生成一個壓縮型數(shù)值列表的處理過程。如圖24所示,計(jì)算機(jī)系統(tǒng)10對存儲位置號碼進(jìn)行初始化,并獲得用于壓縮型數(shù)值列表的一個區(qū)域(步驟2401)。定位于這個區(qū)域的用于數(shù)據(jù)(項(xiàng)目數(shù)值)的記錄數(shù)目對應(yīng)于在VLP中所包括的數(shù)值的數(shù)目。因此,所獲得的區(qū)域?qū)?yīng)于數(shù)值的數(shù)目。
其次,在VLP中取出由存儲位置號碼所指定的一個數(shù)值(步驟2402)。在原始項(xiàng)目數(shù)值數(shù)組中由VLP的數(shù)值所指定的一個項(xiàng)目數(shù)值被規(guī)定(步驟2403)。隨后,被規(guī)定的項(xiàng)目數(shù)值被定位于在壓縮型數(shù)值列表中由存儲位置號碼所指定的一個位置上(步驟2404)。對VLP中的所有數(shù)值都進(jìn)行這樣的處理(見步驟2405和2406)。例如,對圖6B中所示的數(shù)值列表602進(jìn)行圖24所示的處理時,由VLP中的一個數(shù)值(例如,由存儲位置號碼“0”所指定的一個數(shù)值“1”),來規(guī)定在原始項(xiàng)目數(shù)值數(shù)組中的一個項(xiàng)目數(shù)值(例如,“Carter”),如圖25A所示。然后,該項(xiàng)目數(shù)值被定位于在壓縮型數(shù)值列表中由存儲位置號碼所指定的一個位置(例如,處于“0”的位置)上。
作為處理的結(jié)果,圖6B所示的信息塊600被轉(zhuǎn)換為含有PV 601以及壓縮型數(shù)值列表2501的信息塊2500,如圖25B所示。新獲得的信息塊2500明顯地具有與圖3B所示的信息塊相同的形式?;趶膱D24的處理過程中所得到的信息塊2500,就能明顯地進(jìn)行檢索、總結(jié)和排序的處理。
下面將進(jìn)一步地說明在編譯處理中通過重復(fù)執(zhí)行圖10所示的處理過程使兩個部分中間塊合并而獲得的一個數(shù)組。例如,參照于圖18D中的VLP’以及項(xiàng)目數(shù)值數(shù)組。由存儲在VLP’(這是一個新的VLP)中的存儲位置號碼“2”的一個位置的數(shù)值“4”見參考號碼1801)來規(guī)定在項(xiàng)目數(shù)值數(shù)組中的一個元素(數(shù)值)“Carter”(見參考號碼1802)。由存儲在新的VLP 1801的存儲位置號碼“3”中的一個位置的數(shù)值“3”來規(guī)定在項(xiàng)目數(shù)值數(shù)組1802中的一個元素(數(shù)值)“Greene”。由存儲在新的VLP 1801的存儲位置號碼“4”中的一個位置的數(shù)值“2”來說明在項(xiàng)目數(shù)值數(shù)組1802中的一個元素(數(shù)值)“Smith”。這樣一來,就從新的VLP以及項(xiàng)目數(shù)值數(shù)組中生成一個數(shù)值列表,它涉及已合并的部分中間塊。項(xiàng)目數(shù)值被存儲在數(shù)值列表中。換句話說,通過對兩個部分中間塊重復(fù)執(zhí)行圖10的處理過程,使兩個部分中間塊合并,就生成該部分中間塊的數(shù)值列表。在數(shù)值列表中,項(xiàng)目數(shù)值均按照預(yù)定的順序來排列,并且沒有冗余。
下面將進(jìn)一步地說明具有上述結(jié)構(gòu)的數(shù)據(jù)編譯方法的處理速度。在這里,為了說明得簡單一些,數(shù)值列表不采取VLP和項(xiàng)目數(shù)值數(shù)組的形式。然而,分別由VLP中的數(shù)值來規(guī)定在項(xiàng)目數(shù)值數(shù)組中的數(shù)值。因此,數(shù)值列表采取含有被規(guī)定的數(shù)值的一個數(shù)組(壓縮型數(shù)值列表)的形式。
如圖26所示,0至7中的任何數(shù)目都可以被分配給8個記錄中的每一個作為項(xiàng)目數(shù)值。這里,分別對應(yīng)于記錄的項(xiàng)目數(shù)值彼此不同。在這種情況下,根據(jù)本實(shí)施例,對4個部分中間塊的對子(例如,見圖26中的參考號碼2602-1和2602-2)重復(fù)進(jìn)行圖10的處理,上述部分中間塊的對子包括一對涉及針對記錄號碼“0”和“1”的數(shù)值列表(見參考數(shù)字2601-0和2601-1)的部分中間塊,以及一對涉及針對記錄號碼“2”和“3”的數(shù)值列表的部分中間塊。
在這個實(shí)例中,項(xiàng)目數(shù)值是完全不同的。因此,要進(jìn)行4個項(xiàng)目數(shù)值的比較,包括介于“2”和“6”,“4”和“0”,“3”和“7”,以及“5”和“1”之間的比較。一般來說,若一個元素為“n(這里,n最好是2的一個冪)”,在第一次處理中,進(jìn)行“n/21”次比較。
其次,4個部分中間塊被合并為兩個部分中間塊(例如,見圖26中的參考數(shù)字2602-1,2602-2,2603-1和2603-2)。在這里,對部分中間塊2602-0和2602-1進(jìn)行3次項(xiàng)目數(shù)值比較。即,對“2”和“0”,“2”和“4”,以及“6”和“4”進(jìn)行比較。對信息塊的其余部分也類似地進(jìn)行3次項(xiàng)目數(shù)值的比較。即,對“3”和“1”,“3”和“5”,以及“7”和“5”進(jìn)行比較。一般來說,若一個元素為“n(這里,n最好是2的一個冪)”,則最多進(jìn)行“n/22*(22-1)”次比較。
而且,從兩個部分中間塊(例如,見圖26中的參考數(shù)字2603-1,2603-2和參考數(shù)字2604)生成一個最后的信息塊。在這里,進(jìn)行7次項(xiàng)目數(shù)值比較。即,對“0”和“1”,“2”和“1”,“2”和“3”,“4”和“3”,“4”和“5”,“6”和“5”以及“6”和“7”進(jìn)行比較。一般來說,若一個元素為“n(這里,n最好是2的一個冪)”,則最多進(jìn)行“n/23*(23-1)”次比較。
考慮到上述的比較次數(shù),在對部分中間塊進(jìn)行合并時,要進(jìn)行下列次數(shù)的比較。
第一次 (n/21)次比較第二次 (n/22)*(22-1)次比較第三次 (n/23)*(23-1)次比較第log2(n)次 (n/2log2(n))*(2log2(n)-1)次比較為生成信息塊所需的比較次數(shù)可能是在合并處理過程中的比較次數(shù)的總和。因此,可以從下列方程式1來獲得比較的總次數(shù) 顯而易見,當(dāng)項(xiàng)目數(shù)值互相不重疊(當(dāng)項(xiàng)目數(shù)值完全不同)時,要進(jìn)行最多為大約“n*log2(n)-1”次比較。
另一方面,若“n”個項(xiàng)目數(shù)值中的“m”個項(xiàng)目數(shù)值不同,則在對部分中間塊進(jìn)行合并時,要進(jìn)行下列次數(shù)的比較。
第一次 (n/21)次比較第二次 (n/22)*Max((m/n)*22-1,1)次比較第三次 (n/23)*Max((m/n)*23-1,1)次比較第log2(n)次(n/2log2(n))*Max((m/n)*2log2(n)-1,1)次比較這里,當(dāng)“m”顯著地小于“n”(例如,m=1至4的量級)時,第一次 (n/21)次比較第二次 (n/22)次比較第三次 (n/23)次比較第log2(n)次 (n/2log2(n))次比較因此,比較的總次數(shù)可以近似地被認(rèn)為是“n”。
另一方面,當(dāng)“n”大于“m”時,第一次 (n/21)次比較第二次 (n/22)*((m/n)*22-1)次比較第三次 (n/23)*((m/n)*23-1)次比較第log2(n)次 (n/2log2(n))*((m/n)*2log2(n)-1)次比較因此,可以從下列方程式2來獲得比較的總次數(shù) 這樣一來,當(dāng)n個項(xiàng)目數(shù)值中的m個項(xiàng)目數(shù)值不同時,根據(jù)“m”的大小,進(jìn)行下列次數(shù)的比較處理當(dāng)“m”為顯著地小時大約“n”次比較當(dāng)“m”為較大時大約“m*log2(n)-1”次比較因此,當(dāng)項(xiàng)目數(shù)值的重疊程度特別大時,將生成其量級基本上為“n”個的信息塊。
根據(jù)本實(shí)施例,從一對部分中間塊生成一個新的部分中間塊。然后,通過對在新的部分中間塊中的項(xiàng)目數(shù)值進(jìn)行比較,生成處于部分中間塊之中的一個項(xiàng)目數(shù)值數(shù)組。通過逐漸增加部分中間塊的大小,最后獲得一個部分中間塊。最后的部分中間塊是一個信息塊。因此,可以通過多個處理器以并行方式對各個對子進(jìn)行處理。
本發(fā)明并不局限于上述實(shí)施例。在權(quán)利要求書所描述的本發(fā)明的范圍內(nèi),各種改變都是可能的。顯而易見,這些改變均被納入本發(fā)明的范圍之內(nèi)。
根據(jù)本實(shí)施例,可以由一個單一的處理器來進(jìn)行一對部分中間塊的處理??晒┻x擇地,對各對子的處理可以分配到在一個具有并行處理器的系統(tǒng)中的各個處理器。這樣一來,就能實(shí)現(xiàn)快速處理。
對一對部分中間塊的選擇不限于在實(shí)施例中所描述的這一種。任何兩個相鄰的部分中間塊都可以根據(jù)需要構(gòu)成對子。
而且,根據(jù)本實(shí)施例,一段預(yù)定的程序被讀入到通用計(jì)算機(jī)系統(tǒng)10之中。通過執(zhí)行該程序,進(jìn)行用于連接多塊表格格式數(shù)據(jù)的處理以及涉及已連接的表格格式數(shù)據(jù)的處理。然而,本發(fā)明并不局限于此。一部特別用于數(shù)據(jù)庫處理的插件式計(jì)算機(jī)可以被連接到一個通用計(jì)算機(jī)系統(tǒng)(例如一部個人計(jì)算機(jī)),使得該插件式計(jì)算機(jī)能進(jìn)行處理。因此,這里的單元不僅是物理的方案。然而,每一個單元的功能都可以通過軟件來實(shí)現(xiàn)。而且,可以由兩個或多個物理單元來執(zhí)行一個單元的功能??晒┻x擇地,也可以由一個物理單元來執(zhí)行兩個或多個單元的功能。
根據(jù)本發(fā)明,可以提供一種數(shù)據(jù)編譯方法,它能實(shí)現(xiàn)短的處理時間,并且在任何數(shù)據(jù)分布中,都不會極端地降低處理效率。
而且,根據(jù)本發(fā)明,提供了一種編譯方法,它能在一個大規(guī)模的并行系統(tǒng)中,顯著地改進(jìn)其性能。
工業(yè)適用性本發(fā)明可以應(yīng)用于管理大量數(shù)據(jù)(例如數(shù)據(jù)庫和數(shù)據(jù)倉庫)的系統(tǒng)。更具體地說,本發(fā)明可以應(yīng)用于大規(guī)模的科學(xué)技術(shù)計(jì)算基礎(chǔ)業(yè)務(wù)管理,例如訂貨管理和股票交易,以及辦公事務(wù)管理。
權(quán)利要求
1.一種數(shù)據(jù)編譯方法,用于將表格格式數(shù)據(jù)轉(zhuǎn)換為一種信息塊形式,上述表格格式數(shù)據(jù)被表示為記錄的一個數(shù)組,其中每個記錄都包括一個項(xiàng)目以及其中所含的項(xiàng)目數(shù)值;上述信息塊形式具有一個數(shù)值列表,其中包括按照預(yù)定順序、無冗余排列的項(xiàng)目數(shù)值,以及一個位置指定數(shù)組,含有位置指定號碼,用以根據(jù)記錄號碼在數(shù)值列表中指定項(xiàng)目數(shù)值,該方法包括下列各步驟在表格格式數(shù)據(jù)中,生成一個含有一個項(xiàng)目數(shù)值數(shù)組的部分中間塊,上述項(xiàng)目數(shù)值數(shù)組包括對應(yīng)于記錄號碼的項(xiàng)目數(shù)值,一個順序指定數(shù)組,用以指定項(xiàng)目數(shù)值在項(xiàng)目數(shù)值數(shù)組中的位置,以及一個位置指定數(shù)組,用以在順序指定數(shù)組中指定元素,該部分中間塊初始地對應(yīng)于一個單一的記錄;選擇相鄰的部分中間塊,并生成由第一部分中間塊和第二部分中間塊組成的一個對子;合并該對子的項(xiàng)目數(shù)值數(shù)組,以生成一個新項(xiàng)目數(shù)值數(shù)組;確定順序指定數(shù)組的元素,以便在已合并的新項(xiàng)目數(shù)值數(shù)組中,通過將該對子中屬于第一部分中間塊的項(xiàng)目數(shù)值與屬于第二部分中間塊的項(xiàng)目數(shù)值進(jìn)行比較,來以預(yù)定的順序規(guī)定項(xiàng)目數(shù)值;當(dāng)順序指定數(shù)組的元素被確定時,確定位置指定數(shù)組的元素以便規(guī)定在合并前的項(xiàng)目數(shù)值;以及重復(fù)選擇相鄰的部分中間塊并結(jié)成對子,并生成一個新的部分中間塊,其中包括一個已合并的項(xiàng)目數(shù)值數(shù)組,以及其元素已被確定的一個順序指定數(shù)組以及位置指定數(shù)組,以便最后生成一個部分中間塊,其中,最后生成的部分中間塊是一個信息塊,并且其中一個數(shù)值列表包括順序指定數(shù)組以及項(xiàng)目數(shù)值數(shù)組。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)編譯方法,其中,確定順序指定數(shù)組的元素的步驟包括下列各步驟生成一個新的順序指定數(shù)組;以及將在第一部分中間塊中的項(xiàng)目數(shù)值與在第二部分中間塊中的項(xiàng)目數(shù)值進(jìn)行比較,確定較高的一個,并且從在新順序指定數(shù)組中較高的項(xiàng)目數(shù)值開始,順序地定位由項(xiàng)目數(shù)值指定的第一部分中間塊或第二部分中間塊中的順序指定數(shù)組的數(shù)值;其中,確定位置指定數(shù)組的元素的步驟包括下列各步驟生成一個位置指定重定義數(shù)組,用以指定新的順序指定數(shù)組;以及當(dāng)順序指定數(shù)組的數(shù)值被定位之后,對元素進(jìn)行定位,用以規(guī)定定位于新的順序指定數(shù)組的數(shù)值在第一部分中間塊或第二部分中間塊的位置指定重定義數(shù)組中的相應(yīng)位置,以及該方法還包括一個在位置指定重定義數(shù)組中轉(zhuǎn)換位置指定數(shù)組的數(shù)值,并獲得一個新的位置指定數(shù)組的步驟。
3.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)編譯方法還包括,在最后生成一個部分中間塊之后,順序地定位由順序指定數(shù)組中位置較高的元素所規(guī)定的項(xiàng)目數(shù)值,以便生成一個在其中項(xiàng)目數(shù)值按照預(yù)定順序、無冗余地定位的新項(xiàng)目數(shù)值數(shù)組。
4.一種計(jì)算機(jī)可讀介質(zhì),用于存儲將表格格式數(shù)據(jù)轉(zhuǎn)換為一種信息塊形式的數(shù)據(jù)編譯方法,上述表格格式數(shù)據(jù)被表示為記錄的一個數(shù)組,其中每個記錄都包括一個項(xiàng)目以及其中所含的項(xiàng)目數(shù)值;上述信息塊形式具有一個數(shù)值列表,其中包括按照預(yù)定順序、無冗余排列的項(xiàng)目數(shù)值,以及一個位置指定數(shù)組,含有位置指定號碼,用以根據(jù)記錄號碼指定數(shù)值列表中的項(xiàng)目數(shù)值,令計(jì)算機(jī)執(zhí)行下列各步驟在表格格式數(shù)據(jù)中,生成一個含有一個項(xiàng)目數(shù)值數(shù)組的部分中間塊,上述項(xiàng)目數(shù)值數(shù)組包括對應(yīng)于記錄號碼的項(xiàng)目數(shù)值,一個順序指定數(shù)組,用以指定項(xiàng)目數(shù)值在項(xiàng)目數(shù)值數(shù)組中的位置,以及一個位置指定數(shù)組,用以在順序指定數(shù)組中指定元素,該部分中間塊對應(yīng)于一個單一的記錄;選擇相鄰的部分中間塊,并生成由第一部分中間塊和第二部分中間塊組成的一個對子;合并該對子的項(xiàng)目數(shù)值數(shù)組,以生成一個新項(xiàng)目數(shù)值數(shù)組;確定順序指定數(shù)組的元素,以便在已合并的新項(xiàng)目數(shù)值數(shù)組中,通過將該對子中屬于第一部分中間塊的項(xiàng)目數(shù)值與屬于第二部分中間塊的項(xiàng)目數(shù)值進(jìn)行比較,來以預(yù)定的順序規(guī)定項(xiàng)目數(shù)值;當(dāng)順序指定數(shù)組的元素被確定之后,確定位置指定數(shù)組的元素以便規(guī)定在合并前的項(xiàng)目數(shù)值;以及重復(fù)選擇相鄰的部分中間塊并結(jié)成對子,并生成一個新的部分中間塊,其中包括一個已合并的項(xiàng)目數(shù)值數(shù)組,以及其元素已被確定的一個順序指定數(shù)組和位置指定數(shù)組,以便最后生成一個部分中間塊,其中,最后生成的部分中間塊是一個信息塊,并且其中一個數(shù)值列表包括順序指定數(shù)組以及項(xiàng)目數(shù)值數(shù)組。
5.根據(jù)權(quán)利要求4所述的存儲介質(zhì),其中,確定順序指定數(shù)組的元素的步驟包括下列各步驟生成一個新的順序指定數(shù)組;以及將在第一部分中間塊中的項(xiàng)目數(shù)值與在第二部分中間塊中的項(xiàng)目數(shù)值進(jìn)行比較,確定較高的一個,并且從新順序指定數(shù)組中較高的項(xiàng)目數(shù)值開始,順序地定位由項(xiàng)目數(shù)值指定的第一部分中間塊或第二部分中間塊中的順序指定數(shù)組的數(shù)值;其中,確定位置指定數(shù)組的元素的步驟包括下列各步驟生成一個位置指定重定義數(shù)組,用以指定新的順序指定數(shù)組;以及當(dāng)順序指定數(shù)組的數(shù)值被定位之后,對元素進(jìn)行定位,用以規(guī)定定位于新的順序指定數(shù)組中的數(shù)值在第一部分中間塊或第二部分中間塊的位置指定重定義數(shù)組中的相應(yīng)位置,以及其中,該方法還包括一個用于在位置指定重定義數(shù)組中轉(zhuǎn)換位置指定數(shù)組的數(shù)值,并獲得一個新的位置指定數(shù)組的步驟。
6.根據(jù)權(quán)利要求4或5所述的數(shù)據(jù)編譯方法還包括,在最后生成一個部分中間塊之后,順序地定位由順序指定數(shù)組中位置較高的元素所規(guī)定的項(xiàng)目數(shù)值,以便生成一個在其中項(xiàng)目數(shù)值按照預(yù)定順序、無冗余地定位的新項(xiàng)目數(shù)值數(shù)組。
7.一種令計(jì)算機(jī)執(zhí)行數(shù)據(jù)編譯方法的程序,該數(shù)據(jù)編譯方法用于將表格格式數(shù)據(jù)轉(zhuǎn)換為一種信息塊形式,上述表格格式數(shù)據(jù)被表示為記錄的一個數(shù)組,其中每個記錄都包括一個項(xiàng)目以及其中所含的項(xiàng)目數(shù)值;上述信息塊形式具有一個數(shù)值列表,其中包括按照預(yù)定順序、無冗余地排列的項(xiàng)目數(shù)值,以及一個位置指定數(shù)組,含有位置指定號碼,用以根據(jù)記錄號碼指定數(shù)值列表中的項(xiàng)目數(shù)值,本程序令計(jì)算機(jī)執(zhí)行下列各步驟在表格格式數(shù)據(jù)中,生成一個含有一個項(xiàng)目數(shù)值數(shù)組的部分中間塊,上述項(xiàng)目數(shù)值數(shù)組包括對應(yīng)于記錄號碼的項(xiàng)目數(shù)值,一個順序指定數(shù)組,用以指定項(xiàng)目數(shù)值在項(xiàng)目數(shù)值數(shù)組中的位置,以及一個位置指定數(shù)組,用以在順序指定數(shù)組中指定元素,該部分中間塊對應(yīng)于一個單一的記錄;選擇相鄰的部分中間塊,并生成由第一部分中間塊和第二部分中間塊組成的一個對子;合并該對子的項(xiàng)目數(shù)值數(shù)組,以生成一個新項(xiàng)目數(shù)值數(shù)組;確定順序指定數(shù)組的元素,以便在已合并的新項(xiàng)目數(shù)值數(shù)組中,通過將該對子中屬于第一部分中間塊的項(xiàng)目數(shù)值與屬于第二部分中間塊的項(xiàng)目數(shù)值進(jìn)行比較,來以預(yù)定的順序規(guī)定項(xiàng)目數(shù)值;當(dāng)順序指定數(shù)組的元素被確定之后,確定位置指定數(shù)組的元素以便規(guī)定合并前的項(xiàng)目數(shù)值;以及重復(fù)選擇相鄰的部分中間塊并結(jié)成對子,并生成一個新的部分中間塊,其中包括一個已合并的項(xiàng)目數(shù)值數(shù)組,其元素已被確定的一個順序指定數(shù)組以及位置指定數(shù)組,以便最后生成一個部分中間塊,其中,最后生成的部分中間塊是一個信息塊,并且其中一個數(shù)值列表包括順序指定數(shù)組以及項(xiàng)目數(shù)值數(shù)組。
8.根據(jù)權(quán)利要求7所述的程序,令計(jì)算機(jī)執(zhí)行下列各步驟在確定順序指定數(shù)組的步驟中,生成一個新的順序指定數(shù)組;以及將在第一部分中間塊中的項(xiàng)目數(shù)值與在第二部分中間塊中的項(xiàng)目數(shù)值進(jìn)行比較,確定較高的一個,并且從新的順序指定數(shù)組中較高的項(xiàng)目數(shù)值開始,順序地定位由項(xiàng)目數(shù)值指定的第一部分中間塊或第二部分中間塊中的順序指定數(shù)組的數(shù)值;以及在確定位置指定數(shù)組的步驟中,生成一個位置指定重定義數(shù)組,用以指定新的順序指定數(shù)組;以及當(dāng)順序指定數(shù)組的數(shù)值被定位之后,對元素進(jìn)行定位,用以規(guī)定定位于新的順序指定數(shù)組的數(shù)值在第一部分中間塊或第二部分中間塊的位置指定重定義數(shù)組中的相應(yīng)位置,以及其中,該程序還令計(jì)算機(jī)進(jìn)一步地執(zhí)行一個用于在位置指定重定義數(shù)組中轉(zhuǎn)換位置指定數(shù)組的數(shù)值,并獲得一個新的位置指定數(shù)組的步驟。
9.根據(jù)權(quán)利要求7或8所述的程序,令計(jì)算機(jī)進(jìn)一步地執(zhí)行在最后生成一個部分中間塊之后,順序地定位由順序指定數(shù)組中位置較高的元素所規(guī)定的項(xiàng)目數(shù)值,以便生成一個在其中項(xiàng)目數(shù)值按照預(yù)定順序、無冗余地定位的新項(xiàng)目數(shù)值數(shù)組。
全文摘要
一種數(shù)據(jù)編譯方法,用于將表格格式數(shù)據(jù)轉(zhuǎn)換為一種含有數(shù)值列表的信息塊的形式,在其中表格格式數(shù)據(jù)被表示為記錄的一個數(shù)組,其中每個記錄都包括項(xiàng)目以及各項(xiàng)目所含的項(xiàng)目數(shù)值,上述表格格式數(shù)據(jù)被這樣排列,使得項(xiàng)目數(shù)值均按照預(yù)定順序排列,并且沒有冗余,以及一個位置指定數(shù)組,其中含有位置指定號碼,用以在數(shù)值列表中指定項(xiàng)目數(shù)值并與記錄號碼相關(guān)。鄰接的部分中間塊(811-0,811-1),其中包括一個含有涉及記錄號碼的項(xiàng)目數(shù)值的項(xiàng)目數(shù)值數(shù)組,一個順序指定數(shù)組(VLP),用于指定項(xiàng)目數(shù)值在項(xiàng)目數(shù)值數(shù)組中的位置,以及一個位置指定數(shù)組(PV),用于指定元素在順序指定數(shù)組中的位置。上述部分中間塊被合并,以生成新的部分中間塊(812-0),并且部分中間塊的合并操作被重復(fù)執(zhí)行,直到各塊被合并成一個為止。
文檔編號G06F12/00GK1449531SQ01814732
公開日2003年10月15日 申請日期2001年7月30日 優(yōu)先權(quán)日2000年7月31日
發(fā)明者古莊晉二 申請人:特博數(shù)據(jù)實(shí)驗(yàn)室公司