專利名稱:文件數據庫多級索引技術的制作方法
技術領域:
本發明涉及一種文件數據庫多級索引技術,即InforGuard水印模 塊采用的水印存取機制。
背景技術:
在功能上,InforGuard為驗證網頁文件的合法性,必須存儲網頁 文件的原始水印(水印即文件的摘要信息),以便比對。每個網頁都對 應自己的水印,水印總數量與網站上網頁的總數量成正比,網站規模 很大時,就必須存儲大量的水印數據。為保證水印存儲和查詢的高效 率,InforGuard產品中設計了 一個基于多級索引技術的文件數據庫來 存儲水印信息。
文件數據庫區別于各種商業數據庫(如Oracle等),特點是輕便、 專用性強,許多產品都會實現自己的文件數據庫來存儲數據。 目前,在此領域采用的方案為
存儲數據的文件由定長的記錄組成,記錄是固定結構,包含key 和data兩部分,key即數據的鍵信息,而data存儲數據內容信息。 記錄之間緊湊存儲。查詢記錄時,需要遍歷整個文件對.key進行匹配, 找到需要的data。
該方法的特點是實現簡單,易于控制,穩定性和可靠性較高。但 是查詢效率是該項技術使用的主要限制。雖然通過內存緩沖技術(即 cache技術)可以提高查詢的效率,但是受實際環境的限制,當需要 存儲大量數據時,仍然很難滿足效率上的要求。
發明內容
本發明的目的就是針對上述的不足,提供了一種基于文件數據庫 的多級索引技術,能夠有效提高文件數據庫的查詢性能,從而擴展文 件數據庫的可用范圍。
多級索引技術,主要采用了以下技術手段
1. 建立獨立的索引文件
當在數據文件中存儲數據記錄(包含key和data )時,將key和 該記錄的存儲偏移值作為索引另存在一個獨立的文件中,稱為索引文 件。當根據key查詢數據時,先從索引文件中找到索引,然后再依據 其中包含的偏移值,直接從數據文件中定位到目標記錄。
2. 按照HASH算法存儲索引
3索引文件中對索引的存儲不是按照順序緊湊的方法,而是通過
HASH算法把記錄的key轉化為數值,作為存儲該索引的位置偏移量。 任何HASH算法都存在沖突的問題,即不同的key可能會轉化出相同的 位置偏移量,因此本次索引要存儲的位置可能已被以前的索引占據。 可以采取最簡單的策略解決,即從該沖突位置向后查找第一個空白位 置,進行存儲。實現時不限于該策略。
根據上述技術,本發明提供的文件數據庫多級索引技術包括數據 存儲和數據查詢兩個步驟,其中,
數據存儲包括如下步驟
1-1)查找數據文件空白位置存儲數據,數據包括鍵(key)和值 (data)兩部分,鍵是查詢數據的關鍵字,將鍵和值組成名值對結構, 作為存儲記錄,將記錄存入數據文件中的空白位置,該位置標記為 data_pos i t ion;
1-2) HASH轉換產生索引存儲位置,以數據的鍵(key)為參數, 調用HASH函數,轉換為一個數值,作為索引存儲位置,該位置標記為 index_pos i t ion;
1- 3)在索引文件中存儲索引,索引包括兩部分,數據的鍵(key) 以及1-1 )步中獲得的data — position,打開索引文件,以l-2)步產 生的index_position為偏移量,將索引存儲到該位置;如果該位置已 經被占用,則從該位置起向后查找第一個空白位置進行存儲;
數據查詢包括如下步驟
2- 1) HASH轉換計算出索引的存儲位置,以數據的鍵(key)為參 數,調用HASH函數,轉換結果即為索引存儲位置;
2_2)從索引文件取出索引,打開索引文件,從2-l)步獲得的存 儲位置開始,向后逐個匹配key,查找目標索引(多數情況下,首個 就是匹配的索引);
2-3)從數據文件中取出數據,2-2)步獲得的索引信息,包含查 詢數據在數據文件中的存儲位置,故打開數據文件,按上述位置直接 取出數據。
本發明提供的文件數據庫多級索引技術具有如下優點 l.顯著提高查詢性能
通過HASH算法,可以從索引文件中快速定位到索引信息,進而通 過索引信息直接獲得數據的存儲位置。因此,相對于傳統的文件數據 庫的遍歷查找機制,本機制定位目標數據的速度明顯提高。2.保證數據文件存儲空間的利用率
本機制把索引信息和數據信息分開存儲。用于存儲數據信息的數 據文件,仍然按傳統方法緊湊存儲,因此數據文件的內部空間可以充
分利用;用于存儲索引信息的索引文件,各索引存儲的位置是用HASH 函數產生的,雖然不是緊湊存儲,中間存在一定的空白記錄區,但是 索引的長度相對較小,因此空白區的消耗相對不明顯。索引文件在存 儲利用率上付出一定的代價,換取了查詢的高效率。
圖l為本發明實施例中數據存儲的流程圖; 圖2為本發明實施例中數據查詢的流程圖; 圖3為本發明實施例中文件數據庫多級索引示意圖; 圖4為本發明實施例中多級索引文件數據庫實施例流程圖。
具體實施例方式
一種文件數據庫多級索引技術,其過程如圖3所示,包括數據存 儲和數據查詢兩個步驟,其中,
如圖l所示,數據存儲包括如下步驟 步驟開始于1Q1:存儲過程開始。
然后進入步驟102:查找數據文件空白位置存儲數據,數據包括 鍵(key)和值(data)兩部分,鍵是查詢數據的關鍵字,將鍵和值組 成名值對結構,作為存儲記錄,將記錄存入數據文件中的空白位置, 該位置標記為data —pos i t ion。
再進入步驟103: HASH轉換產生索引存儲位置,以數據的鍵(key ) 為參數,調用HASH函數,轉換為一個數值,作為索引存儲位置,該位 置標記為index —pos i t ion。
然后再進入步驟104:在索引文件中存儲索引,索引包括兩部分, 數據的鍵(key)以及步驟102步中獲得的da ta —pos i t ion,打開索引 文件,以步驟103中產生的index-position為偏移量,將索引存儲到 該位置;如果該位置已經被占用,則從該位置起向后查找第一個空白 位置進行存儲。
然后為步驟105:存儲過程結束。
如圖2所示,數據查詢包括如下步驟
步驟開始于2Q1:查詢過程開始。
然后進入步驟202: HASH轉換計算出索引的存儲位置,以數據的 鍵(key)為參數,調用HASH函數,轉換結果即為索引存儲位置;然后進入步驟203:從索引文件取出索引,打開索引文件,從步 驟202中獲得的存儲位置開始,向后逐個匹配key,查找目標索引(多 數情況下,首個就是匹配的索引)。
然后進入步驟204:從數據文件中取出數據,步驟203獲得的索 引信息,包含查詢數據在數據文件中的存儲位置,故打開數據文件, 按上述位置直接取出數據。
最后為步驟205:查詢過程結束。
為了更清晰的描述上述多級索引文件數據庫的實現,如圖4所示, 以下用 一個簡單的人員信息數據庫為例說明存儲人員名字(key)和地 址(data)信息,可以方便的按名字查出他的地址。本例中假定人名不 重復。
名字用8字節固定長度存儲,地址用128字節固定長度存儲,名 字和地址組成數據記錄,存儲到數據文件中,因而數據文件中存儲的 記錄長度是136字節(名字+地址)。
相應的,索引文件中的記錄由名字和偏移量組成,偏移量是4字 節整數型,因此索引記錄長度12字節(名字+偏移量)。
存儲"張三"及他的地址"長安街44號"這條信息時,
(1) 從數據文件中找到第一個空白記錄位置,假定該空白位置相對 于數據文件開頭的距離是3條記錄的長度。偏移以數據記錄長度為單 位,偏移量標記為3。
(2) 打開數據文件,把名字"張三"和地址"長安街44號"組成 的數據記錄存入第3條記錄處。
(3) 以名字"張三"和偏移量3,作為索引記錄。
(4) 以名字"張三,,作為參數,調用HASH函數,假定返回值為25, 就以25作為索引記錄在索引文件中存儲的位置。以索引文件開頭為基 準,向后偏移25條索引記錄的長度。如果找到的位置尚未使用,把第 (3)步的索引記錄直接存儲到該位置;如果該位置已經使用,從該位置 開始向后順序找到第 一個空白位置,對索引記錄進行存儲。
查詢"張三"的地址信息時,
(1) 把名字"張三"作為參數,調用HASH函數,可以得到返回值 25 , 25可以定位索引記錄在索引文件中存儲的起始位置。
(2) 以索引文件開頭為基準,向后偏移25條索引記錄的長度。偏 移后地址不一定就是索引記錄的直接存儲位置,應當從該位置開始, 逐個查找名字是"張三,,的索引記錄。找到后,取出其中的偏移量,值是3。
(3) 打開數據文件,定位數據記錄的直接存儲地址。由(2)可知, 該地址距離數據文件開頭3條記錄長度。
(4) 從第(3)步得到的地址中取出數據記錄,該記錄的數據部分存 儲的就是"張三"的地址。
權利要求
1.一種文件數據庫多級索引技術,其特征在于包括數據存儲和數據查詢兩個步驟,其中,數據存儲包括如下步驟1-1)查找數據文件空白位置存儲數據,數據包括鍵(key)和值(data)兩部分,鍵是查詢數據的關鍵字,將鍵和值組成名值對結構,作為存儲記錄,將記錄存入數據文件中的空白位置,該位置標記為data_position;1-2)HASH轉換產生索引存儲位置,以數據的鍵(key)為參數,調用HASH函數,轉換為一個數值,作為索引存儲位置,該位置標記為index_position;1-3)在索引文件中存儲索引,索引包括兩部分數據的鍵(key)以及1-1)步中獲得的data_position,打開索引文件,以1-2)步產生的index_position為偏移量,將索引存儲到該位置;如果該位置已經被占用,則從該位置起向后查找第一個空白位置進行存儲;數據查詢包括如下步驟2-1)HASH轉換計算出索引的存儲位置,以數據的鍵(key)為參數,調用HASH函數,轉換結果即為索引存儲位置;2-2)從索引文件取出索引,打開索引文件,從2-1)步獲得的存儲位置開始,向后逐個匹配key,查找目標索引(多數情況下,首個就是匹配的索引);2-3)從數據文件中取出數據,2-2)步獲得的索引信息,包含查詢數據在數據文件中的存儲位置,故打開數據文件,按上述位置直接取出數據。
全文摘要
本發明是一種文件數據庫多級索引技術,即InforGuard水印模塊采用的水印存取機制。它包括數據存儲和數據查詢兩個步驟,通過建立獨立的索引文件并按照HASH算法存儲索引,通過兩階段快速定位的多級索引技術,克服傳統文件數據庫效率低下的弱點,顯著提高了文件數據庫查詢數據的性能。
文檔編號G06F17/30GK101551807SQ20091001510
公開日2009年10月7日 申請日期2009年5月7日 優先權日2009年5月7日
發明者春 劉, 劉宗福, 劉毅楓, 進 王, 磊 石, 黃三偉 申請人:山東中創軟件商用中間件股份有限公司