專利名稱:一種內(nèi)存數(shù)據(jù)集感知方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別涉及一種內(nèi)存數(shù)據(jù)集感知方法及裝置。
背景技術(shù):
內(nèi)存數(shù)據(jù)集(Dataset),—般采用二維的結(jié)構(gòu)化記錄(Record)來表示,類似數(shù)據(jù)庫(kù)表(Table),廣泛應(yīng)用在軟件開發(fā)領(lǐng)域中,并往往是業(yè)務(wù)邏輯表達(dá)的關(guān)鍵。如何提高海量數(shù)據(jù)訪問的性能,并能具有良好的可維護(hù)性,一直是開發(fā)人員追求的目標(biāo),以下是常見的數(shù)據(jù)集技術(shù)、特點(diǎn)及訪問性能結(jié)構(gòu)化數(shù)組,通常支持高級(jí)語言,例如C/C++,Delphi等,集成在開發(fā)工具中,數(shù)組下標(biāo)訪問數(shù)據(jù)性能好,但沒有方便可視化的展現(xiàn),靈活性低,并且編輯、交互GUI開發(fā)復(fù)雜,沒有重用性;內(nèi)存數(shù)據(jù)集控件,比如,ClientDataSet,KdmMemTable,AnyDAC,dxMemData 等,集成在開發(fā)工具中,傳統(tǒng)內(nèi)存數(shù)據(jù)控件方式開發(fā),結(jié)構(gòu)可定義,可做中間件,對(duì)于海量數(shù)據(jù)訪問性能不佳,即不能滿足極端場(chǎng)合大數(shù)據(jù)量的應(yīng)用(千萬級(jí)記錄數(shù));小型本地?cái)?shù)據(jù)庫(kù),比如,F(xiàn)oxPro, InterBase, Access等,非集成,需另外購(gòu)買和部署,增加用戶成本,且遷移成本和風(fēng)險(xiǎn)較高,不適合做三層中間件,訪問性能一般?;诖?,本發(fā)明的發(fā)明人發(fā)現(xiàn),現(xiàn)有的實(shí)現(xiàn)方式中,大多數(shù)數(shù)據(jù)集技術(shù)對(duì)海量數(shù)據(jù)訪問的感知性差,即使有對(duì)數(shù)據(jù)訪問性能好的數(shù)據(jù)集技術(shù),但其靈活性低,兼容性不好、且編輯、GUI開發(fā)復(fù)雜,沒有重用性,因此,現(xiàn)有技術(shù)中,如何提高對(duì)海量數(shù)據(jù)的訪問效率是目前有待解決的問題。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)集感知方法及裝置,以解決現(xiàn)有技術(shù)中對(duì)海量數(shù)據(jù)感知性差及訪問效率低的技術(shù)問題。為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)集感知方法,所述方法包括創(chuàng)建繼承數(shù)據(jù)集對(duì)象;根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串,并為所述數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存;判斷是否需要數(shù)據(jù)感知訪問,若是,則利用所述數(shù)據(jù)結(jié)構(gòu)描述串創(chuàng)建標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu);并將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián);在接收到所述數(shù)據(jù)感知控件發(fā)送的訪問操作命令時(shí),利用所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。優(yōu)選的,所述方法還包括若判斷不需要數(shù)據(jù)感知訪問時(shí),則繼續(xù)判斷是否需要直接數(shù)據(jù)訪問,若是,則利用所述數(shù)據(jù)結(jié)構(gòu)描述串獲取存儲(chǔ)繼承數(shù)據(jù)集對(duì)象的內(nèi)存的地址;根據(jù)所述地址直接對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。優(yōu)選的,所述將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián)具體包括將繼承數(shù)據(jù)集對(duì)象與原數(shù)據(jù)集關(guān)聯(lián);將任意數(shù)據(jù)感知控件與原數(shù)據(jù)集關(guān)聯(lián)。優(yōu)選的,所述方法還包括判斷是否結(jié)束數(shù)據(jù)訪問,若是,則結(jié)束數(shù)據(jù)訪問,并釋放繼承數(shù)據(jù)集對(duì)象;否則,執(zhí)行所述判斷是否需要數(shù)據(jù)感知訪問的步驟。本發(fā)明還提供一種內(nèi)存數(shù)據(jù)集感知方法,所述包括 創(chuàng)建繼承數(shù)據(jù)集對(duì)象;根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串,并為該數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存;判斷是否需要直接數(shù)據(jù)訪問,若是,則利用所述數(shù)據(jù)結(jié)構(gòu)描述串獲取存儲(chǔ)繼承數(shù)據(jù)集對(duì)象的內(nèi)存的地址;根據(jù)所述地址直接對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。優(yōu)選的,所述方法還包括若判斷不需直接數(shù)據(jù)訪問,則繼續(xù)判斷是否需要數(shù)據(jù)感知訪問,若是,則利用所述數(shù)據(jù)結(jié)構(gòu)描述串創(chuàng)建標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu);并將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián);在接收到所述數(shù)據(jù)感知控件發(fā)送的訪問操作命令時(shí),利用所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。優(yōu)選的,所述將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián)具體包括將繼承數(shù)據(jù)集對(duì)象與原數(shù)據(jù)集關(guān)聯(lián);將任意數(shù)據(jù)感知控件與原數(shù)據(jù)集關(guān)聯(lián)。優(yōu)選的,所述方法還包括 判斷是否結(jié)束數(shù)據(jù)訪問,若是,則結(jié)束數(shù)據(jù)訪問,并釋放繼承數(shù)據(jù)集對(duì)象;否則,執(zhí)行所述判斷是否需要直接數(shù)據(jù)訪問的步驟。相應(yīng)的,本發(fā)明還提供一種內(nèi)存數(shù)據(jù)集感知裝置,所述裝置包括第一創(chuàng)建單元,用于創(chuàng)建繼承數(shù)據(jù)集對(duì)象;生成單元,用于根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串;分配單元,用于為所述數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存;第一判斷單元,用于判斷是否需要數(shù)據(jù)感知訪問,并發(fā)送判斷結(jié)果;第二創(chuàng)建單元,用于在第一判斷單元的判斷結(jié)果為需要數(shù)據(jù)感知訪問是,利用所述數(shù)據(jù)結(jié)構(gòu)描述串創(chuàng)建標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu);關(guān)聯(lián)單元,用于將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián);第一操作單元,用于在接收到所述數(shù)據(jù)感知控件發(fā)送的訪問操作命令時(shí),利用所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。優(yōu)選的,所述裝置還包括第二判斷單元,用于在接收到判斷單元的判斷結(jié)果為不需要數(shù)據(jù)感知訪問時(shí),則繼續(xù)判斷是否需要直接數(shù)據(jù)訪問,并發(fā)送判斷結(jié)果;獲取單元,用于在接收到第二判斷單元的判斷結(jié)果為需要直接數(shù)據(jù)訪問時(shí),利用所述數(shù)據(jù)結(jié)構(gòu)描述串獲取存儲(chǔ)繼承數(shù)據(jù)集對(duì)象的內(nèi)存的地址;第二操作單元,根據(jù)所述地址直接對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。優(yōu)選的,所述裝置還包括第三判斷單元,用于判斷是否結(jié)束數(shù)據(jù)訪問,并發(fā)送判斷結(jié)果;釋放單元,用于在接收到所述第三判斷單元的判斷結(jié)果為結(jié)束數(shù)據(jù)訪問時(shí),釋放訪問的繼承數(shù)據(jù)集對(duì)象;所述第一判斷單元,還用于在接收到所述第三判斷單元的判斷結(jié)果為不結(jié)束數(shù)據(jù)訪問時(shí),繼續(xù)判斷是否需要數(shù)據(jù)感知訪問。本發(fā)明還提供一種內(nèi)存數(shù)據(jù)集感知裝置,所述裝置包括
第一創(chuàng)建單元,用于創(chuàng)建繼承數(shù)據(jù)集對(duì)象;生成單元,用于根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串;分配單元,用于為所述數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存;第一判斷單元,用于判斷是否需要直接數(shù)據(jù)訪問,并發(fā)送判斷結(jié)果;獲取單元,用于在接收到第一判斷單元的判斷結(jié)果為需要直接數(shù)據(jù)訪問時(shí),利用所述數(shù)據(jù)結(jié)構(gòu)描述串獲取存儲(chǔ)繼承數(shù)據(jù)集對(duì)象的內(nèi)存的地址;操作單元,用于根據(jù)所述地址直接對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。優(yōu)選的,所述裝置還包括第二判斷單元,用于在第一判斷單元的判斷結(jié)果為不需直接數(shù)據(jù)訪問時(shí),繼續(xù)判斷是否需要數(shù)據(jù)感知訪問,并發(fā)送判斷結(jié)果;第二創(chuàng)建單元,用于在接收到第二判斷單元的判斷結(jié)果為需要數(shù)據(jù)感知訪問時(shí),利用所述數(shù)據(jù)結(jié)構(gòu)描述串創(chuàng)建標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu);關(guān)聯(lián)單元,用于將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián);操作單元,用于在接收到所述數(shù)據(jù)感知控件發(fā)送的訪問操作命令時(shí),利用所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。優(yōu)選的,所述裝置還包括第三判斷單元,用于判斷是否結(jié)束數(shù)據(jù)訪問,并發(fā)送判斷結(jié)果;釋放單元,用于在接收到第三判斷單元的判斷結(jié)果為結(jié)束數(shù)據(jù)訪問時(shí),釋放繼承數(shù)據(jù)集對(duì)象;所述第一判斷單元,還用于在接收到第三判斷單元的判斷結(jié)果為不結(jié)束數(shù)據(jù)訪問時(shí),繼續(xù)判斷是否需要直接數(shù)據(jù)訪問。本發(fā)明實(shí)施例創(chuàng)建了繼承數(shù)據(jù)集對(duì)象,并根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串,并為所述數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存,并利用所述數(shù)據(jù)結(jié)構(gòu)描述串創(chuàng)建標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)(即將生成數(shù)據(jù)結(jié)構(gòu)描述串映射為標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu)),通過標(biāo)準(zhǔn)數(shù)據(jù)集方法兼容所有數(shù)據(jù)感知類控件,以使原有數(shù)據(jù)感知類控件都能使用;進(jìn)一步,本發(fā)明又可以通過直接內(nèi)存訪問法提供了直接內(nèi)存地址操作數(shù)據(jù)的可能,即在數(shù)據(jù)訪問上支持?jǐn)?shù)據(jù)集方法和內(nèi)存數(shù)組直接訪問方法的2種方式,在面對(duì)海量數(shù)據(jù)時(shí)具有優(yōu)異的訪問性能。從而提高了訪問海量數(shù)據(jù)的效率。
圖I為本發(fā)明實(shí)施例提供的一種內(nèi)存數(shù)據(jù)集感知方法的流程圖;圖2為本發(fā)明實(shí)施例提供的另一種內(nèi)存數(shù)據(jù)集感知方法的流程圖;圖3為本發(fā)明實(shí)施例提供的一種內(nèi)存數(shù)據(jù)集感知方法的應(yīng)用實(shí)例;圖4為本發(fā)明實(shí)施例提供的一種內(nèi)存數(shù)據(jù)集感知裝置的結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例提供的另一種內(nèi)存數(shù)據(jù)集感知裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實(shí)施例的方案,下面結(jié)合附圖和實(shí)施方式對(duì)本發(fā)明實(shí)施例作進(jìn)一步的詳細(xì)說明。請(qǐng)參閱圖1,為本發(fā)明實(shí)施例提供的一種內(nèi)存數(shù)據(jù)集感知方法的流程圖;所述方法包括步驟101 :創(chuàng)建繼承數(shù)據(jù)集(BinDataSet)對(duì)象;步驟102 :根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串S,并為所述數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存M ;步驟103 :判斷是否需要數(shù)據(jù)感知訪問,若是,則利用所述數(shù)據(jù)結(jié)構(gòu)描述串S創(chuàng)建標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu);并將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián);其中,所述將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián)具體包括將繼承數(shù)據(jù)集對(duì)象與原數(shù)據(jù)集關(guān)聯(lián);將任意數(shù)據(jù)感知控件與原數(shù)據(jù)集關(guān)聯(lián)。比如,采用對(duì)象方式,用S創(chuàng)建數(shù)據(jù)集結(jié)構(gòu),并將對(duì)象與數(shù)據(jù)感知控件關(guān)聯(lián),DataSourcel. Dataset = BinDataSet ;// 將 BinDataSetl 與 TDataSourcel 關(guān)聯(lián);Controll. DataSource = Datasourcel ;// 任意感知控件與 DataSourcel 關(guān)聯(lián)。其中,本發(fā)明實(shí)施例中的數(shù)據(jù)感知控件可以是各種可視化控件、圖表、格子Grid、報(bào)表、數(shù)據(jù)遷移、數(shù)據(jù)庫(kù)交互等。步驟104 :在接收到所述數(shù)據(jù)感知控件發(fā)送的訪問操作命令時(shí),利用所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。相對(duì)應(yīng)的,數(shù)據(jù)感知控件會(huì)可以利用DataSource找到BinDataSetl ;并利用標(biāo)準(zhǔn)對(duì)象方法訪問數(shù)據(jù)。例如打開、關(guān)閉、增加、刪除、修改、查找或其他操作等。本實(shí)施例不作限制。優(yōu)選的,所述方法還可以包括若判斷不需要數(shù)據(jù)感知訪問時(shí),則繼續(xù)判斷是否需要直接數(shù)據(jù)訪問,若是,則利用所述數(shù)據(jù)結(jié)構(gòu)描述串S獲取存儲(chǔ)繼承數(shù)據(jù)集對(duì)象的內(nèi)存M的地址;根據(jù)所述地址直接對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。也就是說,如果需要提高數(shù)據(jù)內(nèi)存的訪問效率,可以直接使用數(shù)據(jù)直接訪問的方式。優(yōu)選的,在上述實(shí)施例的基礎(chǔ)上,所述方法還可以包括判斷是否結(jié)束數(shù)據(jù)訪問,若是,則結(jié)束數(shù)據(jù)訪問,并釋放繼承數(shù)據(jù)集對(duì)象;否則,執(zhí)行所述判斷是否需要數(shù)據(jù)感知訪問的步驟。也就是說,可以包括兩種判斷情況,一種判斷是否結(jié)束數(shù)據(jù)感知訪問;另一種是判斷是否結(jié)束直接數(shù)據(jù)訪問;也可以是包括任意一種判斷情況,本實(shí)施例不作限制。本發(fā)明實(shí)施例創(chuàng)建了繼承數(shù)據(jù)集對(duì)象,并根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串S,并為所述數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存M,并利用所述數(shù)據(jù)結(jié)構(gòu)描述串創(chuàng)建標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)(即將生成數(shù)據(jù)結(jié)構(gòu)描述串S映射為標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu)),通過標(biāo)準(zhǔn)數(shù)據(jù)集方法兼容所有數(shù)據(jù)感知類控件,以使原有數(shù)據(jù)感知類控件都能使用。進(jìn)一步,本發(fā)明又可以通過直接內(nèi)存訪問法提供了直接內(nèi)存地址操作數(shù)據(jù)的可能,即在數(shù)據(jù)訪問上支持?jǐn)?shù)據(jù)集方法和內(nèi)存數(shù)組直接訪問方法的2種方式,在面對(duì)海量數(shù)據(jù)時(shí)具有優(yōu)異的訪問性能。從而提高了訪問海量數(shù)據(jù)的效率。
還請(qǐng)參閱圖2,為本發(fā)明實(shí)施例提供的另一種內(nèi)存數(shù)據(jù)集感知方法的流程圖,所述方法包括步驟201 :創(chuàng)建繼承數(shù)據(jù)集對(duì)象;步驟202 :根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串S,并為該數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存M ;步驟203 :判斷是否需要直接數(shù)據(jù)訪問,若是,則利用所述數(shù)據(jù)結(jié)構(gòu)描述串S獲取存儲(chǔ)繼承數(shù)據(jù)集對(duì)象的內(nèi)存M的地址;步驟204 :根據(jù)所述地址直接對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。優(yōu)選的,所述方法還可以包括若判斷不需直接數(shù)據(jù)訪問,則繼續(xù)判斷是否需要數(shù)據(jù)感知訪問,若是,則利用所述數(shù)據(jù)結(jié)構(gòu)描述串S創(chuàng)建標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu);并將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián);在接收到所述數(shù)據(jù)感知控件發(fā)送的訪問操作命令時(shí),利用所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。其中,所述將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián)具體包括將繼承數(shù)據(jù)集對(duì)象與原數(shù)據(jù)集關(guān)聯(lián);將任意數(shù)據(jù)感知控件與原數(shù)據(jù)集關(guān)聯(lián)。優(yōu)選的,所述方法還可以包括判斷是否結(jié)束數(shù)據(jù)訪問,若是,則結(jié)束數(shù)據(jù)訪問,并釋放繼承數(shù)據(jù)集對(duì)象;否則,執(zhí)行所述判斷是否需要直接數(shù)據(jù)訪問的步驟。本發(fā)明實(shí)施例先創(chuàng)建繼承數(shù)據(jù)集對(duì)象,根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串S,并為該數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存M,當(dāng)用戶需要提高對(duì)海量數(shù)據(jù)的訪問效率時(shí),可以直接選擇直接數(shù)據(jù)訪問(即直接內(nèi)存訪問方法);進(jìn)一步,如果需要兼容所有的數(shù)據(jù)感知類控件(即數(shù)據(jù)感知控件),可以選擇數(shù)據(jù)感知訪問的方式,即通過標(biāo)準(zhǔn)數(shù)據(jù)集方法兼容所有數(shù)據(jù)感知類控件,以使原有數(shù)據(jù)感知類控件都能使用;即在數(shù)據(jù)訪問上支持?jǐn)?shù)據(jù)集方法和內(nèi)存數(shù)組直接訪問方法的2種方式,在面對(duì)海量數(shù)據(jù)時(shí)具有優(yōu)異的訪問性能。從而提高了訪問海量數(shù)據(jù)的效率。當(dāng)然,在本發(fā)明實(shí)施例中,可以根據(jù)需要直接選擇數(shù)據(jù)感知訪問或者直接數(shù)據(jù)訪問,比如,如果需要提高對(duì)數(shù)據(jù)的訪問消息,可以選擇直接數(shù)據(jù)訪問方式,如果需要兼容所有數(shù)據(jù)感知類控件,又要提高訪問效率,則可以選擇數(shù)據(jù)感知訪問的方式;也可以在使用數(shù)據(jù)感知訪問的方式訪問一段時(shí)間后,改為直接數(shù)據(jù)訪問的方式,反之也可以,本實(shí)施例不作限制。因此,本發(fā)明實(shí)施例可以根據(jù)需要,選擇不同的數(shù)據(jù)訪問方式,從而實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的訪問效率。下面以先選擇數(shù)據(jù)感知訪問的方式對(duì)數(shù)據(jù)進(jìn)行訪問,在選擇直接數(shù)據(jù)訪問的方式的對(duì)數(shù)據(jù)進(jìn)行訪問的過程為例。還請(qǐng)參閱圖3,為本發(fā)明實(shí)施例提供的一種內(nèi)存數(shù)據(jù)集感知方法的應(yīng)用實(shí)例,包括步驟301 :創(chuàng)建繼承數(shù)據(jù)集(BindataSet)對(duì)象;
首先,繼承標(biāo)準(zhǔn)對(duì)象的方法有很多,本發(fā)明實(shí)施例以下述為例I) 2個(gè)內(nèi)存分配方法function AllocRecordBuffer PChar ;override ;procedure FreeRecordBuffer(var Buffer PChar) ;override ;2) 4個(gè)書簽操作方法
procedure GetBookmarkData (Buffer PChar ;Data Pointer) ;override ;function GetBookmarkFlag(Buffer PChar) TBookmarkFlag ;override ;procedure SetBookmarkFlag (Buffer PChar ;Value TBookmarkFlag);override ;procedure SetBookmarkData (Buffer PChar ;Data -Pointer) ;override ;procedure InternalGotoBookmark(Bookmark Pointer) ;override ;3) 3個(gè)記錄訪問方法function GetRecord TGetResult ;override ;function GetRecordSize Word ;override ;procedure SetFieldData(FieldTField ;Buffer Pointer) ;override ;4)數(shù)據(jù)編輯與操作方法(9個(gè))procedure InternalOpen ;override ;procedure InternalClose ;override ;procedure InternalDelete ;override ;procedure InternalFirst ;override ;procedure InternalPost ;override ;procedure InternalHandleException ;override ;procedure InternalInitFieldDefs ;override ;procedure InternalInitRecord(Buffer PChar) ;override ;procedure InternalLast ;override ;本發(fā)明實(shí)施例在繼承以上這些標(biāo)準(zhǔn)數(shù)據(jù)集方法時(shí),并增加了自定義內(nèi)存的訪問(即直接數(shù)據(jù)訪問)方法,見下面介紹。步驟302 :根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串S,并為S分配數(shù)據(jù)內(nèi)存M ;步驟303 :判斷是否需要數(shù)據(jù)感知訪問,若是,執(zhí)行步驟304 ;否則,執(zhí)行步驟308 ;步驟304 :釆用數(shù)據(jù)集對(duì)象方式,用S創(chuàng)建數(shù)據(jù)集結(jié)構(gòu),并將繼承數(shù)據(jù)集對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián);其中,數(shù)據(jù)集對(duì)象方式訪問的方式比如,BDataSetl. Valuestr Num' ] = 123 ;(即用數(shù)據(jù)集對(duì)象的Values方法訪問)一種關(guān)聯(lián)方式為I. DataSourcel. Dataset = BinDataSet ;// 將 BinDataSetl 與 TDataSourcel 關(guān)聯(lián)2. Controll. DataSource = Datasourcel ;// 任意感知控件與 DataSourcel 關(guān)聯(lián)步驟305 :數(shù)據(jù)感知控件會(huì)利用數(shù)據(jù)源(DataSource)找到繼承數(shù)據(jù)集(BinDataSetl)對(duì)象,并利用標(biāo)準(zhǔn)對(duì)象方法訪問數(shù)據(jù),即通過標(biāo)準(zhǔn)數(shù)據(jù)集的標(biāo)準(zhǔn)接口對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行增加(Append)數(shù)據(jù)、刪除(Delete)數(shù)據(jù)、修改(Update)數(shù)據(jù)或查詢(Select)數(shù)據(jù);但并不限于此,還可以是打開、關(guān)閉等操作,本實(shí)施例不作限制。步驟306 :判斷是否需要選擇直接數(shù)據(jù)訪問,若是,執(zhí)行步驟307 ;如果選擇直接數(shù)據(jù)訪問方式,則可以提高速度;否則,執(zhí)行步驟309 ;其中,對(duì)該步驟中的直接數(shù)據(jù)訪問,需增加如下關(guān)鍵函數(shù)
權(quán)利要求
1.一種內(nèi)存數(shù)據(jù)集感知方法,其特征在于,包括 創(chuàng)建繼承數(shù)據(jù)集對(duì)象; 根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串,并為所述數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存;判斷是否需要數(shù)據(jù)感知訪問,若是,則利用所述數(shù)據(jù)結(jié)構(gòu)描述串創(chuàng)建標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu);并將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián); 在接收到所述數(shù)據(jù)感知控件發(fā)送的訪問操作命令時(shí),利用所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述方法還包括 若判斷不需要數(shù)據(jù)感知訪問時(shí),則繼續(xù)判斷是否需要直接數(shù)據(jù)訪問,若是,則利用所述數(shù)據(jù)結(jié)構(gòu)描述串獲取存儲(chǔ)繼承數(shù)據(jù)集對(duì)象的內(nèi)存的地址;根據(jù)所述地址直接對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。
3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián)具體包括 將繼承數(shù)據(jù)集對(duì)象與原數(shù)據(jù)集關(guān)聯(lián); 將任意數(shù)據(jù)感知控件與原數(shù)據(jù)集關(guān)聯(lián)。
4.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述方法還包括 判斷是否結(jié)束數(shù)據(jù)訪問,若是,則結(jié)束數(shù)據(jù)訪問,并釋放繼承數(shù)據(jù)集對(duì)象;否則,執(zhí)行所述判斷是否需要數(shù)據(jù)感知訪問的步驟。
5.一種內(nèi)存數(shù)據(jù)集感知方法,其特征在于,包括 創(chuàng)建繼承數(shù)據(jù)集對(duì)象; 根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串,并為該數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存;判斷是否需要直接數(shù)據(jù)訪問,若是,則利用所述數(shù)據(jù)結(jié)構(gòu)描述串獲取存儲(chǔ)繼承數(shù)據(jù)集對(duì)象的內(nèi)存的地址; 根據(jù)所述地址直接對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法還包括 若判斷不需直接數(shù)據(jù)訪問,則繼續(xù)判斷是否需要數(shù)據(jù)感知訪問,若是,則利用所述數(shù)據(jù)結(jié)構(gòu)描述串創(chuàng)建標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu);并將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián);在接收到所述數(shù)據(jù)感知控件發(fā)送的訪問操作命令時(shí),利用所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián)具體包括 將繼承數(shù)據(jù)集對(duì)象與原數(shù)據(jù)集關(guān)聯(lián); 將任意數(shù)據(jù)感知控件與原數(shù)據(jù)集關(guān)聯(lián)。
8.根據(jù)權(quán)利要求5或6所述的方法,其特征在于,所述方法還包括 判斷是否結(jié)束數(shù)據(jù)訪問,若是,則結(jié)束數(shù)據(jù)訪問,并釋放繼承數(shù)據(jù)集對(duì)象;否則,執(zhí)行所述判斷是否需要直接數(shù)據(jù)訪問的步驟。
9.一種內(nèi)存數(shù)據(jù)集感知裝置,其特征在于,包括 第一創(chuàng)建單元,用于創(chuàng)建繼承數(shù)據(jù)集對(duì)象; 生成單元,用于根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串;分配單元,用于為所述數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存; 第一判斷單元,用于判斷是否需要數(shù)據(jù)感知訪問,并發(fā)送判斷結(jié)果; 第二創(chuàng)建單元,用于在第一判斷單元的判斷結(jié)果為需要數(shù)據(jù)感知訪問是,利用所述數(shù)據(jù)結(jié)構(gòu)描述串創(chuàng)建標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu); 關(guān)聯(lián)單元,用于將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián); 第一操作單元,用于在接收到所述數(shù)據(jù)感知控件發(fā)送的訪問操作命令時(shí),利用所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,還包括 第二判斷單元,用于在接收到判斷單元的判斷結(jié)果為不需要數(shù)據(jù)感知訪問時(shí),則繼續(xù)判斷是否需要直接數(shù)據(jù)訪問,并發(fā)送判斷結(jié)果; 獲取單元,用于在接收到第二判斷單元的判斷結(jié)果為需要直接數(shù)據(jù)訪問時(shí),利用所述數(shù)據(jù)結(jié)構(gòu)描述串獲取存儲(chǔ)繼承數(shù)據(jù)集對(duì)象的內(nèi)存的地址; 第二操作單元,根據(jù)所述地址直接對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。
11.根據(jù)權(quán)利要求9或10所述的裝置,其特征在于,還包括 第三判斷單元,用于判斷是否結(jié)束數(shù)據(jù)訪問,并發(fā)送判斷結(jié)果; 釋放單元,用于在接收到所述第三判斷單元的判斷結(jié)果為結(jié)束數(shù)據(jù)訪問時(shí),釋放訪問的繼承數(shù)據(jù)集對(duì)象; 所述第一判斷單元,還用于在接收到所述第三判斷單元的判斷結(jié)果為不結(jié)束數(shù)據(jù)訪問時(shí),繼續(xù)判斷是否需要數(shù)據(jù)感知訪問。
12.—種內(nèi)存數(shù)據(jù)集感知裝置,其特征在于,包括 第一創(chuàng)建單元,用于創(chuàng)建繼承數(shù)據(jù)集對(duì)象; 生成單元,用于根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串; 分配單元,用于為所述數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存; 第一判斷單元,用于判斷是否需要直接數(shù)據(jù)訪問,并發(fā)送判斷結(jié)果; 獲取單元,用于在接收到第一判斷單元的判斷結(jié)果為需要直接數(shù)據(jù)訪問時(shí),利用所述數(shù)據(jù)結(jié)構(gòu)描述串獲取存儲(chǔ)繼承數(shù)據(jù)集對(duì)象的內(nèi)存的地址; 操作單元,用于根據(jù)所述地址直接對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,還包括 第二判斷單元,用于在第一判斷單元的判斷結(jié)果為不需直接數(shù)據(jù)訪問時(shí),繼續(xù)判斷是否需要數(shù)據(jù)感知訪問,并發(fā)送判斷結(jié)果; 第二創(chuàng)建單元,用于在接收到第二判斷單元的判斷結(jié)果為需要數(shù)據(jù)感知訪問時(shí),利用所述數(shù)據(jù)結(jié)構(gòu)描述串創(chuàng)建標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu); 關(guān)聯(lián)單元,用于將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián); 操作單元,用于在接收到所述數(shù)據(jù)感知控件發(fā)送的訪問操作命令時(shí),利用所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。
14.根據(jù)權(quán)利要求12或13所述的裝置,其特征在于,還包括 第三判斷單元,用于判斷是否結(jié)束數(shù)據(jù)訪問,并發(fā)送判斷結(jié)果; 釋放單元,用于在接收到第三判斷單元的判斷結(jié)果為結(jié)束數(shù)據(jù)訪問時(shí),釋放繼承數(shù)據(jù)集對(duì)象;所述第一判斷單元,還用于在接收到第三判斷單元的判斷結(jié)果為不結(jié)束數(shù)據(jù)訪問時(shí), 繼續(xù)判斷是否需要直接數(shù)據(jù)訪問。
全文摘要
本發(fā)明涉及一種內(nèi)存數(shù)據(jù)集感知方法及裝置,所述方法包括創(chuàng)建繼承數(shù)據(jù)集對(duì)象;根據(jù)所述繼承數(shù)據(jù)集對(duì)象生成數(shù)據(jù)結(jié)構(gòu)描述串,并為所述數(shù)據(jù)結(jié)構(gòu)描述串分配內(nèi)存;判斷是否需要數(shù)據(jù)感知訪問,若是,則利用所述數(shù)據(jù)結(jié)構(gòu)描述串創(chuàng)建標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu);并將所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象與數(shù)據(jù)感知控件相關(guān)聯(lián);在接收到所述數(shù)據(jù)感知控件發(fā)送的訪問操作命令時(shí),利用所述標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)對(duì)內(nèi)存中的繼承數(shù)據(jù)集對(duì)象進(jìn)行讀寫操作。本發(fā)明通過標(biāo)準(zhǔn)數(shù)據(jù)集方法兼容所有數(shù)據(jù)感知類控件,解決了現(xiàn)有技術(shù)中對(duì)海量數(shù)據(jù)感知性差及訪問效率低的技術(shù)問題,提高了訪問海量數(shù)據(jù)的效率。
文檔編號(hào)G06F17/30GK102722485SQ201110077018
公開日2012年10月10日 申請(qǐng)日期2011年3月29日 優(yōu)先權(quán)日2011年3月29日
發(fā)明者李文松 申請(qǐng)人:恒生電子股份有限公司