數(shù)據(jù)庫關鍵字查詢技術研究
引言
在計算機應用領域中,由專業(yè)人員實現(xiàn)對數(shù)據(jù)庫查詢的編程技術,我們就以關系數(shù)據(jù)庫進行數(shù)據(jù)處理來舉例說明,大多數(shù)情況下都使用結構化查詢語言SQL(StructuredQueryLanguage)語言,SQL語言是一種在關系數(shù)據(jù)庫中定義和操縱數(shù)據(jù)的標準語言,其最主要、最核心的部分就是查詢功能。當針對某一個數(shù)據(jù)庫執(zhí)行查詢時,系統(tǒng)按照特定的組合、條件表達式或次序進行檢索,依此用來返回我們所要尋找和感興趣的數(shù)據(jù)信息。
1查詢舉例
設有一個SPJ數(shù)據(jù)庫,包括S、P、J、SPJ四個數(shù)據(jù)表,s供應商表由SNO(供應商代碼)、SNAME(供應商姓名)、STATUE(供應商狀態(tài))和CITY(供應商所在城市)組成;P零件表由PNO(零件代碼)、PNAME(零件名)、COLOR(顏色)和WEIGHT(重量)組成;J工程項目表由JNO(工程項目代碼)、JNAME(工程項目名)和CITY(工程項目所在城市)組成;SPJ供應情況表SNO(供應商代碼)、PNO(零件代碼)、JNO(工程項目代碼)和QTY(供應數(shù)量)組成。如果想要找到“沒有使用天津供應商生產(chǎn)的紅色零件的工程號JNO”的數(shù)據(jù)信息,那么,可以使用以下一種SQl語句來實現(xiàn)查詢:
SELECT JNO
FROM J
WHERE NOT EXISTS
(SELECT *
FROM SPJ
WHERE SPJ. JNO= J .JNO
AND SNO IN
(SELECT SNO
FROM S
WHERE CITY=‘天津’)
AND PNO IN
(SELECT PNO
FROM P
WHERE COLOR =‘紅色’));
從上面的例子中可知,若用戶要在線訪問數(shù)據(jù)庫,就必須使用SQL語句在數(shù)據(jù)庫上查詢,那么該系統(tǒng)就要求用戶了解數(shù)據(jù)庫模式的基本知識,而且還要求用戶能夠熟練、靈活的使用SQL語句。但在實際的操作過程中,我們發(fā)現(xiàn)大多數(shù)用戶對關系數(shù)據(jù)庫基本不了解,更談不上熟練地使用結構化查詢語言SQL等知識,所以,該SQL查詢不適合廣大用戶。隨著互聯(lián)網(wǎng)技術的不斷發(fā)展,出現(xiàn)了以關鍵字查詢的數(shù)據(jù)庫技術。盡管數(shù)據(jù)庫關鍵字的查詢研究有很多代表性成果,但其查詢的核心思想都是基于圖和“簡化子樹”的,所有的關鍵字查詢技術的研究都是從數(shù)據(jù)圖中找到最好的查詢結果樹。
2核心思想
2.1關鍵字查詢
一個關鍵字查詢其實就是一個集合K,其查詢結果就是一個給定的數(shù)據(jù)圖G的一個子樹T,那么T就是給定集合K的簡化形式,簡而言之,T包含了K,但不會有T的子樹包含K。
所有的關鍵字查詢技術都是把我們定義好的關系數(shù)據(jù)庫當做一個數(shù)據(jù)圖G,圖G的節(jié)點是以元祖、關鍵字表示的。在我們進行查詢時,不同元祖間的連接是通過外鍵實現(xiàn),所以在它們之間就有一條邊存在。若一條元祖t有關鍵字k,那么t和k間就有連接存在。所以,一個關鍵字查詢的結果其實就是一個圖G的子樹,該子樹是圖G關于關鍵字K的簡化,也就是簡化子樹。簡化子樹的生成主要有兩種方法:“基于數(shù)據(jù)圖的方法”和“基于模式圖的方法”。
2.2基于數(shù)據(jù)圖的方法
數(shù)據(jù)庫關鍵字查詢技術的大多數(shù)研究都是采用了基于數(shù)據(jù)圖的方法來生成簡化子樹。這種方法就是對數(shù)據(jù)圖直接處理,從中枚舉簡化子樹,首先,把數(shù)據(jù)圖看成一個帶權重的數(shù)據(jù)圖,并且假設數(shù)據(jù)圖已經(jīng)被物化;其次,利用數(shù)據(jù)圖中的節(jié)點(元組)和邊(元組之間的主外鍵關聯(lián))的權重,作為關鍵字查詢找到top-k個代價最小的簡化子樹。
2.3基于模式圖的方法
利用數(shù)據(jù)庫模式創(chuàng)建連接表達式,再在DBMS上執(zhí)行連接表達式對應的SQL語句得到結果,具體的步驟為:第一步,枚舉所有可能包含查詢結果的連接表達式,在枚舉連接表達式時會對該表達式的尺寸做一個限制。若表達式尺寸太大,就說明包含的連接數(shù)目很多,那么這兩個元祖之間會產(chǎn)生大的距離。那么,即使這兩個元祖之間存在連接關系,但是實際的意義不是很大;第二步,根據(jù)相應的規(guī)則把第一步得到的連接表達式轉化為SQL的查詢語句,然后在對應的數(shù)據(jù)庫上執(zhí)行,要么SQL語句直接在DBMS上執(zhí)行,要么在中間件上執(zhí)行SQL語句,而中間件位于RDBMS層之上。因為要處理大量的關系代數(shù)表達式,所以許多研究都采用基于中間件的方法。
3結語
越來越多的用戶需要通過互聯(lián)網(wǎng)訪問在線數(shù)據(jù)庫來獲取信息。因此,本文主要針對數(shù)據(jù)庫關鍵字查詢技術做了一個簡單的分析和介紹,主要包括的內(nèi)容有數(shù)據(jù)庫關鍵字查詢技術的核心思想,緊接著引出了關鍵字查詢的兩類方法,分別是基于數(shù)據(jù)圖的方法和基于模式圖的方法,并對這兩類方法做了介紹,并比較了各自的優(yōu)缺點,解決了傳統(tǒng)意義上的數(shù)據(jù)庫查詢技術所遇到的問題,具有一定的理論和實踐價值。