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