用于處理數(shù)據(jù)庫查詢的計算機實現(xiàn)的方法和計算機系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及用于處理數(shù)據(jù)庫查詢的計算機實現(xiàn)的方法和計算機系統(tǒng)。更具體而言,涉及一種用于處理數(shù)據(jù)庫中的查詢的計算機實現(xiàn)的方法,該查詢包括搜索值。數(shù)據(jù)庫包括多個數(shù)據(jù)集,該數(shù)據(jù)集包括條目,其中距離統(tǒng)計數(shù)據(jù)被分配給該數(shù)據(jù)集。距離統(tǒng)計數(shù)據(jù)描述該多個數(shù)據(jù)集的數(shù)據(jù)集的條目的值與參考值之間的最小距離和最大距離。該方法包括確定搜索值和參考值之間的距離,所述確定產(chǎn)生搜索距離,從該多個數(shù)據(jù)集中確定對于其的搜索距離在由各自的距離統(tǒng)計數(shù)據(jù)描述的最小距離和最大距離所給出的限制內(nèi)的數(shù)據(jù)集的子集,并且在數(shù)據(jù)集的該子集中搜索搜索值。
【專利說明】
用于處理數(shù)據(jù)庫查詢的計算機實現(xiàn)的方法和計算機系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及數(shù)據(jù)庫查詢,并且更具體而言,涉及限制由數(shù)據(jù)庫查詢造成的讀操作。
【背景技術(shù)】
[0002]現(xiàn)代數(shù)據(jù)倉庫的挑戰(zhàn)之一是每個數(shù)據(jù)庫查詢必須被處理的數(shù)據(jù)量。在用于每個查詢的樸素方法中,對于單個查詢表達式將必須搜索整個數(shù)據(jù)庫。
[0003]為了限制資源消耗和對盤的輸入/輸出操作的量,在本領(lǐng)域中已知一種對包括在數(shù)據(jù)庫中的數(shù)據(jù)引入低級別的統(tǒng)計數(shù)據(jù)的方法。在這種方法中,對非常小的數(shù)據(jù)塊保持一些基本的統(tǒng)計數(shù)據(jù)。例如,對于每個數(shù)據(jù)塊,確定特定列的條目的最小值和最大值。如果查詢詢問被確定為不在由該最小值和最大值給定的范圍內(nèi)的數(shù)據(jù),則該數(shù)據(jù)塊將根本就不從盤中被讀取,因為在該數(shù)據(jù)子集中不會找到所搜索的數(shù)據(jù)。
[0004]但是,這種方法有限制,就是它對包括字符的表達式工作不高效,因為引入列的條目的最小值和最大值的方法對于排序數(shù)據(jù)庫中的整數(shù)或浮點類型的條目工作得最好。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目標是提供用于處理數(shù)據(jù)庫中的查詢的改進的計算機實現(xiàn)的方法、計算機程序產(chǎn)品和對應(yīng)的控制系統(tǒng),如在獨立權(quán)利要求中所給出的。本發(fā)明的實施例在從屬權(quán)利要求中給出。如果本發(fā)明的實施例不相互排斥,則它們可以彼此自由地組合。
[0006]在一方面,本發(fā)明涉及用于處理數(shù)據(jù)庫中的查詢的計算機實現(xiàn)的方法,其中該查詢包括搜索值。數(shù)據(jù)庫包括多個數(shù)據(jù)集并且該數(shù)據(jù)集包括條目,例如像整數(shù)值、字符值、字符串或任何其它類型的數(shù)據(jù)。數(shù)據(jù)集具有分配給其的距離統(tǒng)計數(shù)據(jù)。距離統(tǒng)計數(shù)據(jù)描述該多個數(shù)據(jù)集中的數(shù)據(jù)集的條目的值與參考值之間的最小距離和最大距離。
[0007]—旦包括搜索值的查詢被接收,用于處理查詢的方法就以確定搜索值與參考值之間的距離開始,其中所述確定產(chǎn)生搜索距離。一旦搜索距離已被確定,就從該多個數(shù)據(jù)集中確定對于其的搜索距離在由各自的距離統(tǒng)計數(shù)據(jù)描述的最小距離和最大距離給定的限制內(nèi)的數(shù)據(jù)集的子集。然后,對搜索值的搜索只在數(shù)據(jù)集的所述子集中進行。
[0008]如這里所引入的,“距離”描述對兩個表達式之間的相似性的測度。如后面將描述的,表達式之間的這種相似性可以以多種方式計算。一個簡單的例子是漢明(Hamming)距離的計算,漢明距離代表兩個表達式共同具有的位數(shù)。另外,在本公開內(nèi)容的意義上,“距離”可以指兩個數(shù)字之間的距離。在這種情況下,距離將是兩個數(shù)字之間的數(shù)值差。
[0009]實施例可以具有這樣的優(yōu)點:通過所描述的一方面搜索值和參考值的相似性與另一方面參考值和數(shù)據(jù)集的內(nèi)容的相似性的比較,可以實現(xiàn)最有可能包括被搜索的值的數(shù)據(jù)集的預(yù)選擇。如果例如確定數(shù)據(jù)集與搜索值相比與參考值更不相似,則將不必從該數(shù)據(jù)集搜索搜索值,因為搜索值很不可能被包括在該數(shù)據(jù)集中。因此,在數(shù)據(jù)庫中對搜索值的搜索可以被限定到減少數(shù)量的數(shù)據(jù)集,由此減少用于在數(shù)據(jù)庫中找到搜索值的I/O操作次數(shù)和對應(yīng)的計算工作量。[ΟΟ? O]在一些實施例中,參考值是多個參考值之一,其中距離統(tǒng)計數(shù)據(jù)包括對于每個參考值的最小距離和最大距離。在這種情況下,對每個參考值執(zhí)行搜索距離的確定,從而產(chǎn)生搜索距離集合。然后,對該搜索距離集合中的每個搜索距離執(zhí)行數(shù)據(jù)集的子集的確定。必須注意的是,根據(jù)本實施例,數(shù)據(jù)集的子集將只包括匹配搜索距離在由對于每個參考值的最小距離和最大距離給定的限制內(nèi)的條件的數(shù)據(jù)集。因此,如果至少對于一個參考值該搜索距離不在數(shù)據(jù)集的最小距離和最大距離之間,則該數(shù)據(jù)集將不被包括在要搜索搜索值的數(shù)據(jù)集的子集中。
[0011]實施例可以具有這樣的優(yōu)點:通過引入多個參考值而不是單個參考值,從該多個數(shù)據(jù)集中對數(shù)據(jù)集的預(yù)選擇的粒度可以提高。依賴于搜索值,會有可能單個參考值將產(chǎn)生搜索距離在由各自的距離統(tǒng)計數(shù)據(jù)的最小/最大距離給定的限制內(nèi)的大量數(shù)據(jù)集。如果搜索值與參考值高度不相似,或者換句話說,如果搜索值與參考值之間的距離非常高,情況尤其如此。但是,搜索值到第二參考值的距離可能小得多,由此在確定第二參考值與數(shù)據(jù)庫的數(shù)據(jù)集的相似性時產(chǎn)生更多的信息。因此,對數(shù)據(jù)集的子集的預(yù)選擇可以通過引入越來越多的參考值來改進,因為隨著參考值的數(shù)量增加,找到與搜索值非常相似的一個參考值的可能性也將增加。
[0012]在一些實施例中,該方法還包括從該多個搜索距離中確定最小搜索距離和相應(yīng)的第一參考值。在這種情況下,從該多個數(shù)據(jù)集中確定數(shù)據(jù)集的子集只考慮對于第一參考值的最小距離和最大距離。
[0013]實施例可以具有這樣的優(yōu)點:通過確定最小搜索距離來確定與搜索值最相似的參考值,可以確定將為給定的搜索值提供關(guān)于數(shù)據(jù)集的內(nèi)容的最有代表性的信息的距離統(tǒng)計數(shù)據(jù)集合。如果所確定的第一參考值與數(shù)據(jù)集的內(nèi)容之間的相似性非常高,則搜索值和該數(shù)據(jù)集的內(nèi)容之間的相似性也將非常高。
[0014]在一些實施例中,參考值的字符數(shù)小于或等于數(shù)據(jù)集的每個條目的最大字符數(shù)。例如,如果數(shù)據(jù)集沒有條目的長度超過十個字符,則不應(yīng)當選擇使其長于十個字符的參考值。
[0015]實施例可以具有這樣的優(yōu)點:通過將參考值的字符數(shù)限制到條目的最大字符數(shù),不會引入?yún)⒖贾蹬c數(shù)據(jù)集的條目之間的不必要的不相似性。例如參考漢明距離,如果沒有條目比十個字符長但參考值是例如13個字符長,則數(shù)據(jù)集的條目與參考值之間的不相似性將總是大于或等于3。
[0016]在一些實施例中,數(shù)據(jù)集和數(shù)據(jù)集的條目按字典順序排序,其中參考值是完全相同的字符的序列。例如可以使用26個參考值,其中參考值是例如拉丁語字母表的十個完全相同的字母的序列。在這種情況下,例如包括數(shù)據(jù)庫的前十個條目的數(shù)據(jù)集將比例如數(shù)據(jù)庫的最后十個條目具有與包括全A的參考值的統(tǒng)計上更高的相似性,因為數(shù)據(jù)庫的前面的條目或者至少其子集將以字母“Α”開始。因此,數(shù)據(jù)庫條目的字符中的至少一個字符與參考值的字符相同。作為結(jié)果,如果參考值如前面所描述的那樣被選擇,則參考值將與指示條目的第一起始字符到條目的第二起始字符之間的過渡的索引類似地起作用。
[0017]在一些實施例中,參考值是任意的字符序列。
[0018]在又一實施例中,參考值的字符序列適應(yīng)于被包括在數(shù)據(jù)集的條目中的值的字符序列。例如,如果數(shù)據(jù)庫包括五個條目,這些條目以詞“conf idence”、“contract”、“constitut1n”、“control”和“connect1n”開始,則選擇也以字母“con”開始的參考值會是可行的。另一個例子將是包括全都以“WWW”開始的因特網(wǎng)地址的數(shù)據(jù)庫。另一種使參考值適應(yīng)于數(shù)據(jù)集的條目中所包括的值的可能性可以是確定某個字符在數(shù)據(jù)庫的條目的某一位上的頻率。然后,參考值可以被選擇為使得它只包括被發(fā)現(xiàn)在條目的各個位上具有最高頻率的那些字符。
[0019]在一些實施例中,參考值被選擇為使得對于每個參考值,該參考值與其余參考值之間的距離等于或大于該參考值與具有相同字符數(shù)的表達式之間的最大可能距離。如果例如距離是通過比較兩個表達式的各個位來確定的(Hamming距離),則包括八位的參考值應(yīng)當離所有其它參考值至少具有距離8。
[0020]實施例可以具有這樣的優(yōu)點:通過選擇不相似性最大的參考值,通過比較搜索值與參考值所獲得的信息被最大化。例如,如果兩個參考值非常相似,則搜索值與參考值的比較會對兩個參考值都產(chǎn)生相同的距離。因此,與其中僅一個參考值被使用的情況相比,數(shù)據(jù)集的對應(yīng)距離統(tǒng)計數(shù)據(jù)將不會帶來任何附加的信息。因此,通過引入兩個相似的參考值不會獲得太多的信息。但是,如果參考值完全不相似,則與搜索值的比較將給出關(guān)于數(shù)據(jù)集的內(nèi)容的更多信息。
[0021]在一些實施例中,包括在條目中的數(shù)據(jù)是字符(CHAR)和/或可變字符字段(VARCHAR)數(shù)據(jù)。
[0022]在一些實施例中,在條目的值或搜索值與參考值之間確定的距離是最小編輯距離。最小編輯距離反映從第一表達式到達第二表達式所需的編輯操作的最小數(shù)目。例如,為了從表達式“Stop”到達表達式“step”,只需要用字母“e”代替字母V’。因此,這兩個表達式之間的最小編輯距尚將是I。
[0023]在一些實施例中,編輯距離是根據(jù)Levenshtein度量來確定的。從第一表達式到達第二表達式必須要執(zhí)行的操作通常是字母的替換、字母的刪除或字母的插入。根據(jù)Levenshte in度量,這些操作當中的每一個都具有被分配的成本值。通過對從第一表達式到達第二表達式所必需的所有操作的總成本進行計數(shù),可以確定兩個表達式之間的Levenshte in 距離。
[0024]實施例可以具有這樣的優(yōu)點=Levenshtein度量容易計算并且因此用于數(shù)據(jù)集的距離統(tǒng)計數(shù)據(jù)可以例如在用條目填充數(shù)據(jù)庫時被計算,由此不會在確定對應(yīng)的距離值時造成過多的開銷。
[0025]在另一方面,本發(fā)明涉及用于確定用于數(shù)據(jù)集的距離統(tǒng)計數(shù)據(jù)的方法,該數(shù)據(jù)集包括條目。該方法包括定義至少一個參考值并且為每個條目確定該條目的值與參考值之間的距離。這種確定產(chǎn)生距離集合。從這個距離集合確定最小距離和最大距離。然后,所確定的最小距離和最大距離都作為距離統(tǒng)計數(shù)據(jù)被分配給數(shù)據(jù)集。
[0026]在還有另一方面,本發(fā)明涉及包括執(zhí)行所述方法的方法步驟的計算機可執(zhí)行指令的計算機程序產(chǎn)品。
[0027]如本領(lǐng)域技術(shù)人員將認識到的,本公開內(nèi)容的各方面可以體現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本公開內(nèi)容的各方面可以采取可以在本文被統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”的完全硬件實施例、完全軟件實施例(包括固件、駐留軟件、微代碼等)或者結(jié)合軟件方面和硬件方面的實施例的形式。此外,本公開內(nèi)容的各方面可以采取體現(xiàn)在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該一個或多個計算機可讀介質(zhì)具有在其上體現(xiàn)的計算機可讀程序代碼。
[0028]可以使用一種或多種計算機可讀介質(zhì)的任何組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)可以是,例如但不限于,電、磁、光、電磁、紅外線或者半導(dǎo)體系統(tǒng)、裝置或設(shè)備,或者以上所述的任何合適組合。計算機可讀存儲介質(zhì)的更具體例子(非窮盡列表)將包括以下:具有一條或多條電線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(R0M)、可擦式可編程只讀存儲器(EPR0M或者閃存存儲器)、光纖、便攜式壓縮盤只讀存儲器(CDROM)、光學(xué)存儲設(shè)備、磁性存儲設(shè)備或者以上所述的任何合適組合。在本文的上下文中,計算機可讀存儲介質(zhì)可以是可以包含或存儲由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或者與其聯(lián)合使用的程序的任何有形介質(zhì)。
[0029]計算機可讀信號介質(zhì)可以包括例如在基帶中或者作為載波的一部分的傳播數(shù)據(jù)信號,計算機可讀程序代碼被體現(xiàn)在該傳播數(shù)據(jù)信號中。這種傳播信號可以采取多種形式中的任何一種,包括但不限于電磁、光或者其任何合適的組合。計算機可讀信號介質(zhì)可以是非計算機可讀存儲介質(zhì)并且可以傳送、傳播或運輸由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或者與其聯(lián)合使用的程序的任何計算機可讀介質(zhì)。
[0030]體現(xiàn)在計算機可讀介質(zhì)上的程序代碼可以利用任何適當?shù)慕橘|(zhì)傳輸,該介質(zhì)包括但不限于無線、有線線路、光纖電纜、RF等,或者前述這些的任何合適組合。
[0031]用于執(zhí)行本發(fā)明的各方面的操作的計算機程序代碼可以用一種或多種編程語言的任何組合來寫,該編程語言包括面向?qū)ο蟮木幊陶Z言,諸如Java、Smalltalk、C++等,及常規(guī)的過程化編程語言,諸如“C"編程語言或類似的編程語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為獨立的軟件包執(zhí)行、部分在用戶的計算機上部分在遠程計算機上執(zhí)行、或者完全地在遠程計算機或服務(wù)器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任何類型的網(wǎng)絡(luò)連接到用戶計算機,該網(wǎng)絡(luò)包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN),或者可以連接到外部計算機(例如,利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
【附圖說明】
[0032]在下面,僅僅作為例子參考附圖更詳細地解釋本發(fā)明的實施例,其中:
[0033]圖1繪出了描述計算兩個表達式之間的距離的第一種可能性的圖示。
[0034]圖2繪出了描述計算兩個表達式之間的距離的第二種可能性的圖示。
[0035]圖3繪出了數(shù)據(jù)庫和對應(yīng)的距離統(tǒng)計數(shù)據(jù)的例子。
[0036]圖4繪出了用于確定數(shù)據(jù)集的子集的方法的流程圖。
[0037]圖5繪出了計算機系統(tǒng)的框圖。
【具體實施方式】
[0038]圖1是關(guān)于如何確定兩個表達式之間的距離的例子。在這里繪出的例子中,有兩對表達式:“INTENT1N” 和 “EXECUT1N” 作為第一對,以及 “EFFICIENT” 和 “INEFFICIENT” 作為第二對。在圖1所繪出的第一個例子中,確定表達式“INTENT1N”與“EXE⑶ΤΙ0Ν”之間的漢明距離。
[0039]漢明距離描述兩個表達式有多少位不同。如圖la)中所示,兩個表達式的前五位不相同。后四位,“T”、“I”、“O”和“N”對于兩個表達式是相同的位。因此,表達式“INTENT1N”與?ΧΕ⑶ΤΙ0Ν”之間的漢明距離是五,因為對于這兩個表達式有五位不相同。確定兩個表達式之間的漢明距離可以是確定距離的容易方式,但是,兩個表達式可能非常相似而兩個表達式之間的漢明距離非常大。例如,如圖1b)中所繪出的,第一個表達式是“EFFICIENT”并且第二個表達式是“INEFFICIENT”。由于兩個表達式的公共部分“EFFICIENT”的各個字符被偏移了兩個字母,因此兩個表達式之間的漢明距離將是10,因為只有第六位“I”對兩個表達式是相同的。因此,盡管兩個表達式非常相似,但是漢明距離被確定為非常高。
[0040]用于確定兩個表達式之間的距離的另一個例子在圖2中繪出并且被稱為最小編輯距離。最小編輯距離描述為了從第一個表達式到達第二個表達式必須要執(zhí)行多少編輯步驟。就像在圖1a)中,用于圖2a)中的例子的兩個表達式是“INTENT1N”和“EXECUT1N”。
[0041 ]在第一步,表達式“INTENT1N”的三個字母被其它字母替換。被替換的位是該表達式的第二、第三和第五位。字母的替換在本文中由“s”指示。在后續(xù)步驟中,該表達式的第一個字母被刪除,如由“d”指示的。為了從這樣找出的表達式到達表達式“ΕΧΕ⑶ΤΙ0Ν”,字母“C”必須插入在“Ε”和“U”之間,如由小“i”指示的。因此,需要五個編輯步驟來從表達式“INTENT1N”到達表達式“ΕΧΕ⑶TI ON”:三個字母替換、一個字母刪除和一個字母插入。當然,可以有其它途徑從第一個表達式到達第二個表達式,但是,如由名字“最小”編輯距離指示的,最小編輯距離總是對應(yīng)于編輯步驟的最小次數(shù)。
[0042]如果在圖2a)中繪出的例子中每個操作具有成本值I,則這將導(dǎo)致兩個表達式之間為5的總距離。但是,還有可能向不同的操作分配其它成本值。例如,用另一個字母替換字母可以被分配成本值2。在這種情況下,表達式“INTENT1N”與“EXE⑶ΤΙ0Ν”之間的距離將是8。成本值向各個編輯操作的這種分配可以適應(yīng)于數(shù)據(jù)庫中條目的類型。
[0043 ] 回到之前提到的兩個表達式“EFFICIENT”與“ I NEFFICIENT”的相似性的例子,“EFFICIENT”與“INEFFICIENT”之間的最小編輯距離將是2,因為只須插入兩個字母來從“EFFICIENT”到達“INEFFICIENT”,如圖2b)中所示。因此,與之前所描述的這兩個表達式之間的漢明距離將是11相比,這兩個表達式之間的距離將是2。因此,在定義使用哪種距離時要謹慎。
[0044]圖1中所繪出的例子僅僅針對包括字母的表達式。但是,如果數(shù)據(jù)庫包括例如數(shù)字(整數(shù)、浮點數(shù)、…),則兩個數(shù)字之間的距離可以被定義為兩個數(shù)字之間的數(shù)值差。但是,也有可能使用最小編輯距離來從一串數(shù)字到達另一串數(shù)字。
[0045]圖3是包括20個條目的數(shù)據(jù)庫100的例子。這20個條目是詞escape、ahead、solo、stopwatch、slowdown、confidence、Cherokee、iron、company、earth、resistor、magnitude、wave、firearm、cement、contract、marker、distance、length 和mouse ο 這 20 個表達式被細分成四個數(shù)據(jù)集102、104、106和108,每個數(shù)據(jù)集包括五個表達式。分配給這些數(shù)據(jù)集的是距離統(tǒng)計數(shù)據(jù)110。在下文中,將討論那些距離統(tǒng)計數(shù)據(jù)110的確定以及數(shù)據(jù)庫查詢的例子。
[0046]在圖3中所繪出的例子中,兩個參考值是10次字母“O”的序列作為參考值I(Ref1)以及10次字母“E”的序列作為參考值2(Ref2)。選擇10位的參考值長度是看似有道理的,因為數(shù)據(jù)庫中的最長條目,即“confidence”,也包括十位。
[0047]關(guān)注第一個數(shù)據(jù)集102,包括在第一個數(shù)據(jù)集102中的表達式到第一參考值(Ref1)的各個距離的確定在下文中描述。
[0048]第一個表達式“escape”沒有與參考值Ref1共同的字母。如果距離被定義為兩個表達式之間的最小編輯距離,其中每個編輯操作具有成本值I,則表達式“escape”與十個O的序列之間的距離是10。由于后續(xù)表達式“ahead”也沒有與參考值共同的字母,因此對應(yīng)的距離也是10。第一個數(shù)據(jù)集102的第三個表達式是“solo”。因為詞“solo”與第一參考值如^有兩個共同的字母,所以第三個數(shù)據(jù)庫條目與第一參考值Ref1之間的距離是8。第一個數(shù)據(jù)集102的第四個條目“stopwatch”與Ref1只有一個共同的字母,因此距離是9。第一個數(shù)據(jù)集102的第五個條目“slowdown”與第一參考值有共同的兩位,因此距離是8。
[0049]因此,對于第一個數(shù)據(jù)集102,條目離第一參考值的最小距離是8,其中第一個數(shù)據(jù)集102的條目離第一參考值的最大距離是10。這個信息存儲在距離統(tǒng)計數(shù)據(jù)110中。
[0050]相應(yīng)地進行用于其余數(shù)據(jù)集104、106和108的距離統(tǒng)計數(shù)據(jù)的確定。在圖3中給出數(shù)據(jù)集離第一參考值的最小距離和最大距離的結(jié)果。對是10次字母“E”的第二參考值Ref2也進行距離值的相同確定。雖然第一個數(shù)據(jù)集102中的第一個表達式“escape”離第一參考值Ref i有距離10,但是表達式“escape”與第二參考值Ref 2之間的距離僅為8,因為表達式“escape”包括兩個e。因此,對于第二參考值的距離統(tǒng)計數(shù)據(jù)與對于第一參考值的距離統(tǒng)計數(shù)據(jù)不同。
[0051]由于如前所述的距離統(tǒng)計數(shù)據(jù)的確定將不產(chǎn)生顯著的計算工作量,因此可以例如在一旦數(shù)據(jù)庫加載有條目時執(zhí)行距離統(tǒng)計數(shù)據(jù)的確定。為此,參考值應(yīng)當在用條目填充數(shù)據(jù)庫之前或之后很短時間內(nèi)被定義。
[0052]為了給出數(shù)據(jù)庫查詢的例子,例如可以接收對表達式“Cherokee”的查詢。為了限制對圖3中所繪出的數(shù)據(jù)庫的讀操作,第一步將是確定要搜索的表達式與參考值中的一個之間的搜索距離。例如,項“Cherokee”與第一參考值Ref1之間的距離是9。如可以從距離統(tǒng)計數(shù)據(jù)110看到的,每個數(shù)據(jù)集提供包括值9的距離范圍。因此,如果第一參考值被用于選擇數(shù)據(jù)集的子集,則對項“Cherokee”的搜索將必須在每個數(shù)據(jù)集中執(zhí)行。
[0053]但是,如果利用第二參考值Ref2確定搜索距離,則確定項“Cherokee”離第二參考值Ref2具有距離7。如從圖2中所繪出的表可以看到的,只有第二個數(shù)據(jù)集104提供包括距離7的距離范圍。因此,根據(jù)本公開內(nèi)容,對項“Cherokee”的搜索將只在第二數(shù)據(jù)集104中執(zhí)行,因為距離統(tǒng)計數(shù)據(jù)指示項“Cherokee”將不會在數(shù)據(jù)集102、106和108中找到。因此,為了找到被包括在數(shù)據(jù)庫查詢中的搜索值,將只須搜索數(shù)據(jù)庫的四分之一。
[0054]圖4是示出用于處理數(shù)據(jù)庫中的查詢的方法的流程圖。根據(jù)實施例,查詢包括搜索值。在第一方法步驟200中,通過確定搜索值與參考值之間的距離確定搜索距離。
[0055]一旦在步驟200中確定了搜索距離,就在步驟202中訪問第一數(shù)據(jù)集的距離統(tǒng)計數(shù)據(jù)。在步驟204中,確定搜索距離是否在由被包括在數(shù)據(jù)集的距離統(tǒng)計數(shù)據(jù)中的最小距離和最大距離給定的限制內(nèi)。如果確定搜索距離不在由數(shù)據(jù)集的距離統(tǒng)計數(shù)據(jù)給定的限制內(nèi),則該數(shù)據(jù)集不添加到要搜索搜索值的數(shù)據(jù)集的子集并且因此對于搜索206來說被忽略。然后,方法回到步驟202并且訪問用于另一數(shù)據(jù)集的距離統(tǒng)計數(shù)據(jù)。
[0056]但是,如果確定搜索距離實際上在由被包括在數(shù)據(jù)集的距離統(tǒng)計數(shù)據(jù)中的最小距離和最大距離給定的限制內(nèi),則在步驟208中該數(shù)據(jù)集被添加到數(shù)據(jù)集的子集。然后,對被包括在數(shù)據(jù)庫中、要被搜索搜索值的每個數(shù)據(jù)集重復(fù)步驟202、204、206和208,其中步驟202、204、206和208的重復(fù)產(chǎn)生接下來被搜索搜索值的數(shù)據(jù)集的子集。
[0057]圖5示出了系統(tǒng)300中形式為通用計算設(shè)備的計算機系統(tǒng)(或服務(wù)器)312。計算機系統(tǒng)312的部件可以包括但不限于,一個或多個處理器或處理單元316、存儲器系統(tǒng)328、以及將包括存儲器系統(tǒng)328的各種系統(tǒng)部件耦合到處理器316的總線318。
[0058]計算機系統(tǒng)312通常包括各種計算機系統(tǒng)可讀介質(zhì)。這種介質(zhì)可以是可由計算機系統(tǒng)312訪問的任何可用介質(zhì),并且包括易失性介質(zhì)和非易失性介質(zhì),可移除介質(zhì)和不可移除介質(zhì)。
[0059]存儲器系統(tǒng)328可以包括形式為易失性存儲器的計算機系統(tǒng)可讀介質(zhì),諸如隨機存取存儲器(RAM)和/或高速緩存存儲器。存儲器系統(tǒng)可以包括一個或多個活動的緩沖存儲器設(shè)備?;顒拥木彌_設(shè)備可以包括多個存儲器元件(例如,芯片)?;顒拥木彌_存儲器設(shè)備可以包括形成的三維(“3D”)存儲器設(shè)備的存儲器層,其中芯片的各個列形成與處理單元316通信的保管庫(vault)。活動的緩沖存儲器設(shè)備可以包括可同時被多個處理元件訪問的分區(qū),其中分區(qū)可以是任何合適的存儲器段,包括但不限于保管庫。
[0060]處理單元316可以向存儲器系統(tǒng)發(fā)出請求,從而利用動態(tài)數(shù)組數(shù)據(jù)結(jié)構(gòu)和關(guān)聯(lián)的元數(shù)據(jù)來實現(xiàn)應(yīng)用。
[0061]計算機系統(tǒng)312還可以與以下設(shè)備通信:一個或多個外部設(shè)備314,諸如鍵盤、定點設(shè)備、顯示器324等;使用戶能夠與計算機系統(tǒng)312交互的一個或多個設(shè)備;和/或使計算機系統(tǒng)312能夠與一個或多個其它計算設(shè)備通信的任何設(shè)備(例如,網(wǎng)卡、調(diào)制解調(diào)器等)。這種通信可以經(jīng)由(一個或多個)1/0接口 322發(fā)生。還有,計算機系統(tǒng)312可以經(jīng)由網(wǎng)絡(luò)適配器320與一個或多個網(wǎng)絡(luò)通信,該一個或多個網(wǎng)絡(luò)諸如局域網(wǎng)(LAN)、通用的廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò)(例如,因特網(wǎng))。如所繪出的,網(wǎng)絡(luò)適配器320經(jīng)由總線318與計算機系統(tǒng)/服務(wù)器312的其它部件通信。
[0062]本發(fā)明可以是系統(tǒng)、方法和/或計算機程序產(chǎn)品。計算機程序產(chǎn)品可以包括計算機可讀存儲介質(zhì),其上載有用于使處理器實現(xiàn)本發(fā)明的各個方面的計算機可讀程序指令。
[0063]計算機可讀存儲介質(zhì)可以是可以保持和存儲由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計算機可讀存儲介質(zhì)例如可以是但不限于電存儲設(shè)備、磁存儲設(shè)備、光存儲設(shè)備、電磁存儲設(shè)備、半導(dǎo)體存儲設(shè)備或者上述的任何合適的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、靜態(tài)隨機存取存儲器(SRAM)、便攜式壓縮盤只讀存儲器(CD-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機械編碼設(shè)備、例如其上存儲有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任何合適的組合。這里所使用的計算機可讀存儲介質(zhì)不被解釋為瞬時信號本身,諸如無線電波或者其他自由傳播的電磁波、通過波導(dǎo)或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘枴?br>[0064]這里所描述的計算機可讀程序指令可以從計算機可讀存儲介質(zhì)下載到各個計算/處理設(shè)備,或者通過網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計算機或外部存儲設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機、網(wǎng)關(guān)計算機和/或邊緣服務(wù)器。每個計算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計算機可讀程序指令,并轉(zhuǎn)發(fā)該計算機可讀程序指令,以供存儲在各個計算/處理設(shè)備中的計算機可讀存儲介質(zhì)中。
[0065]用于執(zhí)行本發(fā)明操作的計算機程序指令可以是匯編指令、指令集架構(gòu)(ISA)指令、機器指令、機器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語言的任何組合編寫的源代碼或目標代碼,所述編程語言包括面向?qū)ο蟮木幊陶Z言一諸如Smalltalk、C++等,以及常規(guī)的過程式編程語言一諸如“C”語言或類似的編程語言。計算機可讀程序指令可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務(wù)器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任何種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。在一些實施例中,通過利用計算機可讀程序指令的狀態(tài)信息來個性化定制電子電路,例如可編程邏輯電路、現(xiàn)場可編程門陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計算機可讀程序指令,從而實現(xiàn)本發(fā)明的各個方面。
[0066]這里參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個方面。應(yīng)當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機可讀程序指令實現(xiàn)。
[0067]這些計算機可讀程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得這些指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。也可以把這些計算機可讀程序指令存儲在計算機可讀存儲介質(zhì)中,這些指令使得計算機、可編程數(shù)據(jù)處理裝置和/或其他設(shè)備以特定方式工作,從而,存儲有指令的計算機可讀介質(zhì)則包括一個制造品,其包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的各個方面的指令。
[0068]也可以把計算機可讀程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行的指令實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作。
[0069]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
【主權(quán)項】
1.一種用于處理數(shù)據(jù)庫中的查詢的計算機實現(xiàn)的方法,所述查詢包括搜索值,所述數(shù)據(jù)庫包括多個數(shù)據(jù)集,所述數(shù)據(jù)集包括條目,其中距離統(tǒng)計數(shù)據(jù)被分配給所述數(shù)據(jù)集,所述距離統(tǒng)計數(shù)據(jù)描述所述多個數(shù)據(jù)集中的數(shù)據(jù)集的條目的值與參考值之間的最小距離和最大距離,所述方法包括: 確定所述搜索值與所述參考值之間的距離,所述確定產(chǎn)生搜索距離; 從所述多個數(shù)據(jù)集中確定對于其的搜索距離在由各自的距離統(tǒng)計數(shù)據(jù)描述的最小距離和最大距離給定的限制內(nèi)的數(shù)據(jù)集的子集;及 在數(shù)據(jù)集的所述子集中搜索所述搜索值。2.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中所述參考值是多個參考值之一,其中所述距離統(tǒng)計數(shù)據(jù)包括對于所述參考值中的每一個的最小距離和最大距離,其中所述搜索距離的確定是對所述參考值中的每一個執(zhí)行的,從而產(chǎn)生搜索距離集合,其中數(shù)據(jù)集的所述子集的確定是對所述搜索距離集合中的每個搜索距離執(zhí)行的。3.如權(quán)利要求2所述的計算機實現(xiàn)的方法,其中所述方法還包括從多個搜索距離中確定最小搜索距離和相應(yīng)的第一參考值,其中在從所述多個數(shù)據(jù)集中確定數(shù)據(jù)集的所述子集時只考慮對于第一參考值的最小距離和最大距離。4.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中所述參考值的字符數(shù)小于或等于數(shù)據(jù)集的每個條目的最大字符數(shù)。5.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中數(shù)據(jù)集和數(shù)據(jù)集的條目按字典順序排序,其中所述參考值是相同字符的序列。6.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中所述參考值是字符的任意序列。7.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中所述參考值的字符序列適應(yīng)于被包括在數(shù)據(jù)集的條目中的值的字符序列。8.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中所述參考值被選擇為使得對于每個參考值,該參考值與其余參考值之間的距離大于或等于該參考值與具有相同字符數(shù)的表達式之間的最大可能距離。9.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中被包括在條目中的數(shù)據(jù)是字符(CHAR)和/或可變字符字段(VARCHAR)數(shù)據(jù)。10.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中在條目的值或搜索值與參考值之間確定的距離是最小編輯距離。11.如權(quán)利要求10所述的計算機實現(xiàn)的方法,其中所述編輯距離是根據(jù)Levenshtein度量來確定的。12.如權(quán)利要求1所述的計算機實現(xiàn)的方法,還包括: 為多個條目定義至少一個參考值,從而確定所述多個條目中的條目的值與所述參考值之間的距離,所述確定產(chǎn)生距離集合,其中所述多個條目中的每個條目與數(shù)據(jù)集關(guān)聯(lián); 從所述距離集合確定最小距離和最大距離;及 向數(shù)據(jù)集分配所確定的最小距離和最大距離作為距離統(tǒng)計數(shù)據(jù)。13.—種用于處理數(shù)據(jù)庫中的查詢的計算機系統(tǒng),所述查詢包括搜索值,所述數(shù)據(jù)庫包括多個數(shù)據(jù)集,所述數(shù)據(jù)集包括條目,其中距離統(tǒng)計數(shù)據(jù)被分配給所述數(shù)據(jù)集,距離統(tǒng)計數(shù)據(jù)描述所述多個數(shù)據(jù)集中的數(shù)據(jù)集的條目的值與參考值之間的最小距離和最大距離,所述計算機系統(tǒng)包括: 一個或多個處理器、一個或多個計算機可讀存儲器、一個或多個計算機可讀有形存儲設(shè)備,以及存儲在所述一個或多個存儲設(shè)備當中的至少一個上的程序指令,所述程序指令經(jīng)由所述一個或多個存儲器當中的至少一個由所述一個或多個處理器當中的至少一個執(zhí)行,其中所述計算機系統(tǒng)能夠執(zhí)行包括以下步驟的方法: 確定所述搜索值與所述參考值之間的距離,所述確定產(chǎn)生搜索距離; 從所述多個數(shù)據(jù)集中確定對于其的搜索距離在由各自的距離統(tǒng)計數(shù)據(jù)描述的最小距離和最大距離給定的限制內(nèi)的數(shù)據(jù)集的子集;及 在數(shù)據(jù)集的所述子集中搜索所述搜索值。14.如權(quán)利要求13所述的計算機系統(tǒng),其中所述參考值是多個參考值之一,其中所述距離統(tǒng)計數(shù)據(jù)包括對于每個參考值的最小距離和最大距離,其中所述搜索距離的確定是對所述參考值中的每一個執(zhí)行的,從而產(chǎn)生搜索距離集合,其中數(shù)據(jù)集的所述子集的確定是對所述搜索距離集合中的每個搜索距離執(zhí)行的。15.如權(quán)利要求14所述的計算機系統(tǒng),其中所述方法還包括從所述多個搜索距離中確定最小搜索距離和相應(yīng)的第一參考值,其中在從所述多個數(shù)據(jù)集確定數(shù)據(jù)集的所述子集時只考慮對于第一參考值的最小距離和最大距離。16.如權(quán)利要求13所述的計算機系統(tǒng),其中所述參考值的字符數(shù)小于或等于數(shù)據(jù)集的每個條目的最大字符數(shù)。
【文檔編號】G06F17/30GK105893453SQ201610078349
【公開日】2016年8月24日
【申請日】2016年2月4日
【發(fā)明人】L·加扎, A·M·格魯斯?jié)苫? T·卡扎爾斯基, K·K·斯基布斯基, T·斯特蘭多姆斯基
【申請人】國際商業(yè)機器公司