專利名稱::數(shù)據(jù)庫檢索方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計算機
技術(shù)領(lǐng)域:
,更具體地說,涉及數(shù)據(jù)檢索
背景技術(shù):
:在數(shù)據(jù)庫中,一般通過多個邏輯上關(guān)聯(lián)的數(shù)據(jù)表存儲數(shù)據(jù)。如下所示的職員個人信息表<table>tableseeoriginaldocumentpage5</column></row><table>該數(shù)據(jù)表包含多個域,即上述數(shù)據(jù)表的表頭,例如工號、姓名、性別、出生日期、4昏否、職務(wù)。在現(xiàn)有技術(shù)的數(shù)據(jù)庫中,進行數(shù)據(jù)存儲時即對檢索條件中的域(如工號)建索引(Index),然后在查詢時直接構(gòu)造SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語言)語句進行片企索。例如select姓名,性別,職務(wù)from職員個人信息表where工號<=002。它表示從職員個人信息表中查詢工號小于或等于002的職員的姓名、性別、職務(wù)信息,其中工號<=002是檢索條件,正常情況下,數(shù)據(jù)庫將返回張健和李麗的性別、職務(wù)。為了方便描述,定義上述SQL語句中的"姓名、性別、職務(wù)"為查詢域(即需要查詢的信息)、"工號"為條件域(即過濾條件)。若該數(shù)據(jù)庫還需要另夕一個數(shù)據(jù)表描述職務(wù)與工資的關(guān)系,如下所示<table>tableseeoriginaldocumentpage5</column></row><table>貝'J"職務(wù)"把兩個數(shù)據(jù)表關(guān)聯(lián)起來,若需要查詢張健的工資,則需要先查詢第一個數(shù)據(jù)表,得到他的職務(wù)是科員,然后到第二個表中查詢,得到他的工資是180.00。在現(xiàn)有技術(shù)中,若分兩個數(shù)據(jù)表存儲,無需對增加的每個域建索引,則減少了存儲量,但增加了一次檢索過程,降低了檢索效率;若把兩個數(shù)據(jù)表合并,則只需要查詢一次就可以得到張健的工資,但是要對增加的每個域建索引,增加了存儲量。這樣就形成了檢索效率和存儲量的矛盾。
發(fā)明內(nèi)容本發(fā)明的目的之一在于提供一種數(shù)據(jù)庫檢索方法及系統(tǒng),旨在降低數(shù)據(jù)存儲量,并提高檢索效率。為了實現(xiàn)發(fā)明目的,所述數(shù)據(jù)庫檢索系統(tǒng)包括數(shù)據(jù)庫及與其交互的檢索裝置,所述數(shù)據(jù)庫包括域處理單元,將所述數(shù)據(jù)庫中的多個域處理成一合并域,并對所述合并域中的各子域進行操作設(shè)置;^操作單元,根據(jù)各子域的操作設(shè)置向所述各子域存入數(shù)據(jù);所述檢索裝置包括解析單元,對用戶輸入的查詢語句進行解析,得到與所述各子域的操作設(shè)置相關(guān)的運算表達式;檢索單元,利用所述解析單元得到的所述運算表達式在從數(shù)據(jù)庫導(dǎo)出的合并域中進行查找。其中,所述域處理單元包括域合并模塊,將數(shù)據(jù)庫中的多個域處理成一合并域,所述合并域包含多個子域;操作設(shè)置模塊,構(gòu)建與所述各子域具有映射關(guān)系的操作函數(shù)。其中,所述解析單元包括分析模塊,對用戶輸入的查詢語句進行分析,確定與合并域中各子域?qū)?yīng)的運算表達式;設(shè)置關(guān)聯(lián)模塊,將所述各子域的操作函數(shù)關(guān)聯(lián)到所述各子域?qū)?yīng)的運算表達式,得到合并域的運算表達式。其中,所述^^索單元包括數(shù)據(jù)提取模塊,將合并域從數(shù)據(jù)庫中導(dǎo)出;查詢模塊,利用所述運算表達式在從數(shù)據(jù)庫導(dǎo)出的合并域中進行查找。所述數(shù)據(jù)庫檢索方法包括A.將數(shù)據(jù)庫中的多個域處理成一合并域,并對所述合并域中的各子域進行操作設(shè)置;B.根據(jù)各子域的操作設(shè)置向所述各子域存入數(shù)據(jù);C.對用戶輸入的查詢語句進行解析,得到與合并域中各子域的操作設(shè)置相關(guān)的運算表達式;D.利用所述運算表達式在從數(shù)據(jù)庫導(dǎo)出的合并域中進行查找。其中,所述步驟A中對各子域進行操作設(shè)置的過程包括構(gòu)建與各子域具有映射關(guān)系的操作函數(shù)。其中,所述操作函數(shù)包括寫操作函數(shù)和讀操作函數(shù)。其中,所述寫操作函數(shù)包括設(shè)置函數(shù)和清除函數(shù),所述讀操作函數(shù)包括查詢函數(shù)。其中,所述步驟B包括通過各子域的寫操作函數(shù)在數(shù)據(jù)庫中插入數(shù)據(jù)或更新數(shù)據(jù)。其中,所述步驟C包括C1.對用戶輸入的查詢語句進行分析,確定與合并域中各子域?qū)?yīng)的運算表達式;C2.根據(jù)運算表達式中的子域名得到操作函數(shù)中的讀操作函數(shù);C3.將讀操作函數(shù)關(guān)聯(lián)到各子域的運算表達式,從而生成合并域的運算表達式。其中,所述查詢語句包括結(jié)構(gòu)化查詢語言。其中,所述步驟D包括Dl.從數(shù)據(jù)庫中導(dǎo)出合并域;D2.調(diào)用合并域的運算表達式,并利用所述運算表達式在合并域中進行查找。其中,若查詢記錄M是否存在于數(shù)據(jù)庫中,則所述步驟D2包括D21.對從數(shù)據(jù)庫中導(dǎo)出的合并域進行或邏輯操作;D22.利用所述運算表達式在所述合并域的或邏輯操作結(jié)果中查找所述記錄M。其中,所述步驟D2進一步包括利用所述運算表達式在每條記錄的合并域中查找記錄M的詳細內(nèi)容。由上可知,本發(fā)明在進行數(shù)據(jù)庫4企索的過程中,將多個域合并為一個域,然后通過與合并域中各子域的操作設(shè)置相關(guān)的運算表達式進行檢索,不僅降低了數(shù)據(jù)存儲量,并且提高了檢索效率。圖l是本發(fā)明一個實施例中數(shù)據(jù)庫檢索系統(tǒng)結(jié)構(gòu)圖;圖2是本發(fā)明一個實施例中域處理單元的結(jié)構(gòu)圖;圖3是本發(fā)明一個實施例中進行域合并的示意圖;圖4是本發(fā)明一個實施例中解析單元的結(jié)構(gòu)圖;圖5是本發(fā)明一個實施例中一企索單元的結(jié)構(gòu)圖;圖6是本發(fā)明一個實施例中數(shù)據(jù)庫4企索方法流程圖;圖7是圖6所示實施例中步驟S51的流程圖;圖8是圖7所示實施例中步驟S512的流程圖;圖9是圖6所示實施例中步驟S53的流程圖;圖10是圖6所示實施例中步驟S54的流程圖。為了使本發(fā)明的上述及其它目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。具體實施例方式圖1示出了本發(fā)明的一個實施例中數(shù)據(jù)庫檢索系統(tǒng)的結(jié)構(gòu),該系統(tǒng)包括數(shù)據(jù)庫IO、檢索裝置20。應(yīng)當說明的是,本發(fā)明所有圖示中各設(shè)備之間的連接關(guān)系是為了說明其信息交互及控制過程的需要,因此應(yīng)當視為邏輯上的控制關(guān)系。另外需要說明的是,各功能模塊之間的通信方式可以采取多種,本發(fā)明的保護范圍不應(yīng)限定為某種特定類型的通信方式。數(shù)據(jù)庫10包括域處理單元11和寫操作單元12,其中(1)域處理單元ll,將數(shù)據(jù)庫10中的多個域處理成一合并域,并對各子域進行操作設(shè)置。(2)寫操作單元12,與域處理單元ll相連,根據(jù)各子域的操作設(shè)置向前述的各子域中存入數(shù)據(jù)。檢索裝置20包括解析單元21和檢索單元22,其中(1)解析單元21,對用戶輸入的查詢語句進行解析,得到與合并域中各子域的操作設(shè)置相關(guān)的運算表達式。(2)檢索單元22,與解析單元21相連,利用解析單元21得到的所述運算表達式在從數(shù)據(jù)庫10導(dǎo)出的合并域中進行查找。。圖2示出了本發(fā)明一個實施例中域處理單元ll的結(jié)構(gòu),包括域合并模塊111和操作設(shè)置模塊112,其中域合并模塊l11將數(shù)據(jù)庫10中的多個域處理成一合并域。目前數(shù)據(jù)庫支持的域的數(shù)據(jù)類型有五種字符型、文本型、數(shù)值型、邏輯型、日期型,實際應(yīng)用中,它們的表達能力可能無法被充分利用,例如用數(shù)值型中的UNSIGNEDINT類型來描述工資時,它的表達范圍是0-4294967295,實際上正常使用的范圍可能只是O-IOOOO,則造成了表達能力和存儲的浪費。本發(fā)明通過域合并模塊lll對域進行合并,實際上就是進行了壓縮存儲,主要目的就是為了充分利用數(shù)據(jù)類型的表達能力,避免存儲的浪費。在一個實例中,進行數(shù)據(jù)壓縮后的數(shù)據(jù)表定義如下<table>tableseeoriginaldocumentpage9</column></row><table>在進行域合并后的職員信息域中,每個子域(對應(yīng)合并前的域)占據(jù)一段存儲,x表示一個bit位,如圖3所示。應(yīng)當說明的是,實際上可以將工號、姓名、出生日期都合并到"職員信息"域中,因為任何類型的數(shù)據(jù)都可以被二進制類型表示,但工號單獨被檢索的可能性較大,而姓名和出生日期作為查詢域的概率遠大于作為條件域的概率,所以在此實例中沒有被合并。另外應(yīng)當說明的是,除了二進制的數(shù)據(jù)類型,還可以用其他的數(shù)據(jù)類型來合并表達多個域,如定義N個字符,其中X個字符表示職員姓名,Y個字符表示職員的出生日期,JLX+Y<=N。操作設(shè)置模塊112,與域合并模塊lll交互,構(gòu)建與各子域具有映射關(guān)系的操作函數(shù)。在本發(fā)明中,操作設(shè)置模塊112首先定義子域的掩碼,為了方便程序計算,則進一步定義寫操作函數(shù)和讀操作函數(shù),最后在各操作函數(shù)和各子域之間建立一個函數(shù)映射表。在一個實例中,該寫操作函數(shù)包括設(shè)置函數(shù)和清除函數(shù),該讀操作函數(shù)包括查詢函數(shù),其中設(shè)置、清除函數(shù)在向數(shù)據(jù)庫10插入、更新記錄時使用,分別用于設(shè)置對應(yīng)子域的bit位、清除對應(yīng)子域的bit位;查詢函數(shù)在向數(shù)據(jù)庫IO斗企索時使用,用于查詢對應(yīng)子域的bit位是否祐:設(shè)置。圖4示出了本發(fā)明一個實施例中解析單元21的結(jié)構(gòu),包括分析模塊211,對用戶輸入的查詢語句進行分析,得到與合并域中各子域?qū)?yīng)的運算表達式。本發(fā)明中,用戶輸入的查詢語句可為多種。在一個實例中,用戶輸入的查詢語句是SQL查詢語句,其中包含查詢域、條件域等,例如select姓名,性別,職務(wù)from職員個人信息表where工號<=002。當然,本發(fā)明還可基于其他類型的查詢語句進行操作。設(shè)置關(guān)聯(lián)模塊212,與分析模塊211交互,將各子域的操作函數(shù)關(guān)聯(lián)到運算表達式,得到合并域的運算表達式。在本發(fā)明中,設(shè)置關(guān)聯(lián)模塊212將操作函數(shù)關(guān)聯(lián)到運算表達式的方式有多種。在一個實例中,當分析模塊211得到與合并域中各子域?qū)?yīng)的運算表達式之后,設(shè)置關(guān)聯(lián)模塊212則根據(jù)運算表達式里出現(xiàn)的子域名,到前述操作設(shè)置模塊l12所建立的函數(shù)映射表中找到相應(yīng)的查詢函數(shù)指針,替換相應(yīng)的子域名,得到以函數(shù)指針為操作數(shù)的運算表達式,因此得到合并域的運算表達式。圖5示出了本發(fā)明一個實施例中檢索單元22的結(jié)構(gòu),包括數(shù)據(jù)提取^^莫塊221,將合并域從數(shù)據(jù)庫10中導(dǎo)出。在一個實例中,數(shù)據(jù)提取模塊221可從數(shù)據(jù)庫10中導(dǎo)出全部記錄的查詢域、合并域,由于這一步驟沒有施加任何過濾條件,所以速度與數(shù)據(jù)庫10的總數(shù)據(jù)量成類似正比的關(guān)系。查詢模塊222,與數(shù)據(jù)提取模塊221進行交互,利用運算表達式在從數(shù)據(jù)庫10導(dǎo)出的合并域中進行查找,得到檢索結(jié)果。在本發(fā)明中,查詢模塊222可根據(jù)不同的查詢條件,進行各種類型的^f全索。在一個實例中,若要查詢數(shù)據(jù)庫10中是否含有符合檢索條件的記錄,則檢索方式是查詢模塊222先對全部記錄的合并域進行或邏輯操作,然后利用含函數(shù)指針的合并域的運算表達式在或邏輯操作的結(jié)果中進行查找,根據(jù)結(jié)果判斷是否含有符合條件的記錄。在該實例中,對合并域進行或邏輯操作的目的,是為了避免對每條結(jié)果的合并域都進行一次函數(shù)運算,而是在合并域進行了或邏輯操作之后只做一次函數(shù)運算,因此可以大大提高檢索效率。在另一實例中,若要查詢數(shù)據(jù)庫10中某條記錄的詳細內(nèi)容,則檢索方式是查詢模塊222利用含函數(shù)指針的合并域的運算表達式在每條記錄的合并域中進行查找,從而得到過濾結(jié)果,也即該條記錄的詳細內(nèi)容。圖6示出了本發(fā)明一個實施例中數(shù)據(jù)庫檢索方法流程。包括以下步驟在步驟S51中,將數(shù)據(jù)庫10中的多個域處理成一合并域,并對各子域進行操作設(shè)置。在步驟S52中,根據(jù)各子域的操作設(shè)置向數(shù)據(jù)庫10存入數(shù)據(jù)。在步驟S53中,對用戶輸入的查詢語句進行解析,得到與合并域中各子域的操作設(shè)置相關(guān)的運算表達式。在步驟S54中,將運算表達式施加到合并域之上進行查找,得到檢索結(jié)果。圖7是圖5所示實施例中步驟S51的流程圖,包括以下步驟在步驟S511中,將數(shù)據(jù)庫10中的多個域處理成一合并域。需要說明的是,目前數(shù)據(jù)庫支持的域的數(shù)據(jù)類型有五種字符型、文本型、數(shù)值型、邏輯型、日期型,實際應(yīng)用中,它們的表達能力可能無法被充分利用,例如用數(shù)值型中的UNSIGNEDINT類型來描述工資時,它的表達范圍是0-4294967295,實際上正常使用的范圍可能只是O-IOOOO,則造成了表達能力和存儲的浪費。本發(fā)明通過域合并模塊lll對域進行合并,實際上就是進行了壓縮存儲,主要目的就是為了充分利用數(shù)據(jù)類型的表達能力,避免存儲的浪費。在一個實例中,進行數(shù)據(jù)壓縮后的數(shù)據(jù)表定義如下:<table>tableseeoriginaldocumentpage11</column></row><table>進行域合并后的職員信息域,每個子域(對應(yīng)合并前的域)占據(jù)一段存儲,x表示一個bit位。如圖3所示。應(yīng)當說明的是,實際上可以將工號、姓名、出生日期都合并到"職員信息"域中,因為任何類型的數(shù)據(jù)都可以被二進制類型表示,但工號單獨被檢索的可能性較大,而姓名和出生日期作為查詢域的概率遠大于作為條件域的概率,所以在此實例中沒有被合并。另外應(yīng)當說明的是,除了二進制的數(shù)據(jù)類型,還可以用其他的數(shù)據(jù)類型來合并表達多個域,如定義N個字符,其中X個字符表示職員姓名,Y個字符表示職員的出生曰期,且X+Y《N。在步驟S512中,構(gòu)建與各子域具有映射關(guān)系的操作函數(shù)。在本發(fā)明中,所稱的操作函數(shù)可包括多種,例如寫操作函數(shù)和讀操作函數(shù)。圖8是圖6所示實施例中步驟S512的流程圖,包括以下步驟在步驟S5121中,定義子域的掩碼,并構(gòu)建各子域的操作函數(shù)。具體過程是首先利用操作設(shè)置模塊112定義子域的掩碼,為了方便程序計算,則進一步定義寫操作函數(shù)和讀操作函數(shù),最后在各操作函數(shù)和各子域之間建立一個函數(shù)映射表。在該實施例中,寫操作函數(shù)包括設(shè)置函數(shù)和清除函數(shù),該讀操作函數(shù)包括查詢函數(shù),其中設(shè)置、清除函數(shù)在向數(shù)據(jù)庫10插入、更新記錄時使用,分別用于設(shè)置對應(yīng)子域的bit位、清除對應(yīng)子域的bit位;查詢函數(shù)在向數(shù)據(jù)庫IO才企索時使用,用于查詢對應(yīng)子域的bit位是否被設(shè)置。在步驟S5122中,通過各子域的寫操作函數(shù)在數(shù)據(jù)庫10中插入數(shù)據(jù)或更新數(shù)據(jù)。此時則需要利用前述寫操作函數(shù)中的設(shè)置函數(shù)設(shè)置子域的bit位,利用清除函數(shù)清除對應(yīng)子域的bit位。圖9是圖5所示實施例中步驟S53的流程圖,包括以下步驟在步驟S531中,對用戶輸入的查詢語句進行分析,得到與合并域中各子域?qū)?yīng)的運算表達式。在一個實例中,該查詢語句是SQL查詢語句,其中包含查詢域、條件域等,例如select姓名,性別,職務(wù)from職員個人信息表where工號<=002。當然,本發(fā)明還可基于其他類型的查詢語句進行操作。在步驟S532中,根據(jù)運算表達式中的子域名得到操作函數(shù)中的讀操作函數(shù)。在一個實例中,當分析模塊211得到與合并域中各子域?qū)?yīng)的運算表達式之后,設(shè)置關(guān)聯(lián)模塊212根據(jù)運算表達式里出現(xiàn)的子域名,到前述操作設(shè)置模塊112所建立的函數(shù)映射表中找到相應(yīng)的查詢函數(shù)指針。在步驟S533中,將讀操作函數(shù)關(guān)聯(lián)到各子域的運算表達式,從而生成合并域的運算表達式。在一個實例中,當設(shè)置關(guān)聯(lián)模塊212在函數(shù)映射表中找到查詢函數(shù)指針后,則替換相應(yīng)的子域名,得到以函數(shù)指針為操作數(shù)的運算表達式,因此得到包含函數(shù)指針的合并域的運算表達式。圖10是圖5所示實施例中步驟S54的流程圖,包括以下步驟在步驟S541中,從數(shù)據(jù)庫10中導(dǎo)出合并域。在一個實例中,數(shù)據(jù)提取模塊221可從數(shù)據(jù)庫10中導(dǎo)出全部記錄的查詢域、合并域,由于這一步驟沒有施加任何過濾條件,所以速度與數(shù)據(jù)庫10的總數(shù)據(jù)量成類似正比的關(guān)系。在步驟S542中,調(diào)用合并域的運算表達式。在一個實例中,查詢模塊222從設(shè)置關(guān)聯(lián)模塊212中調(diào)用包含函數(shù)指針的合并域的運算表達式,用于進行不同^^索條件下的查詢。若查詢記錄M是否存在于數(shù)據(jù)庫10中,貝'J:步驟S543,對從數(shù)據(jù)庫10中導(dǎo)出的合并域進行或邏輯操作。步驟S544,利用運算表達式在該合并域的或邏輯操作結(jié)果中查找記錄M。在該實例中,對合并域進行或邏輯操作的目的,是為了避免對每條結(jié)果的合并域都進行一次函數(shù)運算,而是在合并域進行了或邏輯操作之后只做一次函數(shù)運算,因此可以大大提高檢索效率。若查詢記錄M的詳細內(nèi)容,則包括步驟S545,將運算表達式施加于每條記錄的合并域之上,得到過濾結(jié)果,也即該記錄M的詳細內(nèi)容。本發(fā)明還提供了一個實例。假設(shè)某數(shù)據(jù)庫表的定義為如下表:<table>tableseeoriginaldocumentpage13</column></row><table>設(shè)該表有N二6斗個Flag(標志),且都是BOOL類型的,取值為true或false,是一個開關(guān)型的域。表的記錄條數(shù)為100萬,ID、Attrl、Attr2、Attr3是查詢域(即經(jīng)常被查詢,但很少作為過濾條件),F(xiàn)lagl-FlagN經(jīng)常被作為條件域?!┲гO(shè)有一個檢索請求selectAttrl、Attr2fromSamplewhere(Flagl&&Flag3II(Flag2&&!Flag4)&&!Flag5)&&!(Flag51|Flag6&&!Flag4)...,檢索條件包含的域非常多,與或非的運算非常復(fù)雜,那么常規(guī)的檢索方法將耗費很長的時間;如果對Flagl-FlagN都建索引,則在大數(shù)據(jù)量的情形下將增加不少存儲,即1"更如此,速度仍然比較慢。采用本發(fā)明的方法,具體處理過程如下所示將Flagl-FlagN合并到一個域,定義為Flag,使用二進制類型(或8字節(jié)的長整數(shù)),寬度為64bit,每個子域(Flagl-FlagN)占據(jù)一個bit,0表示False,l表示true。定義每個子域(Flagl-FlagN)的掩碼寬度為64bit的長整數(shù)(8字節(jié)),每個bit代表一個子域(Flag-FlagN),某個bit為l(其余bit均為0)的長整數(shù)即是相應(yīng)的Flag的掩碼,如第一個bit為l的長整數(shù)是Flagl的掩碼。為了方便程序運算,在掩碼的基礎(chǔ)上,定義一組函數(shù)boolIsSet(char*FlagName)、voidSet(char*FlagName)、voidClear(char*FlagName),分另ll用于判斷某個Flag是否被設(shè)置、設(shè)置某個Flag的bit位、清除某個Flag的bit位,F(xiàn)lagName的取值范圍為Flag1-FlagN。定義Flag到函數(shù)的映射表isset—map〈FlagName,IsSet*>,set—map〈FlagName,Set*〉,clear—map<FlagName,Clear*〉,才艮4居FlagName可以4戈到^f應(yīng)的IsSet、Set、Clear函數(shù)指針。插入、更新記錄時,若某個Flag需要被設(shè)置,則根據(jù)子域名Flagl-FlagN到seLmap里找到Set函數(shù),若某個Flag需要清除,則到clea匸map里找到Clear函數(shù),然后將Set或Clear函數(shù)施加到合并域上,即完成對應(yīng)子域的bit位的設(shè)置或清除。分解檢索請求,為方便描述,只取前6個Flag,即Flagl-Flag6。得到查詢域Attrl、Attr2,條件域Flagl-Flag6,并得到運算表達式(Flagl&&Flag3II(Flag2&&!Flag4)&&!Flag5)&&!(Flag5||Flag6&&!Flag4)。根據(jù)FlagName到isset—map里找到Flag1-Flag6的IsSet函數(shù),假設(shè)為F1-F6,則表達式可以被轉(zhuǎn)化為含函數(shù)指針的表達式(F1&&F3II(F2&&!F4)&&!F5)&&!(F5||F6&&!F4)。從數(shù)據(jù)庫IO中導(dǎo)出全部記錄的Attrl、Attr2、Flag(合并域)到內(nèi)存,遍歷每一條記錄,對該記錄的Flag域的值進行運算(Fl(Flag)&&F3(Flag)II(F2(Flag)&&!F4(Flag))&&!F5(Flag))&&!(F5(Flag)||F6(Flag)&&!F4(Flag)),計算結(jié)果為0或1,表示該記錄應(yīng)被過濾或輸出。對于某些查詢,例如只需要知道數(shù)據(jù)庫10中是否有符合條件的記錄,而不需要知道具體哪條記錄符合條件時,直接將全部記錄的Flag域進行或邏輯操作,得到一個匯總的Flag,然后將含函數(shù)指針的運算表達式施加在這個匯總的Flag上,計算得出l或O,即存在或不存在,這是一個非常快速的過程,比常規(guī)方法的效率要高出很多。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。權(quán)利要求1、一種數(shù)據(jù)庫檢索系統(tǒng),包括數(shù)據(jù)庫及與其交互的檢索裝置,其特征在于,所述數(shù)據(jù)庫包括域處理單元,將所述數(shù)據(jù)庫中的多個域處理成一合并域,并對所述合并域中的各子域進行操作設(shè)置;寫操作單元,根據(jù)各子域的操作設(shè)置向所述各子域存入數(shù)據(jù);所述檢索裝置包括解析單元,對用戶輸入的查詢語句進行解析,得到與所述各子域的操作設(shè)置相關(guān)的運算表達式;檢索單元,利用所述解析單元得到的所述運算表達式在從數(shù)據(jù)庫導(dǎo)出的合并域中進行查找。2、根據(jù)權(quán)利要求l所述的數(shù)據(jù)庫檢索系統(tǒng),其特征在于,所述域處理單元包括域合并模塊,將數(shù)據(jù)庫中的多個域處理成一合并域,所述合并域包含多個子域;操作設(shè)置模塊,構(gòu)建與所述各子域具有映射關(guān)系的操作函數(shù)。3、根據(jù)權(quán)利要求2所述的數(shù)據(jù)庫檢索系統(tǒng),其特征在于,所述解析單元包括分析模塊,對用戶輸入的查詢語句進行分析,確定與合并域中各子域?qū)?yīng)的運算表達式;設(shè)置關(guān)聯(lián)模塊,將所述各子域的操作函數(shù)關(guān)聯(lián)到所述各子域?qū)?yīng)的運算表達式,得到合并域的運算表達式。4、根據(jù)權(quán)利要求3所述的數(shù)據(jù)庫檢索系統(tǒng),其特征在于,所述檢索單元包括數(shù)據(jù)提取模塊,將合并域從數(shù)據(jù)庫中導(dǎo)出;查詢模塊,利用所述運算表達式在從數(shù)據(jù)庫導(dǎo)出的合并域中進行查找。5、一種數(shù)據(jù)庫檢索方法,其特征在于,所述方法包括A.將數(shù)據(jù)庫中的多個域處理成一合并域,并對所述合并域中的各子域進行操作設(shè)置;B.根據(jù)各子域的操作設(shè)置向所述各子域存入數(shù)據(jù);C.對用戶輸入的查詢語句進行解析,得到與合并域中各子域的操作設(shè)置相關(guān)的運算表達式;D.利用所述運算表達式在從數(shù)據(jù)庫導(dǎo)出的合并域中進行查找。6、根據(jù)權(quán)利要求5所述的數(shù)據(jù)庫檢索方法,其特征在于,所述步驟A中對各子域進行操作設(shè)置的過程包括構(gòu)建與各子域具有映射關(guān)系的操作函數(shù)。7、根據(jù)權(quán)利要求6所述的數(shù)據(jù)庫檢索方法,其特征在于,所述操作函數(shù)包括寫操作函數(shù)和讀操作函數(shù)。8、根據(jù)權(quán)利要求7所述的數(shù)據(jù)庫檢索方法,其特征在于,所述寫操作函數(shù)包括設(shè)置函數(shù)和清除函數(shù),所述讀操作函數(shù)包括查詢函數(shù)。9、根據(jù)權(quán)利要求8所述的數(shù)據(jù)庫檢索方法,其特征在于,所述步驟B包括通過各子域的寫操作函數(shù)在數(shù)據(jù)庫中插入數(shù)據(jù)或更新數(shù)據(jù)。10、根據(jù)權(quán)利要求9所述的數(shù)據(jù)庫檢索方法,其特征在于,所述步驟C包括C1.對用戶輸入的查詢語句進行分析,確定與合并域中各子域?qū)?yīng)的運算表達式;C2.根據(jù)運算表達式中的子域名得到操作函數(shù)中的讀操作函數(shù);C3潛讀操作函數(shù)關(guān)聯(lián)到各子域的運算表達式,從而生成合并域的運算表達式。11、根據(jù)權(quán)利要求10所述的數(shù)據(jù)庫檢索方法,其特征在于,所述查詢語句包括結(jié)構(gòu)化查詢語言。12、根據(jù)權(quán)利要求ll所述的數(shù)據(jù)庫檢索方法,其特征在于,所述步驟D包括D1.從數(shù)據(jù)庫中導(dǎo)出合并域;D2.調(diào)用合并域的運算表達式,并利用所述運算表達式在合并域中進行查找。13、根據(jù)權(quán)利要求12所述的數(shù)據(jù)庫檢索方法,其特征在于,若查詢記錄M是否存在于數(shù)據(jù)庫中,則所述步驟D2包括D21.對從數(shù)據(jù)庫中導(dǎo)出的合并域進行或邏輯操作;D22.利用所述運算表達式在所述合并域的或邏輯操作結(jié)果中查找所述記錄M。14、根據(jù)權(quán)利要求12所述的數(shù)據(jù)庫檢索方法,其特征在于,所述步驟D2進一步包括利用所述運算表達式在每條記錄的合并域中查找記錄M的詳細內(nèi)容。全文摘要本發(fā)明提供了一種數(shù)據(jù)庫檢索方法及系統(tǒng)。所述方法包括以下步驟A.將數(shù)據(jù)庫中的多個域處理成一合并域,并對各子域進行操作設(shè)置;B.根據(jù)各子域的操作設(shè)置向所述各子域存入數(shù)據(jù);C.對用戶輸入的查詢語句進行解析,得到與合并域中各子域的操作設(shè)置相關(guān)的運算表達式;D.利用所述運算表達式在從數(shù)據(jù)庫導(dǎo)出的合并域中進行查找。所述系統(tǒng)包括數(shù)據(jù)庫和檢索裝置,數(shù)據(jù)庫包括域處理單元和寫操作單元,檢索裝置包括解析單元和檢索單元。本發(fā)明在進行數(shù)據(jù)庫檢索的過程中,將多個域合并為一個域,然后通過與合并域中各子域的操作設(shè)置相關(guān)的運算表達式進行檢索,不僅降低了數(shù)據(jù)存儲量,并且提高了檢索效率。文檔編號G06F17/30GK101441654SQ20081018666公開日2009年5月27日申請日期2008年12月16日優(yōu)先權(quán)日2008年12月16日發(fā)明者禹榮凌申請人:騰訊科技(深圳)有限公司