專利名稱:實現(xiàn)類內存數(shù)據(jù)庫存取和檢索的方法
技術領域:
本發(fā)明涉及一種存取和檢索的方法,具體地是針對類內存數(shù)據(jù)庫實現(xiàn)在低資源占用前提下的數(shù)據(jù)快速存取和檢索。
背景技術:
隨著目前計算機和網(wǎng)絡信息技術的迅猛發(fā)展,現(xiàn)有辦公和生活中已經越來越離不開對于計算機和網(wǎng)絡的使用。各種大量的信息和數(shù)據(jù)通過網(wǎng)絡或是單機運行,實現(xiàn)了數(shù)據(jù)共享和遠程傳輸。在對數(shù)據(jù)庫中的數(shù)據(jù)進行管理的同時,針對數(shù)據(jù)有效分類存取以及實施高級檢索的方法和軟件也相應地產生和得到應用。
目前得到較多應用的數(shù)據(jù)管理方法包括有層次、網(wǎng)狀和關系數(shù)據(jù)庫等方式,雖然可在一定程度上解決數(shù)據(jù)存取和檢索的問題,但是建立并應用這類商用數(shù)據(jù)庫仍存在著一定的缺陷。比如,數(shù)據(jù)庫建立和使用成本較高,對于小型數(shù)據(jù)管理單位來說就顯得過于昂貴;另外,現(xiàn)有如MS SQL、DBII和Oracle等數(shù)據(jù)庫都是基于針對硬盤或磁帶進行操作,在數(shù)據(jù)量較大時無法滿足實時響應、快速存取和檢索的要求?,F(xiàn)在也有采用內存數(shù)據(jù)庫建立數(shù)據(jù)存取和檢索的模式,雖然檢索速度較快,但也同時占用了較大的外存和內存資源空間,特別是對于嵌入式系統(tǒng)來說資源浪費嚴重。
如上所述,現(xiàn)有的各種數(shù)據(jù)庫存取和檢索方法,對于小型數(shù)據(jù)應用單位來說都存在明顯的缺點和不足,現(xiàn)在已公開技術中未有相應的解決方案。
發(fā)明內容
本發(fā)明所述的實現(xiàn)類內存數(shù)據(jù)庫存取和檢索的方法,旨在解決上述問題和不足而設計有應用于嵌入式系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)存取和檢索方法。
所述的實現(xiàn)類內存數(shù)據(jù)庫存取和檢索的方法,根據(jù)數(shù)據(jù)內容和類型、以及對于數(shù)據(jù)檢索的需要,首先建立相應數(shù)據(jù)節(jié)點的存儲表。所述的存儲表是基于Hash表類型的數(shù)據(jù)表結構,可以根據(jù)主鍵直接存取目標數(shù)據(jù)。
其次,根據(jù)上述存儲表建立相應的索引表,索引表是基于平衡二叉樹模型建立的、動態(tài)可排序的數(shù)據(jù)表結構。所述索引表的優(yōu)點是可以方便快速地根據(jù)需要對表中的數(shù)據(jù)進行排序。
最后,根據(jù)上述索引表建立一個索引表排序字段優(yōu)先存儲表,對指定在先的若干次查詢進行掃描和分析,對屬性查詢的優(yōu)先級進行排序,確定索引的排序規(guī)律,從而使數(shù)據(jù)的查詢更加有效率。而且,對于排序字段優(yōu)先存儲表的查詢次數(shù),可以通過應用所述實現(xiàn)類內存數(shù)據(jù)庫存取和檢索的方法,在對數(shù)據(jù)庫中的數(shù)據(jù)進行多次存取和檢索操作,根據(jù)每次實際操作的命中率進行動態(tài)調整。
如上所述,本發(fā)明所述的實現(xiàn)類內存數(shù)據(jù)庫存取和檢索的方法,數(shù)據(jù)的存儲是按照關系數(shù)據(jù)庫的第三范式進行的,可以有效的防止冗余和異常。而且與現(xiàn)有的內存數(shù)據(jù)庫檢索方法相比,可以即時更新統(tǒng)計查詢命中率,具有相當高的數(shù)據(jù)庫管理和安全性能,因此可以提高效率并降低內、外存資源占用。
圖1是所述的數(shù)據(jù)節(jié)點存儲表;圖2是所述的建立索引表的平衡二叉樹模型圖;圖3是所述的排序字段優(yōu)先存儲表;圖4是檢索若干條記錄后的最新命中率表;圖5是類內存數(shù)據(jù)庫的初始化流程圖;圖6是類內存數(shù)據(jù)庫的結束階段示意圖;圖7是所述的配置文件格式表;圖8是所述的類內存數(shù)據(jù)庫查詢和存取流程圖。
具體實施例方式
如圖1-圖8所示,本發(fā)明所述的實現(xiàn)類內存數(shù)據(jù)庫存取和檢索的方法,針對數(shù)據(jù)內容和類型建立相應數(shù)據(jù)節(jié)點的存儲表,以實現(xiàn)根據(jù)主鍵直接存取目標數(shù)據(jù)。根據(jù)存儲表建立相應的基于平衡二叉樹模型的索引表。根據(jù)上述索引表建立一個索引表排序字段優(yōu)先存儲表,對指定在先的若干次查詢進行掃描和分析,對屬性查詢的優(yōu)先級進行排序,確定索引的排序規(guī)律。
如圖1所示,所述的存儲表是基于Hash表類型結構建立的,通過主鍵(黑體字)可以一次定位數(shù)據(jù)的存儲位置,從而使用主鍵就可以實現(xiàn)快速的數(shù)據(jù)存取。
根據(jù)所述存儲表中的數(shù)據(jù)內容和類型,為有效避免數(shù)據(jù)庫整體出現(xiàn)冗余和異常,通常是按關系數(shù)據(jù)庫中的第三范式模式,建立相應的用于快速查詢和數(shù)據(jù)定位的查詢表。
如圖2所示,根據(jù)上述存儲表建立索引表的平衡二叉樹模型,實現(xiàn)每個節(jié)點只對應索引表的主鍵進行存儲,并且已經預先進行了最優(yōu)字段排序。因而可以保證索引命中時的查詢復雜度最小。
如圖3所示,索引表排序字段優(yōu)先存儲表中包括存儲表所有屬性的優(yōu)先級數(shù)據(jù),在表中的最后一行數(shù)據(jù)是其所在列上面m行數(shù)據(jù)的和。
如圖4所示,在分析上述索引表排序字段優(yōu)先存儲表中的m條查詢記錄后,將最新的命中率存入所示的命中率表中。
如圖5所示,所述類內存數(shù)據(jù)庫的初始化流程是讀取配置最新的m命中率表(如圖4);建立所述的索引表和平衡二叉樹模型(如圖2)、以及索引表排序字段優(yōu)先存儲表(如圖3);調用所述的類內存數(shù)據(jù)庫查詢和存取流程(如圖8)中的存儲函數(shù),建立數(shù)據(jù)庫中所有表格(如圖1),同時進一步完善所述的索引表(如圖2)。
如圖6所示,是所述的類內存數(shù)據(jù)庫結束階段示意圖。
如圖7所示,是所述的配置文件格式表。
如圖8所示,所述的類內存數(shù)據(jù)庫查詢和存取流程是需要分析m條查詢記錄,從上述圖4中選擇命中率最高的為m值,若命中率都相同,則隨機選擇;每次在接收到查詢指令后,首先將總查詢次數(shù)加1,然后確定涉及字段數(shù)為NO.值,則按照已有優(yōu)先級數(shù)據(jù)從大到小分別將本次權重(NO...1)分配到本次存儲范圍;在i<=m的時候,簡單將上次的優(yōu)先級數(shù)據(jù)和本次權重求和即可得到本次優(yōu)先級數(shù)據(jù);當i>m時清空本表數(shù)據(jù)并置I為0。
根據(jù)最優(yōu)字段進行索引表排序,與上一次相同則跳過這一步,并且在如圖3所示的排序字段優(yōu)先存儲表中的取值處加1;然后根據(jù)最優(yōu)字段(如果有的話)來進行首次篩選,從而最終獲得需要的數(shù)據(jù)節(jié)點關鍵字,最終逐條進行單記錄讀取(沒有關鍵字列表只能遍歷表的所有數(shù)據(jù))。在進行單記錄存取的時候,只要直接查如圖1所示的存儲表即可,可以保證在有限次的函數(shù)轉換之后即可得到確切位置,而不需要逐個進行檢查;在總查詢次數(shù)大于等于m的時候進行命中率計算,然后填入相應位置并置總查詢次數(shù)為0,然后從中選出命中率最高的進行下一次的m值(如果命中率表內有多于個位置同時為最大,則隨機挑選一個作為下一次的m值);重新建立如圖2所示的存儲表索引表;清空如圖3所示的索引表排序字段優(yōu)先存儲表;當停止服務時,將命中率表作為配置文件(如圖4)存儲到外存,作為下一次服務運行的初始值。
權利要求
1.一種實現(xiàn)類內存數(shù)據(jù)庫存取和檢索的方法,其特征在于針對數(shù)據(jù)內容和類型建立數(shù)據(jù)節(jié)點存儲表,根據(jù)存儲表建立相應的基于平衡二叉樹模型的索引表,根據(jù)索引表建立一個索引表排序字段優(yōu)先存儲表,實現(xiàn)對指定在先的若干次查詢進行掃描和分析,對屬性查詢的優(yōu)先級進行排序,確定索引的排序規(guī)律。
2.根據(jù)權利要求1所述的實現(xiàn)類內存數(shù)據(jù)庫存取和檢索的方法,其特征在于所述的存儲表是基于Hash表類型結構建立的,通過主鍵(黑體字)可以一次定位數(shù)據(jù)的存儲位置。
3.根據(jù)權利要求2所述的實現(xiàn)類內存數(shù)據(jù)庫存取和檢索的方法,其特征在于所述的存儲表是按關系數(shù)據(jù)庫中的第三范式模式,建立相應的用于快速查詢和數(shù)據(jù)定位的查詢表。
4.根據(jù)權利要求3所述的實現(xiàn)類內存數(shù)據(jù)庫存取和檢索的方法,其特征在于所述的類內存數(shù)據(jù)庫的初始化流程是,讀取配置最新的m命中率表;建立所述的索引表和平衡二叉樹模型、以及索引表排序字段優(yōu)先存儲表;調用所述的類內存數(shù)據(jù)庫查詢和存取流程中的存儲函數(shù),建立數(shù)據(jù)庫中所有表格,同時進一步完善所述的索引表。
5.根據(jù)權利要求3所述的實現(xiàn)類內存數(shù)據(jù)庫存取和檢索的方法,其特征在于所述的類內存數(shù)據(jù)庫查詢和存取流程是,需要分析m條查詢記錄,選擇命中率最高的為m值,若命中率都相同,則隨機選擇;每次在接收到查詢指令后,首先將總查詢次數(shù)加1,然后確定涉及字段數(shù)為N0.值,則按照已有優(yōu)先級數(shù)據(jù)從大到小分別將本次權重(N0......1)分配到本次存儲范圍;在i<=m的時候,簡單將上次的優(yōu)先級數(shù)據(jù)和本次權重求和即可得到本次優(yōu)先級數(shù)據(jù);當i>m時清空本表數(shù)據(jù)并置I為0;根據(jù)最優(yōu)字段進行索引表排序,與上一次相同則跳過這一步,并且在排序字段優(yōu)先存儲表中的取值處加1;然后根據(jù)最優(yōu)字段(如果有的話)來進行首次篩選,從而最終獲得需要的數(shù)據(jù)節(jié)點關鍵字,最終逐條進行單記錄讀取(沒有關鍵字列表只能遍歷表的所有數(shù)據(jù))。在進行單記錄存取的時候,只要直接存儲表即可,可以保證在有限次的函數(shù)轉換之后即可得到確切位置,而不需要逐個進行檢查;在總查詢次數(shù)大于等于m的時候進行命中率計算,然后填入相應位置并置總查詢次數(shù)為0,然后從中選出命中率最高的進行下一次的m值(如果命中率表內有多于個位置同時為最大,則隨機挑選一個作為下一次的m值);重新建立存儲表索引表;清空索引表排序字段優(yōu)先存儲表;當停止服務時,將命中率表作為配置文件存儲到外存,作為下一次服務運行的初始值。
全文摘要
本發(fā)明所述的實現(xiàn)類內存數(shù)據(jù)庫存取和檢索的方法應用于嵌入式系統(tǒng),所述的方法根據(jù)數(shù)據(jù)檢索的需要建立相應數(shù)據(jù)節(jié)點的存儲表。根據(jù)上述存儲表建立相應的索引表,索引表是基于平衡二叉樹模型建立的、動態(tài)可排序的數(shù)據(jù)表結構。對建立的索引表排序字段優(yōu)先存儲表,對指定在先的若干次查詢進行掃描和分析,對屬性查詢的優(yōu)先級進行排序,確定索引的排序規(guī)律,從而使數(shù)據(jù)的查詢更加有效率。所述的存取和檢索方法與現(xiàn)有的內存數(shù)據(jù)庫檢索方法相比,可以即時更新統(tǒng)計查詢命中率,具有相當高的數(shù)據(jù)庫管理和安全性能,因此可以提高效率并降低內、外存資源占用。
文檔編號G06F17/30GK1635494SQ200310114569
公開日2005年7月6日 申請日期2003年12月27日 優(yōu)先權日2003年12月27日
發(fā)明者李云峰, 李玉軍, 劉宏, 林清武 申請人:海信集團有限公司