專(zhuān)利名稱(chēng):一種使用表格呈現(xiàn)數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)處理技術(shù),尤其涉及該領(lǐng)域內(nèi)訪(fǎng)問(wèn)計(jì)算機(jī)數(shù)據(jù)
庫(kù)的圖形用戶(hù)接口(GUI)中使用表格呈現(xiàn)數(shù)據(jù)的方法。
背景技術(shù):
目前,在計(jì)算機(jī)數(shù)據(jù)處理技術(shù)中,人們使用圖形用戶(hù)接口處理以及呈 現(xiàn)數(shù)據(jù)時(shí), 一般使用表格呈現(xiàn)數(shù)據(jù)。這種方法不僅直觀且呈現(xiàn)的數(shù)據(jù)信息 量大,并且由于表格在數(shù)據(jù)聚合方面邏輯性強(qiáng),可方便對(duì)記錄的數(shù)據(jù)進(jìn)行 處理,比如對(duì)記錄的數(shù)據(jù)進(jìn)行比較、排序、檢索、過(guò)濾等。因此,在使用 圖形用戶(hù)接口中,表格無(wú)疑是呈現(xiàn)數(shù)據(jù)的首選方案。目前JAVA、 C討等主 流計(jì)算機(jī)編程語(yǔ)言都支持表格的形式。
但是,在操作以表格形式呈現(xiàn)的數(shù)據(jù)時(shí)還存在著不少問(wèn)題,特別是對(duì) 于大規(guī)模數(shù)據(jù),問(wèn)題更加突出,主要表現(xiàn)以下兩個(gè)方面
一方面,在處理以表格形式呈現(xiàn)的數(shù)據(jù)時(shí),將會(huì)占用過(guò)多的計(jì)算機(jī)系 統(tǒng)資源,包括占用內(nèi)存資源用于存儲(chǔ)數(shù)據(jù)和占用CPU資源用于處理數(shù)據(jù)。 這是因?yàn)槊總€(gè)數(shù)據(jù)都有一定的大小,需要占用一定的計(jì)算機(jī)內(nèi)存資源, 當(dāng)需要將大量數(shù)據(jù)放在表格中呈現(xiàn)的時(shí)候,需要將這些數(shù)據(jù)全部加載到計(jì) 算機(jī)內(nèi)存中。假設(shè)一個(gè)數(shù)據(jù)占用1K字節(jié),當(dāng)這些數(shù)據(jù)量達(dá)到一百萬(wàn)條時(shí), 將會(huì)占用約1G內(nèi)存資源;當(dāng)數(shù)據(jù)量達(dá)到一千萬(wàn)條時(shí),占用內(nèi)存資源將會(huì)繼 續(xù)增加使得目前內(nèi)存資源無(wú)法實(shí)現(xiàn)。尤其在訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)時(shí),經(jīng)常會(huì)碰到需 要呈現(xiàn)大規(guī)模數(shù)據(jù)的問(wèn)題。
而且,目前JAVA等編程語(yǔ)言中對(duì)表格數(shù)據(jù)操作時(shí),是對(duì)已存放在表格中的記錄數(shù)據(jù)進(jìn)行操作。在對(duì)這些記錄數(shù)據(jù)進(jìn)行排序、檢索等操作時(shí), 往往需要對(duì)記錄數(shù)據(jù)進(jìn)行分析、調(diào)換、刪除以及重新加載等操作。在對(duì)大
規(guī)模數(shù)據(jù)操作時(shí),勢(shì)必會(huì)占用較多的CPU資源,致使在計(jì)算機(jī)圖形用戶(hù)接
口的人機(jī)界面上表現(xiàn)出死機(jī)等狀態(tài)。
另一方面,要在表格中處理數(shù)據(jù),首先需要將數(shù)據(jù)從硬盤(pán)調(diào)度至內(nèi)存, 然后通過(guò)圖形用戶(hù)接口在表格中呈現(xiàn),最后才能對(duì)數(shù)據(jù)進(jìn)行操作。其中每 個(gè)步驟都需要耗費(fèi)一定的時(shí)間,主要取決于每個(gè)數(shù)據(jù)的大小和數(shù)據(jù)的總量。
當(dāng)加載大規(guī)模數(shù)據(jù)時(shí),數(shù)據(jù)調(diào)度(從硬盤(pán)調(diào)度到內(nèi)存、從虛擬內(nèi)存調(diào)
度到內(nèi)存)時(shí)間將會(huì)大大的增加;圖形用戶(hù)接口的調(diào)用時(shí)間也會(huì)大大增加; 對(duì)數(shù)據(jù)的排序、檢索等操作的耗費(fèi)時(shí)間也會(huì)大大增加??v使系統(tǒng)資源能夠 滿(mǎn)足大規(guī)模數(shù)據(jù)處理時(shí)的資源需求,也會(huì)因?yàn)橄暮荛L(zhǎng)的時(shí)間,而使用戶(hù) 失去耐心,最終導(dǎo)致用戶(hù)使用的滿(mǎn)意度降低。 可見(jiàn),現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種使用表格呈現(xiàn)大規(guī)模數(shù)據(jù)的方法,用以 解決現(xiàn)有技術(shù)中用表格處理大規(guī)沖莫數(shù)據(jù)時(shí)對(duì)計(jì)算機(jī)系統(tǒng)資源需求過(guò)大以及 數(shù)據(jù)處理時(shí)延過(guò)長(zhǎng),最終導(dǎo)致用戶(hù)體驗(yàn)滿(mǎn)意度較差的問(wèn)題。 為解決上述技術(shù)問(wèn)題,本發(fā)明的技術(shù)方案如下 一種使用表格呈現(xiàn)數(shù)據(jù)的方法,其中,其包括以下步驟
A、 將若干個(gè)數(shù)據(jù)分別編碼生成若干條對(duì)應(yīng)的數(shù)據(jù)記錄,所述若干個(gè)數(shù) 據(jù)記錄存儲(chǔ)構(gòu)成一個(gè)數(shù)據(jù)文件;
B、 提供一個(gè)記錄定位信息集合,所述記錄定位集合包括若干個(gè)記錄定 位信息元,分別對(duì)應(yīng)存儲(chǔ)所迷若干個(gè)記錄lt據(jù)的索引;
C、 按照所述記錄定位信息,定位并解析需要呈現(xiàn)的數(shù)據(jù)記錄,并呈現(xiàn) 在表格中。所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其中,所述步驟A中,預(yù)先定義一 種數(shù)據(jù)存儲(chǔ)格式和一種編碼方式及其對(duì)應(yīng)的解碼方式,將若干個(gè)數(shù)據(jù)按照 所述定義的編碼方式分別編碼生成所迷若干條對(duì)應(yīng)的數(shù)據(jù)記錄,所述若干 個(gè)數(shù)據(jù)記錄按照所述數(shù)據(jù)存儲(chǔ)格式存儲(chǔ)構(gòu)成一個(gè)數(shù)據(jù)文件。
所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其中,步驟B中,每個(gè)記錄定位信 息元中的值為其對(duì)應(yīng)的數(shù)據(jù)記錄在所迷數(shù)據(jù)文件中的起始偏移位置。
所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其中,步驟C中,按順序逐個(gè)定位、 解析并呈現(xiàn)所述若干個(gè)需要呈現(xiàn)的數(shù)據(jù)記錄在表格中。
所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其中,以分頁(yè)的方式將所述需要呈 現(xiàn)的數(shù)據(jù)記錄呈現(xiàn)在表格中。
所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其中,步驟A之前,依次執(zhí)行步驟 Al和步驟Bl,
所述步驟A1為提供一個(gè)數(shù)據(jù)編碼線(xiàn)程和一個(gè)數(shù)據(jù)解碼線(xiàn)程,所述數(shù)據(jù) 編碼線(xiàn)程和數(shù)據(jù)解碼線(xiàn)程并行;
所述步驟B1為,所述數(shù)據(jù)編碼線(xiàn)程實(shí)時(shí)接收新的數(shù)據(jù)記錄并執(zhí)行所述 步驟A至步驟B,所述數(shù)據(jù)解碼線(xiàn)程確定需要呈現(xiàn)的數(shù)據(jù)記錄,并執(zhí)行步c。
所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其中,所述步驟C之前,執(zhí)行步驟 E3,所述步驟E3為,對(duì)所述記錄定位信息集合中若干個(gè)記錄定位信息進(jìn)行
排序;
所述步驟c中,按照所述排序后的記錄定位信息集合,依次定位并解
析需要呈現(xiàn)的數(shù)據(jù)記錄,并呈現(xiàn)在表格中。
所述的^f吏用表格呈現(xiàn)數(shù)據(jù)的方法,其中,所述步驟E3中,基于所述記 錄定位信息集合,通過(guò)解析每個(gè)數(shù)據(jù)記錄的指定關(guān)鍵字,構(gòu)成一個(gè)關(guān)鍵字 集合,并對(duì)關(guān)鍵字集合排序,根據(jù)該關(guān)鍵字排序?qū)λ鲇涗浂ㄎ恍畔⒓?中若干個(gè)記錄定位信息進(jìn)行排序。所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其中,步驟E3中,所述關(guān)鍵字集合 中每個(gè)元素包括其對(duì)應(yīng)數(shù)據(jù)記錄的索引和對(duì)應(yīng)關(guān)鍵字值,按對(duì)應(yīng)關(guān)鍵字值 進(jìn)行排序以對(duì)所述關(guān)鍵字集合排序。
所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其中,在步驟C之前,逐個(gè)定位解 析每個(gè)數(shù)據(jù)記錄的指定關(guān)鍵字,如果符合所述指定關(guān)鍵字提取規(guī)則則將其 對(duì)應(yīng)的數(shù)據(jù)記錄定位信息存入一個(gè)新的記錄信息集合中;步驟C中,按照 所述新的記錄定位信息,定位并解析需要呈現(xiàn)的數(shù)據(jù)記錄,并呈現(xiàn)在表格 中。
本發(fā)明提供的使用表格呈現(xiàn)數(shù)據(jù)的方法,創(chuàng)造性地提出了先對(duì)數(shù)據(jù)記 錄進(jìn)行編碼、提取定位信息構(gòu)成記錄定位信息集合的相關(guān)概念,并在此基 礎(chǔ)上實(shí)現(xiàn) 一 系列使用表格呈現(xiàn)大規(guī)模數(shù)據(jù)的方法。系統(tǒng)內(nèi)存占用主要消耗 在記錄定位信息集合上,由于其只保存記錄的定位信息,占用內(nèi)存與數(shù)據(jù) 記錄長(zhǎng)度無(wú)關(guān),只與數(shù)據(jù)記錄的存儲(chǔ)結(jié)構(gòu)以及數(shù)據(jù)記錄總數(shù)相關(guān),因而其. 僅占用較少的內(nèi)存空間。
在大規(guī)模數(shù)據(jù)呈現(xiàn)方面,雖然數(shù)據(jù)文件中包含大量的記錄,但是采用 分頁(yè)的方法,則每次只需要處理少量記錄,所以占用的系統(tǒng)資源少;同時(shí) 利用記錄定位信息集合,可快速定位解析,定位解析第一條記錄和定位解 析最后一條記錄(比如第一千萬(wàn)條)耗時(shí)相等,即可隨機(jī)查看任何一條記 錄,因而造成的時(shí)延也小。在大規(guī)模數(shù)據(jù)操作(排序、檢索等)方面,由 于可準(zhǔn)確定位數(shù)椐記錄以及目標(biāo)參數(shù),則可大大減少處理的數(shù)據(jù)量;無(wú)需 加載到表格而可直接在內(nèi)存進(jìn)行操作,因而同樣可節(jié)省系統(tǒng)開(kāi)銷(xiāo)和減少了 處理時(shí)間。因此本發(fā)明提供的使用表格呈現(xiàn)數(shù)據(jù)的方法,在呈現(xiàn)大規(guī)^t數(shù) 據(jù)時(shí),與現(xiàn)有技術(shù)相比,可獲得較低的數(shù)據(jù)處理延時(shí)、較低的系統(tǒng)開(kāi)銷(xiāo)等 良好性能。
圖1為本發(fā)明第一實(shí)施例提供的一種使用表格呈現(xiàn)數(shù)據(jù)的方法流程圖。
圖2為圖1中若干條編碼后生成的數(shù)據(jù)記錄組成的數(shù)據(jù)文件的示意圖3是圖2中每個(gè)數(shù)據(jù)記錄的結(jié)構(gòu)示意圖4為圖2中每個(gè)數(shù)據(jù)記錄中參數(shù)的結(jié)構(gòu)示意圖5為圖2中每個(gè)數(shù)據(jù)記錄的定位信息構(gòu)成的定位信息集合的示意圖6為本發(fā)明第二實(shí)施例提供的一種使用表格呈現(xiàn)數(shù)據(jù)方法的流程圖7為本發(fā)明第三實(shí)施例提供的一種使用表格呈現(xiàn)數(shù)據(jù)方法的流程圖8為圖7中關(guān)鍵字集合的結(jié)構(gòu)示意圖9為本發(fā)明第四實(shí)施例提供的一種使用表格呈現(xiàn)數(shù)據(jù)方法的流程圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。
請(qǐng)參閱圖1,為本發(fā)明實(shí)施例提供的一種使用表格呈現(xiàn)數(shù)據(jù)的方法流程圖。
所述使用表格呈現(xiàn)數(shù)據(jù)的方法包括以下步驟
A、將若干個(gè)數(shù)據(jù)分別編碼生成若干條對(duì)應(yīng)的數(shù)據(jù)記錄,所述若干個(gè)數(shù) 據(jù)記錄存儲(chǔ)構(gòu)成一個(gè)數(shù)據(jù)文件;
具體地,可預(yù)先定義一種數(shù)據(jù)存儲(chǔ)格式和一種編碼方式及其對(duì)應(yīng)的解 碼方式,將若干個(gè)數(shù)據(jù)按照所述定義的編碼方式分別編碼生成所述若干條 對(duì)應(yīng)的數(shù)據(jù)記錄,所述若干個(gè)數(shù)據(jù)記錄按照所述數(shù)據(jù)存儲(chǔ)格式存儲(chǔ)構(gòu)成一 個(gè)數(shù)據(jù)文件;
請(qǐng)參閱圖2為所述數(shù)據(jù)文件的示意圖;圖3為所述數(shù)據(jù)文件中每個(gè)數(shù) 據(jù)記錄的結(jié)構(gòu)示意每個(gè)數(shù)據(jù)記錄包含若干個(gè)屬性參數(shù)。具體地,每個(gè)數(shù)據(jù)記錄由其長(zhǎng)度、 其包含屬性參數(shù)個(gè)數(shù)以及每個(gè)屬性參數(shù)的偏移及其取值列表組成。
優(yōu)選地,所述若干個(gè)編碼生成的數(shù)據(jù)記錄依次連續(xù)排列組成所述數(shù)據(jù)文件;
請(qǐng)繼續(xù)參閱圖4,為圖3中每個(gè)數(shù)據(jù)參數(shù)的結(jié)構(gòu)示意圖,每個(gè)數(shù)據(jù)參數(shù) 包括數(shù)據(jù)類(lèi)型(如數(shù)值型、字符型等)以及數(shù)據(jù)內(nèi)容。
實(shí)際中,將所述數(shù)據(jù)文件存儲(chǔ)在PC (個(gè)人計(jì)算機(jī))的硬盤(pán)中??梢岳?解,在訪(fǎng)問(wèn)并查詢(xún)數(shù)據(jù)庫(kù)操作中,可將查詢(xún)結(jié)果即若干個(gè)數(shù)據(jù)按照所述編 碼方式編碼生成若干個(gè)數(shù)據(jù)記錄并依次寫(xiě)入到所述數(shù)據(jù)文件中。
B、提供一個(gè)記錄定位信息集合,所述記錄定位集合包括若干個(gè)記錄 定位信息元,分別對(duì)應(yīng)存儲(chǔ)所述若干個(gè)記錄數(shù)據(jù)的索引;
優(yōu)選的,請(qǐng)參閱圖5,為所述記錄定位信息集合的結(jié)構(gòu)示意圖,其中分 別為所述若干個(gè)數(shù)據(jù)記錄的索引;所述記錄定位信息集合包括若干記錄定 位信息元,其分別為0, 1, 2......, N......,分別為所述若干個(gè)數(shù)據(jù)記錄的索引。
優(yōu)選地,每個(gè)記錄定位信息元中的值為其對(duì)應(yīng)的數(shù)據(jù)記錄在所述數(shù)據(jù) 文件中的起始偏移位置,可以理解,每個(gè)記錄定位信息元都可用一個(gè)long 類(lèi)型的數(shù)據(jù)來(lái)表示,可適于JAVA編程。在JAVA編程中,每個(gè)記錄定位 信息元采用long類(lèi)型的信息占用8個(gè)字節(jié)。那么,在實(shí)際中,當(dāng)所述若干 個(gè)數(shù)據(jù)記錄為一千萬(wàn)個(gè)數(shù)據(jù)記錄時(shí),則所述記錄定位信息集合中,所述若 干個(gè)記錄定位信息元占用80M的空間,即僅占用很少的系統(tǒng)資源,在實(shí)際 中, 一般的PC機(jī)可以滿(mǎn)足所述若干個(gè)記錄定位信息元。
所述記錄定位信息集合由解析所述數(shù)據(jù)文件獲得。具體地,通過(guò)步驟 21即定位數(shù)據(jù)文件中第一條記錄的起始位置以讀取所述數(shù)據(jù)文件;執(zhí)行步 驟22,即獲得所述數(shù)據(jù)文件中每個(gè)數(shù)據(jù)記錄的索引,并將其分別對(duì)應(yīng)寫(xiě)至 記錄定位信息集合的若干個(gè)記錄定位信息元中。
優(yōu)選地,所述每個(gè)數(shù)據(jù)記錄的索引為其對(duì)應(yīng)的數(shù)據(jù)記錄在所述數(shù)據(jù)文 件中的起始偏移位置。
優(yōu)選地,所述步驟22中,依次定位至每個(gè)數(shù)據(jù)記錄的起始位置以獲得每個(gè)數(shù)據(jù)記錄的索引;所述步驟22中,可估算記錄的平均長(zhǎng)度;優(yōu)選的,所述寫(xiě)有每個(gè)數(shù)據(jù)記錄索引的記錄定位信息集合存至數(shù)據(jù)文件中,便于再次使用表格呈現(xiàn)數(shù)據(jù)時(shí)使用,以獲得更低的時(shí)延性能。C、按照所述記錄定位信息,定位并解析需要呈現(xiàn)的數(shù)據(jù)記錄,并呈現(xiàn)在表格中。具體地,預(yù)先確定當(dāng)前需要呈現(xiàn)的若干個(gè)數(shù)據(jù)記錄,按照所述記錄定 位信息,定位并解析所述需要呈現(xiàn)的數(shù)據(jù)記錄,并將解析結(jié)果呈現(xiàn)在表格 中。優(yōu)選地,以分頁(yè)的方式呈現(xiàn)所述若干個(gè)數(shù)據(jù),并確定需要呈現(xiàn)的屬性?xún)?yōu)選地,按順序逐個(gè)定位、解析并呈現(xiàn)所述若干個(gè)需要呈現(xiàn)的數(shù)據(jù)記 錄在表格中。具體地,依次執(zhí)行步驟41、步驟42、步驟43和步驟44: 步驟41、提取第一個(gè)需要呈現(xiàn)的數(shù)據(jù)記錄索引; 具體地,從所述記錄定位信息集合中提取所述第一個(gè)需要呈現(xiàn)的數(shù)據(jù) 記錄索引;步驟42、按照所述提取的數(shù)據(jù)記錄索引定位對(duì)應(yīng)的數(shù)據(jù)記錄并解析其 上每個(gè)Wt以構(gòu)成其對(duì)應(yīng)數(shù)據(jù)并將所述對(duì)應(yīng)數(shù)據(jù)呈現(xiàn)在表格中;步驟43、判斷是否需要提取下一個(gè)數(shù)據(jù)記錄索引,如果是則返回執(zhí)行 步驟42,如果不是則結(jié)束。優(yōu)選的,采用分頁(yè)的方式在表格中呈現(xiàn)所述若干個(gè)數(shù)據(jù)記錄,可限制 每頁(yè)呈現(xiàn)上限為1000個(gè)數(shù)據(jù)記錄,假設(shè)每個(gè)數(shù)據(jù)記錄占用4K,則總共占 用4M空間,僅占用極少的系統(tǒng)資源;可以理解,采用本發(fā)明實(shí)施例提供的一種使用表格呈現(xiàn)若干個(gè)數(shù)據(jù)的 方法,圖形用戶(hù)界面在處理所述若千個(gè)數(shù)據(jù)時(shí),所占用的系統(tǒng)內(nèi)存資源可 用以下表達(dá)式來(lái)計(jì)算占用系統(tǒng)內(nèi)存資源總量=每個(gè)數(shù)據(jù)記錄的索引(記錄定位信息集合中每個(gè)記錄定位信息元)占 用的內(nèi)存空間x數(shù)據(jù)記錄的總數(shù)①
+每條數(shù)據(jù)記錄占用的平均內(nèi)存空間x當(dāng)前頁(yè)中的數(shù)據(jù)記錄總數(shù)②
定義第 一項(xiàng)內(nèi)存占用資源為每個(gè)數(shù)據(jù)記錄的索引(記錄定位信息集合
中每個(gè)記錄定位信息元)占用的內(nèi)存空間x數(shù)據(jù)記錄的總數(shù);第二項(xiàng)為 每條數(shù)據(jù)記錄占用的平均內(nèi)存空間x當(dāng)前頁(yè)中的數(shù)據(jù)記錄總數(shù)。
4艮明顯,數(shù)據(jù)記錄總數(shù)確定,則第一項(xiàng)為一固定值,而第二項(xiàng)可由分 頁(yè)中的記錄數(shù)量來(lái)控制??梢岳斫猓筛鶕?jù)靜態(tài)配置或當(dāng)前動(dòng)態(tài)配置的可 使用內(nèi)存空間,減去第一項(xiàng)固有占用空間,剩余的空間在預(yù)估平均每條記 錄占用空間的J^出上計(jì)算出最大表格呈現(xiàn)的記錄數(shù)量,作為分頁(yè)中可呈現(xiàn) 記錄的上限并確定分頁(yè)的數(shù)量。
圖形用戶(hù)界面在處理所述若干個(gè)數(shù)據(jù)時(shí),時(shí)延可以用下面的表達(dá)式來(lái) 計(jì)算
處理時(shí)延=
分析一條記錄的定位信息的耗時(shí)x記錄的總數(shù) +解析和呈現(xiàn)一條記錄的平均耗時(shí)x當(dāng)前分頁(yè)中的記錄總數(shù)⑦
當(dāng)數(shù)據(jù)記錄總數(shù)確定后,第六項(xiàng)耗時(shí)提取一個(gè)數(shù)據(jù)記錄索引(記錄定
位信息)的耗時(shí)x數(shù)據(jù)記錄總數(shù),所述第六項(xiàng)耗時(shí)發(fā)生在從硬盤(pán)讀取內(nèi)容
至內(nèi)存的過(guò)程,而與CPU的性能無(wú)關(guān)。在普通PC機(jī)上分析一千萬(wàn)個(gè)數(shù)據(jù) 記錄的記錄定位信息耗時(shí)約IO分鐘,即占用CPU資源少且處理時(shí)延小,
是用戶(hù)完全可以接受的。
優(yōu)選的,采用JAVA的類(lèi)Random Access File,利用定位信息數(shù)據(jù), 可實(shí)現(xiàn)快速定位并解析記錄。結(jié)合分頁(yè)呈現(xiàn)的方法,可達(dá)到查看第一頁(yè)與 查看最后一頁(yè)的耗時(shí)相等,故第七項(xiàng)耗時(shí)(解析和呈現(xiàn)一個(gè)數(shù)據(jù)記錄的平 均耗時(shí)x當(dāng)前頁(yè)中的數(shù)據(jù)記錄總數(shù))可忽略不計(jì),即可獲得低時(shí)延性能。 本發(fā)明第一實(shí)施例提供的一種使用表格呈現(xiàn)數(shù)據(jù)方法,采用 一個(gè)記錄定位信息集合,其占用系統(tǒng)資源小。 一般來(lái)說(shuō),用戶(hù)期望使用表格來(lái)觀察 大批量的數(shù)據(jù), 一次能夠關(guān)注的數(shù)據(jù)卻是有限的,因?yàn)楸砀竦目梢暡糠质?有限的。因此本發(fā)明第一實(shí)施例在使用表格呈現(xiàn)大規(guī)模數(shù)據(jù)的時(shí)候,在提 取記錄定位信息集合的基礎(chǔ)上,讀取并解析部分?jǐn)?shù)據(jù)記錄,然后再用表格 呈現(xiàn)出來(lái)。通過(guò)提取記錄定位信息最終實(shí)現(xiàn)對(duì)大規(guī)模數(shù)據(jù)處理,使得使用 表格處理并呈現(xiàn)大規(guī)模數(shù)據(jù)具有低延時(shí)、低系統(tǒng)開(kāi)銷(xiāo)等良好性能。下面結(jié)合圖6,詳細(xì)說(shuō)明本發(fā)明第二實(shí)施例提供的一種使用表格呈現(xiàn)數(shù) 據(jù)的方法,其與本發(fā)明第一實(shí)施例的不同點(diǎn)在于, 具體包含以下步驟Al、提供一個(gè)數(shù)據(jù)編碼線(xiàn)程和一個(gè)數(shù)據(jù)解碼線(xiàn)程,所述數(shù)據(jù)編碼線(xiàn)程 和數(shù)據(jù)解碼線(xiàn)程并行;Bl、所述數(shù)據(jù)編碼線(xiàn)程和數(shù)據(jù)解碼線(xiàn)程分別執(zhí)行步驟Cl和步驟Dl; 所述步驟Cl為,實(shí)時(shí)將接收到的數(shù)據(jù)記錄編碼并寫(xiě)入所述數(shù)據(jù)文件中》所述步驟D1為,確定需要呈現(xiàn)的數(shù)據(jù)記錄,根據(jù)所述記錄定位信息集 合,解析出對(duì)應(yīng)數(shù)據(jù)并呈現(xiàn)在表格中。優(yōu)選地,所述步驟Cl中,打開(kāi)接收數(shù)據(jù)記錄端口以接收所述數(shù)據(jù)記錄; 所述數(shù)據(jù)記錄按照所述定義的編碼方式編碼。優(yōu)選地,所述步驟C1中,對(duì)所述編碼后的數(shù)據(jù)記錄進(jìn)行分析以獲得其 索引值、長(zhǎng)度等信息,將其索引值對(duì)應(yīng)寫(xiě)入所述記錄定位信息集合中的對(duì) 應(yīng)記錄定位信息元中,長(zhǎng)度信息可用來(lái)估算數(shù)據(jù)記錄的平均長(zhǎng)度??梢岳斫猓霾襟ED1中,按順序逐個(gè)定位、解析并呈現(xiàn)所述若干個(gè) 需要呈現(xiàn)的數(shù)據(jù)記錄在表格中。具體地,依次執(zhí)行步驟31、步驟32、步驟 33和步驟34:步驟31、提取第一個(gè)需要呈現(xiàn)的數(shù)據(jù)記錄索引;具體地,從所述記錄定位信息集合中提取所述第一個(gè)需要呈現(xiàn)的數(shù)據(jù)記錄索引;
步驟32、按照所述提取的數(shù)據(jù)記錄索引定位對(duì)應(yīng)的數(shù)據(jù)記錄并解析其 上每個(gè)參數(shù)以構(gòu)成其對(duì)應(yīng)數(shù)據(jù)并將所述對(duì)應(yīng)數(shù)據(jù)呈現(xiàn)在表格中;
步驟33、判斷是否需要提取下一個(gè)數(shù)據(jù)記錄索引,如果是則返回執(zhí)行 步驟32,如果不是則結(jié)束。
優(yōu)選的,可預(yù)先給所述第一項(xiàng)內(nèi)存占用資源設(shè)定一個(gè)上限域值,當(dāng)其 達(dá)到所述上限域值時(shí),停止接收新的數(shù)據(jù)記錄。
本發(fā)明第二實(shí)施例提供的使用表格呈現(xiàn)數(shù)據(jù)的方法,在呈現(xiàn)數(shù)據(jù)于表 格中的同時(shí),實(shí)現(xiàn)寫(xiě)數(shù)據(jù)記錄至所述數(shù)據(jù)文件中,可實(shí)現(xiàn)^f吏用表格呈現(xiàn)大 規(guī)模動(dòng)態(tài)數(shù)據(jù),同樣具有本發(fā)明第一實(shí)施例的發(fā)明效果且兼具實(shí)現(xiàn)對(duì)靜態(tài) 數(shù)據(jù)文件以及動(dòng)態(tài)數(shù)據(jù)文件的表格呈現(xiàn)功能。
請(qǐng)參閱圖7,為本發(fā)明第三實(shí)施例提供的使用表格呈現(xiàn)數(shù)據(jù)的方法,其 與本發(fā)明第一實(shí)施例的不同點(diǎn)在于,本發(fā)明第三實(shí)施例的使用表格呈現(xiàn)數(shù) 據(jù)的方法中,在步驟C3 (按照所迷記錄定位信息,定位并解析需要呈現(xiàn)的 數(shù)據(jù)記錄,并呈現(xiàn)在表格中)之前,對(duì)所述記錄定位信息集合中若干個(gè)數(shù) 據(jù)記錄對(duì)應(yīng)的記錄定位信息進(jìn)^f于排序。
本發(fā)明第三實(shí)施例的使用表格呈現(xiàn)數(shù)據(jù)的方法,包括以下步驟
A3、將若干個(gè)數(shù)據(jù)分別編碼生成若干條對(duì)應(yīng)的數(shù)據(jù)記錄,所述若干個(gè) 數(shù)據(jù)記錄存儲(chǔ)構(gòu)成一個(gè)數(shù)據(jù)文件;
B3、提供一個(gè)記錄定位信息集合,所述記錄定位集合包括若干個(gè)記錄 定位信息元,分別對(duì)應(yīng)存儲(chǔ)所述若干個(gè)記錄數(shù)據(jù)的索引;
E3、對(duì)所述記錄定位信息集合中若干個(gè)記錄定位信息進(jìn)行排序。
C3、按照所述排序后的記錄定位信息集合,依次定位并解析需要呈現(xiàn) 的數(shù)據(jù)記錄,并呈現(xiàn)在表格中。
所述步驟E3中,基于已生成的記錄定位信息集合,通過(guò)解析每個(gè)數(shù)據(jù) 記錄的指定關(guān)鍵字,構(gòu)成一個(gè)關(guān)鍵字集合,并對(duì)關(guān)鍵字集合排序,根據(jù)該關(guān)鍵字排序?qū)λ鲇涗浂ㄎ恍畔⒓现腥舾蓚€(gè)記錄定位信息進(jìn)行順序調(diào) 整。
步驟C3中,按照排序后的記錄定位信息集合,依次定位并解析需要呈 現(xiàn)的數(shù)據(jù)記錄,并呈現(xiàn)在表格中。
圖8給出了所述關(guān)鍵字集合的結(jié)構(gòu)示意圖,基于所述記錄定位信息集 合,定位并解析每個(gè)數(shù)據(jù)記錄的指定關(guān)鍵字,若干指定關(guān)鍵字構(gòu)成一個(gè)關(guān) 鍵字集合。所述關(guān)鍵字集合中,每個(gè)元素包括對(duì)應(yīng)關(guān)鍵字對(duì)應(yīng)數(shù)據(jù)記錄的 索引(Index)和對(duì)應(yīng)關(guān)鍵字值(Value)。
對(duì)關(guān)鍵字集合按對(duì)應(yīng)關(guān)鍵字值(Value)進(jìn)行排序,可得到 一個(gè)按對(duì)應(yīng) 關(guān)鍵字值(Value)有序集合,進(jìn)而按照所述按對(duì)應(yīng)關(guān)鍵字值(Value)有序 集合中對(duì)應(yīng)關(guān)鍵字對(duì)應(yīng)數(shù)據(jù)記錄的索引(Index)的順序調(diào)整記錄定位信息 集合中記錄定位信息元順序。
本發(fā)明第三實(shí)施例提供的使用表格呈現(xiàn)數(shù)據(jù)方法,兼具對(duì)大規(guī)模數(shù)據(jù) 排序呈現(xiàn)的功能,其占用系統(tǒng)內(nèi)存資源總量=
每個(gè)數(shù)據(jù)記錄的索引(記錄定位信息集合中每個(gè)記錄定位信息元)占 用的內(nèi)存空間x數(shù)據(jù)記錄的總數(shù)①
+每條數(shù)據(jù)記錄占用的平均內(nèi)存空間x當(dāng)前頁(yè)中的數(shù)據(jù)記錄總數(shù)②
+每個(gè)關(guān)鍵字結(jié)構(gòu)平均占用空間x記錄條數(shù)③
處理時(shí)延=
分析一條記錄的定位信息的耗時(shí)x記錄的總數(shù) +解析和呈現(xiàn)一條記錄的平均耗時(shí)x當(dāng)前分頁(yè)中的記錄總數(shù)⑦ +解析關(guān)鍵字的平均耗時(shí)x記錄條數(shù) +排序時(shí)間
優(yōu)選地,可根據(jù)使用內(nèi)存大小、預(yù)估關(guān)鍵字平均長(zhǎng)度,確定關(guān)鍵字是 否按照分頁(yè)方法定位解析并存儲(chǔ),以定位解析所述若干數(shù)據(jù)記錄的關(guān)鍵字 并構(gòu)成所述關(guān)鍵字集合??梢岳斫?,若關(guān)鍵字集合占用空間較少,則無(wú)需對(duì)關(guān)鍵字分頁(yè),直接使用內(nèi)部排序方法,可獲得低時(shí)延性能??梢岳斫?, 若關(guān)鍵字占用的空間較大,再制定關(guān)鍵字分頁(yè)策略,將關(guān)鍵字集合分為若 干頁(yè),并將分頁(yè)保存到文件中,再使用外部排序的方法,比如多路歸并法, 進(jìn)行排序。也可獲得低時(shí)延性能。
可以理解,按照?qǐng)D8關(guān)鍵字集合結(jié)構(gòu),每個(gè)元素中 一個(gè)為索引(Index) 字段,其在JAVA中占用4個(gè)字節(jié);另一個(gè)是關(guān)鍵字的取值(Value)字段, 其占用若干個(gè)字節(jié)。如果關(guān)鍵字的取值字段占用IO個(gè)字節(jié),那么對(duì)于一千 萬(wàn)條數(shù)據(jù)記錄而言,所述第三項(xiàng)占用內(nèi)存資源(每個(gè)關(guān)鍵字結(jié)構(gòu)平均占用 空間x記錄條數(shù))僅占用140M的臨時(shí)空間,即僅占用很少的系統(tǒng)資源。 這樣的資源消耗, 一般的PC機(jī)完全能夠接受。
優(yōu)選的,采用JAVA的類(lèi)Random Access File,利用記錄定位信息集合, 可實(shí)現(xiàn)快速定位數(shù)據(jù)記錄和快速定位關(guān)鍵字。很明顯,第八項(xiàng)時(shí)延(解析 關(guān)鍵字的平均耗時(shí)x記錄條數(shù))將小于第六項(xiàng)時(shí)延,在普通PC機(jī)上,提 取一千萬(wàn)個(gè)數(shù)據(jù)記錄關(guān)鍵字的時(shí)延約為3分鐘,可獲得低時(shí)延性能。
請(qǐng)參閱圖9,為本發(fā)明第四實(shí)施例提供的使用表格呈現(xiàn)數(shù)據(jù)的方法,其 與本發(fā)明第一實(shí)施例的不同點(diǎn)在于,所述本發(fā)明第四實(shí)施例的使用表格呈 現(xiàn)數(shù)據(jù)的方法中,在步驟C4 (按照所述記錄定位信息,定位并解析需要呈 現(xiàn)的數(shù)據(jù)記錄,并呈現(xiàn)在表格中)中,定位解析每個(gè)數(shù)據(jù)記錄的指定關(guān)鍵 字,將符合指定關(guān)鍵字提取規(guī)則的數(shù)據(jù)記錄解析并呈現(xiàn)在表格中。
具體地,逐個(gè)定位解析每個(gè)數(shù)據(jù)記錄的指定關(guān)鍵字,如果符合所述指 定關(guān)鍵字提取規(guī)則,則將其對(duì)應(yīng)的數(shù)據(jù)記錄定位信息存入一個(gè)新的記錄信 息集合中,步驟C4中,按照所述新的記錄定位信息,定位并解析需要呈現(xiàn) 的數(shù)據(jù)記錄,并呈現(xiàn)在表格中。
通過(guò)上述詳細(xì)的步驟,可實(shí)現(xiàn)使用表格對(duì)大規(guī)模數(shù)據(jù)按關(guān)鍵字檢索, 由于檢索操作會(huì)生成一個(gè)新的記錄定位信息集合,則
占用系統(tǒng)內(nèi)存資源總量=每個(gè)數(shù)據(jù)記錄的索引(記錄定位信息集合中每個(gè)記錄定位信息元)占 用的內(nèi)存空間x數(shù)據(jù)記錄的總數(shù)①
+每條數(shù)據(jù)記錄占用的平均內(nèi)存空間x當(dāng)前頁(yè)中的數(shù)據(jù)記錄總數(shù)② +每條記錄的記錄定位信息占用的空間x命中記錄總數(shù)③
處理時(shí)延-
分析一條記錄的定位信息的耗時(shí)x記錄的總數(shù) +解析和呈現(xiàn)一條記錄的平均耗時(shí)x當(dāng)前分頁(yè)中的記錄總數(shù)⑦
+解析關(guān)鍵字的平均耗時(shí)x記錄條數(shù)⑧
本發(fā)明第四實(shí)施例提供的使用表格處理數(shù)據(jù)的方法,如果一千萬(wàn)個(gè)數(shù)
據(jù)記錄的關(guān)鍵字均符合所述指定關(guān)鍵字提取規(guī)則,僅需再增加80M內(nèi)存的 使用量。在普通PC機(jī)上檢索一千萬(wàn)條記錄第八項(xiàng)時(shí)延約為3分鐘,同時(shí)獲 得低數(shù)據(jù)處理延時(shí)、低系統(tǒng)開(kāi)銷(xiāo)等良好性能。
以上說(shuō)明書(shū)中的具體實(shí)施部分,僅是本發(fā)明的較佳實(shí)施例而已,并非 對(duì)本發(fā)明作任何形式上的限制,雖然本發(fā)明已以較佳實(shí)施例揭露如上,然 而并非用以限定本發(fā)明,任何熟悉本專(zhuān)業(yè)的技術(shù)人員,在不脫離本發(fā)明技 術(shù)方案范圍內(nèi),當(dāng)可利用上述揭示的方法及技術(shù)內(nèi)容做出些許的更動(dòng)或修 飾為等同變化的等效實(shí)施例,但是凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依 據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所作的任何簡(jiǎn)單修改、等同變化與修飾, 均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。
權(quán)利要求
1、一種使用表格呈現(xiàn)數(shù)據(jù)的方法,其特征在于,其包括以下步驟A、將若干個(gè)數(shù)據(jù)分別編碼生成若干條對(duì)應(yīng)的數(shù)據(jù)記錄;B、提供一個(gè)記錄定位信息集合,所述記錄定位集合包括若干個(gè)記錄定位信息元,分別對(duì)應(yīng)存儲(chǔ)所述若干個(gè)記錄數(shù)據(jù)的索引;C、按照所述記錄定位信息,定位并解析需要呈現(xiàn)的數(shù)據(jù)記錄,并呈現(xiàn)在表格中。
2、 如權(quán)利要求1所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其特征在于,所述 步驟A中,預(yù)先定義一種數(shù)據(jù)存儲(chǔ)格式和一種編碼方式及其對(duì)應(yīng)的解碼方 式,將若干個(gè)數(shù)據(jù)按照所述定義的編碼方式分別編碼生成所述若干條對(duì)應(yīng) 的數(shù)據(jù)記錄,所述若干個(gè)數(shù)據(jù)記錄按照所述數(shù)據(jù)存儲(chǔ)格式存儲(chǔ)構(gòu)成一個(gè)數(shù) 據(jù)文件。
3、 如權(quán)利要求1所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其特征在于,步驟 B中,每個(gè)記錄定位信息元中的值為其對(duì)應(yīng)的數(shù)據(jù)記錄在所述數(shù)據(jù)文件中 的起始偏移位置。
4、 如權(quán)利要求1所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其特征在于,步驟 C中,按順序逐個(gè)定位、解析并呈現(xiàn)所述若干個(gè)需要呈現(xiàn)的數(shù)據(jù)記錄在表 格中。
5、 如權(quán)利要求1或者4所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其特征在于, 以分頁(yè)的方式將所述需要呈現(xiàn)的數(shù)據(jù)記錄呈現(xiàn)在表格中。
6、 如權(quán)利要求1所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其特征在于,步驟 A之前,依次執(zhí)4于步驟Al和步驟B1,所述步驟Al為提供一個(gè)數(shù)據(jù)編碼線(xiàn)程和一個(gè)數(shù)據(jù)解碼線(xiàn)程,所述數(shù)據(jù) 編碼線(xiàn)程和數(shù)據(jù)解碼線(xiàn)程并行;所述步驟B1為,所述數(shù)據(jù)編碼線(xiàn)程實(shí)時(shí)接收新的數(shù)據(jù)記錄并執(zhí)行所述 步驟A至步驟C,所述數(shù)據(jù)解碼線(xiàn)程確定需要呈現(xiàn)的數(shù)據(jù)記錄,并執(zhí)行步 驟C。
7、 如權(quán)利要求l所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其特征在于,所述 步驟C之前,執(zhí)行步驟E3,所述步驟E3為,對(duì)所述記錄定位信息集合中 若干個(gè)記錄定位信息進(jìn)行排序;所述步驟C中,按照所述排序后的記錄定位信息集合,依次定位并解 析需要呈現(xiàn)的數(shù)據(jù)記錄,并呈現(xiàn)在表格中。
8、 根據(jù)權(quán)利要求7所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其特征在于,所 述步驟E3中,基于所述記錄定位信息集合,通過(guò)解析每個(gè)數(shù)據(jù)記錄的指定 關(guān)鍵字,構(gòu)成一個(gè)關(guān)鍵字集合,并對(duì)關(guān)鍵字集合排序,根據(jù)該關(guān)鍵字排序 對(duì)所述記錄定位信息集合中若干個(gè)記錄定位信息進(jìn)行排序。
9、 根據(jù)權(quán)利要求8所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其特征在于,步 驟E3中,所述關(guān)鍵字集合中每個(gè)元素包括其對(duì)應(yīng)數(shù)據(jù)記錄的索引和對(duì)應(yīng)關(guān) 鍵字值,按對(duì)應(yīng)關(guān)鍵字值進(jìn)行排序以對(duì)所述關(guān)鍵字集合排序。
10、 根據(jù)權(quán)利要求1所述的使用表格呈現(xiàn)數(shù)據(jù)的方法,其特征在于, 在步驟C之前,逐個(gè)定位解析每個(gè)數(shù)據(jù)記錄的指定關(guān)鍵字,如果符合所述 指定關(guān)鍵字提取規(guī)則則將其對(duì)應(yīng)的數(shù)據(jù)記錄定位信息存入一個(gè)新的記錄信 息集合中;步驟C中,按照所述新的記錄定位信息,定位并解析需要呈現(xiàn) 的數(shù)據(jù)記錄,并呈現(xiàn)在表格中。
全文摘要
本發(fā)明公開(kāi)一種使用表格處理大規(guī)模數(shù)據(jù)的方法,其包括將若干個(gè)數(shù)據(jù)分別編碼生成若干條對(duì)應(yīng)的數(shù)據(jù)記錄;提供一個(gè)記錄定位信息集合,所述記錄定位集合包括若干個(gè)記錄定位信息元,分別對(duì)應(yīng)存儲(chǔ)所述若干個(gè)記錄數(shù)據(jù)的索引;按照所述記錄定位信息,定位并解析需要呈現(xiàn)的數(shù)據(jù)記錄,并呈現(xiàn)在表格中。本發(fā)明提供的使用表格處理大規(guī)模數(shù)據(jù)的方法,采用記錄定位信息集合,系統(tǒng)內(nèi)存占用主要消耗在記錄定位信息集合上,由于其只保存記錄的定位信息,占用內(nèi)存只與數(shù)據(jù)記錄的存儲(chǔ)結(jié)構(gòu)以及數(shù)據(jù)記錄總數(shù)相關(guān),因而其僅占用較少的內(nèi)存空間,對(duì)大規(guī)模數(shù)據(jù)處理方面,無(wú)需加載到表格而可直接在內(nèi)存進(jìn)行操作,因而同樣可節(jié)省系統(tǒng)開(kāi)銷(xiāo)和減少了處理時(shí)間。
文檔編號(hào)G06F17/30GK101295312SQ20081006800
公開(kāi)日2008年10月29日 申請(qǐng)日期2008年6月18日 優(yōu)先權(quán)日2008年6月18日
發(fā)明者于兆鈞, 吳春明, 暢 范, 文 駱 申請(qǐng)人:中興通訊股份有限公司