專利名稱::用于可能的安全性暴露的早期告警指示的查詢返回?cái)?shù)據(jù)分析方法
技術(shù)領(lǐng)域:
:本發(fā)明一般地涉及數(shù)據(jù)處理,并特別涉及保護(hù)數(shù)據(jù)庫(kù)免受不當(dāng)或未經(jīng)授權(quán)的訪問的方法。
背景技術(shù):
:數(shù)據(jù)庫(kù)是計(jì)算機(jī)化的信息存儲(chǔ)和檢索系統(tǒng)。關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)是使用用于存儲(chǔ)和檢索數(shù)據(jù)的關(guān)系技術(shù)的計(jì)算機(jī)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)。最普遍的數(shù)據(jù)庫(kù)類型是關(guān)系數(shù)據(jù)庫(kù),即,將數(shù)據(jù)定義為可以用多種不同方式識(shí)別和訪問它的表式數(shù)據(jù)庫(kù)。無論具體架構(gòu)是什么,在DBMS中,請(qǐng)求實(shí)體(例如,應(yīng)用程序或操作系統(tǒng))通過發(fā)出數(shù)據(jù)庫(kù)訪問請(qǐng)求而要求訪問指定數(shù)據(jù)庫(kù)。例如,這種請(qǐng)求可包括簡(jiǎn)單目錄查找請(qǐng)求或用來在數(shù)據(jù)庫(kù)中讀取、改變和添加指定記錄的事務(wù)或事務(wù)的組合。這些請(qǐng)求使用諸如結(jié)構(gòu)化查詢語言(SQL)的高級(jí)查詢語言而做出。作為說明,SQL用來進(jìn)行交互式查詢,所述交互式查詢用于從諸如國(guó)際商業(yè)機(jī)器公司(IBM)的DB2、Microsoft(微軟公司)的SQLServer、以及來自O(shè)racle、Sybase和ComputerAssociates的數(shù)據(jù)庫(kù)產(chǎn)品的數(shù)據(jù)庫(kù)中獲取信息,并更新數(shù)據(jù)庫(kù)。術(shù)語“查詢”是指一組用于從所存儲(chǔ)的數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)的命令。查詢采用命令語言的形式,該命令語言使程序員和程序選擇、插入、更新、找出數(shù)據(jù)的位置等。在數(shù)據(jù)庫(kù)的環(huán)境中,一個(gè)重要問題是安全性。數(shù)據(jù)庫(kù)常常包含需要一定程度的安全性以避免被訪問的機(jī)密或敏感的材料。例如,醫(yī)療記錄被認(rèn)為是高度私人化且機(jī)密的。因而,通常將對(duì)醫(yī)療記錄的訪問權(quán)限制為所選擇的用戶。為此,傳統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)可實(shí)施指定權(quán)限等級(jí)的用戶概要(profile)。用戶是否能訪問某些特定的數(shù)據(jù)將取決于在他們各自的概要中指定的該用戶的權(quán)限等級(jí)。然而,前述途徑是極不靈活且靜態(tài)的。實(shí)際上,這種途徑可能防止用戶訪問比所希望的更寬的數(shù)據(jù)范圍。因此,數(shù)據(jù)庫(kù)的效率可能受到極大限制。另一方面,如果安全性過于放松,則敏感數(shù)據(jù)可能被泄漏。所需要的是數(shù)據(jù)可訪問性和安全性的平衡。為了說明傳統(tǒng)數(shù)據(jù)庫(kù)的缺點(diǎn),例如,考慮這樣的醫(yī)療數(shù)據(jù)庫(kù),其中,允許用戶查看的唯一結(jié)果是門診號(hào)碼,以便保證在數(shù)據(jù)庫(kù)中具有記錄的病人的匿名性。用戶仍然能夠通過使用該用戶已知的信息發(fā)出一系列精心構(gòu)思的查詢,來以相當(dāng)程度的可靠性確定病人的身份。在這里,將這種過程稱為查詢聯(lián)合分析。下面是設(shè)計(jì)用來根據(jù)門診號(hào)碼(該號(hào)碼是唯一地識(shí)別個(gè)人的標(biāo)識(shí)符)和每個(gè)查詢返回的多個(gè)唯一的病人記錄識(shí)別特定個(gè)人的說明性查詢系列。獨(dú)立進(jìn)行時(shí),前述查詢的每一個(gè)都返回適當(dāng)數(shù)目的結(jié)果。然而,總起來說,滿足每個(gè)條件的結(jié)果的數(shù)目將小得多,可能只有一個(gè)人。在確定一個(gè)個(gè)人的門診號(hào)碼之后,用戶可以進(jìn)行返回門診號(hào)碼和任何其它信息的任何查詢,并識(shí)別哪個(gè)信息對(duì)應(yīng)這一個(gè)個(gè)人。上文只是用戶可如何利用傳統(tǒng)數(shù)據(jù)庫(kù)的一個(gè)示例??梢允褂酶鞣N其它破壞性技術(shù)來繞開適當(dāng)設(shè)置以保護(hù)數(shù)據(jù)庫(kù)中包含的數(shù)據(jù)的安全機(jī)制。因此,需要用于數(shù)據(jù)庫(kù)的改進(jìn)安全機(jī)制。
發(fā)明內(nèi)容本發(fā)明一般地旨在一種用于數(shù)據(jù)庫(kù)安全性的方法、系統(tǒng)和工業(yè)產(chǎn)品。在一個(gè)實(shí)施例中,提供一種對(duì)數(shù)據(jù)提供安全性的方法。一個(gè)實(shí)施例包括用戶發(fā)出的對(duì)數(shù)據(jù)庫(kù)的查詢;以及基于以下的至少一項(xiàng)來確定是否存在安全侵害模式(pattern)(i)對(duì)所述查詢相對(duì)于至少一個(gè)其它先前從用戶發(fā)出的查詢進(jìn)行的執(zhí)行前比較分析;以及(ii)對(duì)從所述查詢的執(zhí)行返回的結(jié)果和從至少一個(gè)其它先前發(fā)出的查詢的執(zhí)行返回的結(jié)果進(jìn)行的執(zhí)行后比較分析。對(duì)數(shù)據(jù)提供安全性的另一方法包括從用戶接收多個(gè)查詢;執(zhí)行對(duì)數(shù)據(jù)庫(kù)的所述多個(gè)查詢;接收用戶發(fā)出的對(duì)數(shù)據(jù)庫(kù)的后續(xù)查詢;以及基于所述多個(gè)查詢和后續(xù)查詢,有計(jì)劃地確定是否可以識(shí)別用戶從數(shù)據(jù)庫(kù)訪問未經(jīng)授權(quán)的數(shù)據(jù)量的嘗試(effort)。對(duì)數(shù)據(jù)提供安全性的另一方法包括從用戶接收多個(gè)查詢;執(zhí)行對(duì)數(shù)據(jù)庫(kù)的所述多個(gè)查詢;接收用戶發(fā)出的對(duì)數(shù)據(jù)庫(kù)的后續(xù)查詢;執(zhí)行該后續(xù)查詢;以及基于所述多個(gè)查詢和后續(xù)查詢,有計(jì)劃地確定是否可以識(shí)別用戶繞開防止唯一地識(shí)別個(gè)人的安全性限制的嘗試。另一方法提供具有特定物理數(shù)據(jù)表示(representation)的數(shù)據(jù)的安全性,該方法包括提供包括用于定義抽象查詢(abstractquery)的多個(gè)邏輯字段的查詢規(guī)范(specification);提供將所述多個(gè)邏輯字段映射到數(shù)據(jù)的物理實(shí)體的映射規(guī)則;提供安全規(guī)則;接收用戶發(fā)出的對(duì)數(shù)據(jù)庫(kù)的抽象查詢,其中,抽象查詢根據(jù)查詢規(guī)范來定義,并配置有至少一個(gè)邏輯字段值;以及相對(duì)于至少一個(gè)先前從用戶接收的抽象查詢,分析該抽象查詢,以檢測(cè)促使調(diào)用安全規(guī)則的安全侵害活動(dòng)的存在性。另一實(shí)施例提供一種包含指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)執(zhí)行所述指令時(shí),進(jìn)行安全侵害識(shí)別操作,包括接收用戶發(fā)出的對(duì)數(shù)據(jù)庫(kù)的查詢;以及基于以下的至少一項(xiàng)來確定是否存在安全侵害模式(i)對(duì)所述查詢相對(duì)于至少一個(gè)其它先前從用戶發(fā)出的查詢進(jìn)行的執(zhí)行前比較分析;以及(ii)對(duì)從所述查詢的執(zhí)行返回的結(jié)果和從所述至少一個(gè)其它先前發(fā)出的查詢的執(zhí)行返回的結(jié)果進(jìn)行的執(zhí)行后比較分析。另一實(shí)施例提供一種包含安全驗(yàn)證指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)執(zhí)行所述安全驗(yàn)證指令時(shí),進(jìn)行安全驗(yàn)證操作,包括從用戶接收多個(gè)查詢;執(zhí)行對(duì)數(shù)據(jù)庫(kù)的所述多個(gè)查詢;接收用戶發(fā)出的對(duì)數(shù)據(jù)庫(kù)的后續(xù)查詢;執(zhí)行該后續(xù)查詢,以及基于所述多個(gè)查詢和后續(xù)查詢,有計(jì)劃地確定是否可以識(shí)別用戶繞開防止唯一地識(shí)別個(gè)人的安全限制的嘗試。另一實(shí)施例提供一種包括存儲(chǔ)在其上的信息的計(jì)算機(jī)可讀介質(zhì),所述信息包括查詢規(guī)范,包括用于定義抽象查詢的多個(gè)邏輯字段;將所述多個(gè)邏輯字段映射到數(shù)據(jù)的物理實(shí)體的多個(gè)映射規(guī)則;多個(gè)安全規(guī)則;運(yùn)行時(shí)間組件,可執(zhí)行以響應(yīng)于接收到用戶發(fā)出的對(duì)數(shù)據(jù)的抽象查詢,而進(jìn)行安全侵害活動(dòng)檢測(cè)操作,其中,抽象查詢根據(jù)查詢規(guī)范來定義,并配置有至少一個(gè)邏輯字段值。安全侵害活動(dòng)檢測(cè)操作包括接收用戶發(fā)出的對(duì)數(shù)據(jù)的抽象查詢,其中,抽象查詢根據(jù)查詢規(guī)范來定義,并配置有至少一個(gè)邏輯字段值;以及相對(duì)于至少一個(gè)先前從用戶接收的抽象查詢,分析所述抽象查詢,以檢測(cè)促使調(diào)用安全規(guī)則的安全侵害活動(dòng)的存在性。因此,通過參考在附圖中示出的本發(fā)明的實(shí)施例,可獲得并詳細(xì)地理解的本發(fā)明的上述特征,并對(duì)在上面簡(jiǎn)要概括的本發(fā)明進(jìn)行更具體的描述。然而,應(yīng)當(dāng)注意,附圖僅示出本發(fā)明的典型實(shí)施例,并因此不能被認(rèn)為是對(duì)本發(fā)明范圍的限制,這是因?yàn)楸景l(fā)明可允許其它同等有效的實(shí)施例。圖1是計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例;圖2A是本發(fā)明一個(gè)實(shí)施例的軟件組件的邏輯/物理視圖;圖2B是抽象查詢和抽象(abstraction)的數(shù)據(jù)儲(chǔ)存庫(kù)(repository)的邏輯視圖;圖3是示出運(yùn)行時(shí)間組件的操作的流程圖;圖4是示出運(yùn)行時(shí)間組件的操作的流程圖;圖5是示出用于使用執(zhí)行前分析來識(shí)別和處理不重疊條件的運(yùn)行時(shí)間組件的操作的流程圖;圖6是示出使用執(zhí)行后結(jié)果分析采識(shí)別和處理不重疊條件的運(yùn)行時(shí)間組件的操作的流程圖;圖7是示出使用執(zhí)行后結(jié)果分析來識(shí)別和處理查詢聯(lián)合分析的運(yùn)行時(shí)間組件的操作的流程圖;以及圖8是示出使用執(zhí)行后結(jié)果分析來識(shí)別和處理削減(paredown)分析的運(yùn)行時(shí)間組件的操作的流程圖。具體實(shí)施例方式引言本發(fā)明一般地旨在一種用于確定用戶未經(jīng)授權(quán)的存取數(shù)據(jù)的企圖(attempt)的系統(tǒng)、方法和制造產(chǎn)品。通常,在執(zhí)行之前對(duì)查詢進(jìn)行分析,以及/或者對(duì)查詢的執(zhí)行所返回的結(jié)果進(jìn)行分析。在一個(gè)實(shí)施例中,檢測(cè)可能的安全侵害使得采取一種或多種安全措施。例如,在一個(gè)實(shí)施例中,不執(zhí)行用戶的查詢。在另一實(shí)施例中,記錄該事件,并且/或者向管理員通知該事件。在一個(gè)實(shí)施例中,安全特征被作為數(shù)據(jù)的邏輯模型的一部分而實(shí)現(xiàn)。邏輯模型作為數(shù)據(jù)儲(chǔ)存庫(kù)抽象層來實(shí)現(xiàn),該數(shù)據(jù)儲(chǔ)存庫(kù)抽象層提供底層數(shù)據(jù)儲(chǔ)存庫(kù)的邏輯視圖。以這一方式,使數(shù)據(jù)與物理地表示該數(shù)據(jù)的特定方式無關(guān)。還提供了查詢抽象層,并且,其基于數(shù)據(jù)儲(chǔ)存庫(kù)抽象層。運(yùn)行時(shí)間組件進(jìn)行將抽象查詢轉(zhuǎn)換為可對(duì)特定物理數(shù)據(jù)表示使用的形式的轉(zhuǎn)換。然而,盡管在此描述的抽象模型提供了本發(fā)明的一個(gè)或多個(gè)實(shí)施例,但本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,可以在沒有抽象模型的情況下實(shí)施在此提供的概念,同時(shí)仍然提供相同或相似的結(jié)果。本發(fā)明的一個(gè)實(shí)施例作為與計(jì)算機(jī)系統(tǒng),例如在圖1中示出并在下面描述的計(jì)算機(jī)系統(tǒng),一起使用的程序產(chǎn)品來實(shí)現(xiàn)。該程序產(chǎn)品的程序定義了實(shí)施例(包括在此描述的方法)的功能,并且可被包含在各種信號(hào)承載介質(zhì)上。說明性的信號(hào)承載介質(zhì)包括但不限于(i)永久存儲(chǔ)在不可寫入存儲(chǔ)介質(zhì)(例如,諸如可由CD-ROM驅(qū)動(dòng)器讀取的CD-ROM盤的計(jì)算機(jī)內(nèi)的只讀存儲(chǔ)設(shè)備)上的信息;(ii)存儲(chǔ)在可寫入存儲(chǔ)介質(zhì)(例如,盤驅(qū)動(dòng)器中的軟盤或硬盤驅(qū)動(dòng)器)上的可改變信息;或(iii)通過通信介質(zhì),例如通過計(jì)算機(jī)或包括無線通信的電話網(wǎng)絡(luò),而傳送給計(jì)算機(jī)的信息。后面的實(shí)施例具體包括從因特網(wǎng)和其它網(wǎng)絡(luò)下載的信息。當(dāng)這種信號(hào)承載介質(zhì)承載指引本發(fā)明的功能的計(jì)算機(jī)可讀指令時(shí),其代表本發(fā)明的實(shí)施例。通常,被執(zhí)行以實(shí)現(xiàn)本發(fā)明實(shí)施例的例行程序可以是操作系統(tǒng)或特定應(yīng)用程序、組件、程序、模塊、對(duì)象或指令序列的一部分。本發(fā)明的軟件通常包括大量指令,所述指令將被本地計(jì)算機(jī)轉(zhuǎn)換為機(jī)器可讀的格式,并從而產(chǎn)生可執(zhí)行指令。此外,程序包括局部存在于該程序中或者在存儲(chǔ)器中或者在存儲(chǔ)設(shè)備上找到的變量和數(shù)據(jù)結(jié)構(gòu)。此外,在本發(fā)明的特定實(shí)施例中,可以基于為之實(shí)現(xiàn)在下文中描述的各種程序的應(yīng)用程序來識(shí)別所述各種程序。然而,應(yīng)當(dāng)認(rèn)識(shí)到,以下任何特定術(shù)語都只是為了方便而使用的,因而本發(fā)明不應(yīng)被限制為僅用于由這樣的術(shù)語指出和/或暗含的任何特定應(yīng)用程序。環(huán)境的物理視1示出了可實(shí)施本發(fā)明實(shí)施例的聯(lián)網(wǎng)系統(tǒng)100的方框圖。通常,聯(lián)網(wǎng)系統(tǒng)100包括客戶端(例如,用戶的)計(jì)算機(jī)102(示出了3臺(tái)這種客戶端計(jì)算機(jī)102)、和至少一臺(tái)服務(wù)器104(一臺(tái)這種服務(wù)器104)。客戶端計(jì)算機(jī)102和服務(wù)器計(jì)算機(jī)104通過網(wǎng)絡(luò)126連接。通常,網(wǎng)絡(luò)126可以是局域網(wǎng)(LAN)和/或廣域網(wǎng)(WAN)。在特定實(shí)施例中,網(wǎng)絡(luò)126是因特網(wǎng)??蛻舳擞?jì)算機(jī)102包括通過總線130連接到存儲(chǔ)器112、存儲(chǔ)設(shè)備114、輸入設(shè)備116、輸出設(shè)備119以及網(wǎng)絡(luò)接口設(shè)備118的中央處理單元(CPU)110。輸入設(shè)備116可以是為客戶端計(jì)算機(jī)102提供輸入的任何設(shè)備。例如,可以使用鍵盤、小鍵盤、光筆、觸摸屏、軌跡球、或語音識(shí)別單元、音頻/視頻播放器等。輸出設(shè)備119可以是為用戶提供輸出的任何設(shè)備,例如,任何傳統(tǒng)顯示屏。盡管輸出設(shè)備119被示出為與輸入設(shè)備116分離,但是輸出設(shè)備119和輸入設(shè)備116可以組合在一起。例如,可以使用具有集成觸摸屏的顯示屏、具有集成鍵盤的顯示器、或組合了文本語音轉(zhuǎn)換器的語音識(shí)別單元。網(wǎng)絡(luò)接口設(shè)備118可以是被配置為允許客戶端計(jì)算機(jī)102和服務(wù)器計(jì)算機(jī)104之間通過網(wǎng)絡(luò)126的網(wǎng)絡(luò)通信的任何登錄/退出設(shè)備。例如,網(wǎng)絡(luò)接口設(shè)備118可以是網(wǎng)絡(luò)適配器或其它網(wǎng)絡(luò)接口卡(NIC)。存儲(chǔ)設(shè)備114優(yōu)選是直接存取存儲(chǔ)器設(shè)備(DASD)。盡管它被示出為單個(gè)單元,但它可以是固定和/或可拆卸存儲(chǔ)設(shè)備的組合,例如固定的盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、可拆卸存儲(chǔ)卡、或光學(xué)存儲(chǔ)器。存儲(chǔ)器112和存儲(chǔ)設(shè)備114可以是跨越多個(gè)主和輔存儲(chǔ)設(shè)備的一個(gè)虛擬地址空間的一部分。存儲(chǔ)器112優(yōu)選是足夠大以保存本發(fā)明的必要程序和數(shù)據(jù)結(jié)構(gòu)的隨機(jī)存取存儲(chǔ)器。盡管存儲(chǔ)器112被示出為單個(gè)實(shí)體,但應(yīng)當(dāng)理解,存儲(chǔ)器112實(shí)際上可包括多個(gè)模塊,并且存儲(chǔ)器112可以以從高速寄存器和高速緩沖存儲(chǔ)器到速度較低但較大的DRAM芯片的多個(gè)等級(jí)存在。作為說明,存儲(chǔ)器112包含操作系統(tǒng)124??捎欣厥褂玫恼f明性操作系統(tǒng)包括Linux和Microsoft的Windows。更一般地,可以使用支持在此公開的功能的任何操作系統(tǒng)。存儲(chǔ)器112還被示出為包含瀏覽器程序122,當(dāng)在CPU110上執(zhí)行瀏覽器程序122時(shí),瀏覽器程序122提供對(duì)于在各種服務(wù)器104之間遨游、并將網(wǎng)絡(luò)地址定位于一個(gè)或多個(gè)服務(wù)器104上的支持。在一個(gè)實(shí)施例中,瀏覽器程序122包括基于網(wǎng)絡(luò)的圖形用戶接口(GUI),其允許用戶顯示超文本標(biāo)記語言(HTML)信息。然而,更一般地,瀏覽器程序122可以是能夠呈現(xiàn)從服務(wù)器計(jì)算機(jī)104傳送的信息的任何程序(優(yōu)選地是基于GUI)??梢园凑疹愃朴诳蛻舳擞?jì)算機(jī)102的方式而物理地布置服務(wù)器計(jì)算機(jī)104。因此,服務(wù)器計(jì)算機(jī)104被一般地示出為包括通過總線136而互相耦接的CPU130、存儲(chǔ)器132和存儲(chǔ)設(shè)備134。存儲(chǔ)器132可以是足夠大以保存位于服務(wù)器計(jì)算機(jī)104上的必要程序和數(shù)據(jù)結(jié)構(gòu)的隨機(jī)存取存儲(chǔ)器。服務(wù)器計(jì)算機(jī)104通常受被示出為駐留在存儲(chǔ)器132中的操作系統(tǒng)138的控制。操作系統(tǒng)138的示例包括IBMOS/400、UNIX、MicrosoftWindows等。更一般地,可以使用能夠支持在此描述的功能的任何操作系統(tǒng)。存儲(chǔ)器132還包括一個(gè)或多個(gè)應(yīng)用程序140和抽象查詢接口146。應(yīng)用程序140和抽象查詢接口146是包括多個(gè)指令的軟件產(chǎn)品,所述指令在各種時(shí)刻駐留在計(jì)算機(jī)系統(tǒng)100內(nèi)的各種存儲(chǔ)器和存儲(chǔ)設(shè)備中。當(dāng)被服務(wù)器104中的一個(gè)或多個(gè)處理器130讀取并執(zhí)行時(shí),應(yīng)用程序140和抽象查詢接口146使計(jì)算機(jī)系統(tǒng)100進(jìn)行執(zhí)行實(shí)施本發(fā)明各種方面的步驟或元素(element)所必需的步驟。應(yīng)用程序140(以及更一般地,包括操作系統(tǒng)138以及處于最高等級(jí)上的用戶的任何請(qǐng)求實(shí)體)發(fā)出對(duì)數(shù)據(jù)庫(kù)(例如,統(tǒng)稱為數(shù)據(jù)庫(kù)156的數(shù)據(jù)庫(kù)1561...156N)的查詢。作為說明,數(shù)據(jù)庫(kù)156被示出為存儲(chǔ)設(shè)備134中的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)的一部分。數(shù)據(jù)庫(kù)156代表與特定物理表示無關(guān)的任何數(shù)據(jù)集合。作為說明,可以根據(jù)關(guān)系大綱(schema)(可通過SQL查詢?cè)L問)或根據(jù)XML大綱(可通過XML查詢?cè)L問)來組織數(shù)據(jù)庫(kù)156。然而,本發(fā)明不限于特定大綱,并且考慮了向當(dāng)前未知的大綱的延伸。如在此使用的,術(shù)語“大綱”一般地指數(shù)據(jù)的特定排列。在一個(gè)實(shí)施例中,根據(jù)每個(gè)應(yīng)用程序140包括的應(yīng)用程序查詢規(guī)范142來定義應(yīng)用程序140發(fā)出的查詢。應(yīng)用程序140發(fā)出的查詢可被預(yù)先定義(即,被硬編碼為應(yīng)用程序140的一部分)、或者可以響應(yīng)于輸入(例如,用戶輸入)而產(chǎn)生。在任一種情況中,使用抽象查詢接口146定義的邏輯字段來組成/執(zhí)行查詢(在這里,其被稱為“抽象查詢”)。具體地說,在抽象查詢中使用的邏輯字段由抽象查詢接口146的數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148定義。抽象查詢由運(yùn)行時(shí)間組件150執(zhí)行,其中,運(yùn)行時(shí)間組件150首先將抽象查詢變換為與DBMS154中包含的數(shù)據(jù)的物理表示一致的形式。在一個(gè)實(shí)施例中,數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148被配置有安全信息162。對(duì)于不是基于抽象模型(或其某些等同物)的實(shí)施例,安全信息可以駐留在別的地方。在一個(gè)實(shí)施例中,安全信息162包括與一個(gè)或多個(gè)字段相關(guān)的關(guān)鍵字(key)。下面將更詳細(xì)地描述這種關(guān)鍵字的多個(gè)方面。運(yùn)行時(shí)間組件150用來進(jìn)行各種分析,并且,在某些實(shí)施例中,根據(jù)所進(jìn)行的分析的結(jié)果增強(qiáng)各種安全特征或進(jìn)行其它動(dòng)作。因此,運(yùn)行時(shí)間組件150被示出為配置有實(shí)現(xiàn)在此描述的方法的安全算法151(其可以是代表性的或多個(gè)算法)。通常,可以將運(yùn)行時(shí)間組件150實(shí)現(xiàn)的安全特征施加到特定的用戶、一組用戶或全部用戶。在一個(gè)實(shí)施例中,用戶通過圖形用戶接口(GUI)指定查詢的元素。GUI的內(nèi)容由應(yīng)用程序140產(chǎn)生。在特定實(shí)施例中,GUI內(nèi)容是可利用瀏覽器程序122而在客戶端計(jì)算機(jī)系統(tǒng)102上呈現(xiàn)的超文本標(biāo)記語言(HTML)內(nèi)容。因此,存儲(chǔ)器132包括適配成為來自客戶端計(jì)算機(jī)102的請(qǐng)求服務(wù)的超文本傳輸協(xié)議(http)服務(wù)器進(jìn)程152(例如,網(wǎng)絡(luò)服務(wù)器)。例如,服務(wù)器進(jìn)程152可響應(yīng)請(qǐng)求以訪問說明性地駐留在服務(wù)器104上的數(shù)據(jù)庫(kù)156。到來的對(duì)來自數(shù)據(jù)庫(kù)156的數(shù)據(jù)的客戶端請(qǐng)求調(diào)用應(yīng)用程序140。當(dāng)被處理器130執(zhí)行時(shí),應(yīng)用程序140使服務(wù)器計(jì)算機(jī)104進(jìn)行實(shí)施本發(fā)明各種方面的步驟或元素,包括訪問數(shù)據(jù)庫(kù)156。在一個(gè)實(shí)施例中,應(yīng)用程序140包括多個(gè)配置為建立隨后由瀏覽器程序122呈現(xiàn)的GUI元素的小服務(wù)程序。圖1只是聯(lián)網(wǎng)的客戶端計(jì)算機(jī)102和服務(wù)器計(jì)算機(jī)104的一種硬件/軟件配置。本發(fā)明的實(shí)施例可適用于到任何相似的硬件配置上,而不管計(jì)算機(jī)系統(tǒng)是復(fù)雜的多用戶計(jì)算裝置、單用戶工作站、還是不具有其自己的非易失性存儲(chǔ)器的網(wǎng)絡(luò)設(shè)備。此外,應(yīng)當(dāng)理解,盡管參考了包括HTML的特定標(biāo)記語言,但本發(fā)明不限于特定的語言、標(biāo)準(zhǔn)或版本。因此,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,本發(fā)明可適應(yīng)其它標(biāo)記語言以及非標(biāo)記語言,并且,本發(fā)明還可適應(yīng)特定標(biāo)記語言未來的改變、以及目前未知的其它語言。同樣,圖1示出的http服務(wù)器進(jìn)程152只是說明性的,并且已考慮到適配為支持任何已知和未知協(xié)議的其它實(shí)施例。環(huán)境的邏輯/運(yùn)行時(shí)間視2A-B示出了本發(fā)明的組件的說明性關(guān)系視圖200。請(qǐng)求實(shí)體(例如,應(yīng)用程序140之一)發(fā)出如該請(qǐng)求實(shí)體的各個(gè)應(yīng)用程序查詢規(guī)范142定義的查詢202。在這里,因?yàn)楦鶕?jù)抽象(即,邏輯)字段而不是通過直接引用DBMS154中的底層物理數(shù)據(jù)實(shí)體來組成所產(chǎn)生的查詢202,所以該查詢通常被稱為“抽象查詢”。因此,可以定義與所使用的特定底層數(shù)據(jù)表示無關(guān)的抽象查詢。在一個(gè)實(shí)施例中,應(yīng)用程序查詢規(guī)范142可既包括用于數(shù)據(jù)選擇的標(biāo)準(zhǔn)(選擇標(biāo)準(zhǔn)204)又包括基于選擇標(biāo)準(zhǔn)204要返回的字段的明確規(guī)范(返回?cái)?shù)據(jù)規(guī)范206)。在下面的表1中示出了對(duì)應(yīng)于圖2B示出的抽象查詢202的說明性抽象查詢。作為說明,使用XML來定義抽象查詢202。然而,可以有利地使用任何其它語言。表1-查詢示例001<?xmlversion=“1.0”?>002<!--Querystringrepresentation(FirstName=“Mary”ANDLastName=003“McGoon”)ORState=“NC”-->004<QueryAbstraction>005<Selection>006<ConditioninternalID=“4”>007<Conditionfield=“FirstName”operator=“EQ”value=“Mary”008internalID=“1”/>009<Conditionfield=“LastName”operator=“EQ”value=“McGoon”010internalID=“3”relOperator=“AND”></Condition>011</Condition>012<Conditionfield=“State”operator=“EQ”value=“NC”internalID=“2”013relOperator=“OR”></Condition>014</Selection>015<Results>016<Fieldname=“FirstName”/>017<Fieldname=“LastName”/>018<Fieldname=“State”/>019</Results>020</QueryAbstraction>作為說明,表1示出的抽象查詢包括含有選擇標(biāo)準(zhǔn)的選擇規(guī)范(第005-014行)和結(jié)果規(guī)范(第015-019行)。在一個(gè)實(shí)施例中,選擇標(biāo)準(zhǔn)由(邏輯字段的)字段名、比較運(yùn)算符(=、>、<等)以及(所述字段與之進(jìn)行比較的)值表達(dá)式組成。在一個(gè)實(shí)施例中,結(jié)果規(guī)范是將作為查詢執(zhí)行結(jié)果返回的抽象字段的列表。抽象查詢中的結(jié)果規(guī)范可由字段名和分類標(biāo)準(zhǔn)組成。由應(yīng)用程序查詢規(guī)范142指定并用來組成抽象查詢202的邏輯字段由數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148定義。通常,數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148將信息作為可在應(yīng)用程序140(其可以響應(yīng)于用戶輸入的查詢條件)發(fā)出的查詢(例如,抽象查詢202)中使用的一組邏輯字段進(jìn)行披露(expose),以指定數(shù)據(jù)選擇標(biāo)準(zhǔn),并指定從查詢操作返回的結(jié)果數(shù)據(jù)的形式。邏輯字段被與DBMS154中使用的底層數(shù)據(jù)表示無關(guān)地定義,從而允許形成松散地結(jié)合到底層數(shù)據(jù)表示的查詢。通常,數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148包括統(tǒng)稱為字段規(guī)范208的多個(gè)字段規(guī)范2081、2082、2083、...(作為示例,示出了3個(gè)字段規(guī)范)。具體地說,為可用于組成抽象查詢的每個(gè)邏輯字段提供字段規(guī)范。在一個(gè)實(shí)施例中,字段規(guī)范208包括邏輯字段名2101、2102、2103(統(tǒng)稱為字段名210)和相關(guān)的訪問方法2121、2122、2121(統(tǒng)稱為訪問方法212)。訪問方法212將邏輯字段名關(guān)聯(lián)(即,映射)到數(shù)據(jù)庫(kù)(例如,數(shù)據(jù)庫(kù)156之一)中的特定物理數(shù)據(jù)表示2141、2142、..、214N。作為說明,在圖2A中示出了兩種數(shù)據(jù)表示,即XML數(shù)據(jù)表示2141和關(guān)系數(shù)據(jù)表示2142。然而,物理數(shù)據(jù)表示214N表明考慮了任何其它已知或未知的數(shù)據(jù)表示。在一個(gè)實(shí)施例中,單個(gè)數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148包含用于兩種或更多物理數(shù)據(jù)表示214的字段規(guī)范(和相關(guān)的訪問方法)。在替換實(shí)施例中,為每個(gè)單獨(dú)的物理數(shù)據(jù)表示214提供不同的單個(gè)數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148。在另一實(shí)施例中,提供多個(gè)數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148,其中,每個(gè)數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148披露同一底層物理數(shù)據(jù)(其可包括一個(gè)或多個(gè)物理數(shù)據(jù)表示214)的不同部分。以這一方式,多個(gè)用戶可同時(shí)使用單個(gè)應(yīng)用程序140,來訪問同一底層數(shù)據(jù),其中,由各個(gè)數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148確定向應(yīng)用程序披露的底層數(shù)據(jù)的特定部分。根據(jù)要支持的不同類型邏輯字段的數(shù)目,構(gòu)思任何數(shù)目的訪問方法。在一個(gè)實(shí)施例中,提供了針對(duì)簡(jiǎn)單字段、過濾字段和組合字段的訪問方法。字段規(guī)范2081、2082和2083分別例示了簡(jiǎn)單字段訪問方法2121、2122和2123。簡(jiǎn)單字段被直接映射到底層物理數(shù)據(jù)表示中的特定實(shí)體(例如,映射到給定數(shù)據(jù)庫(kù)表和列的字段)。作為說明,圖2B示出的簡(jiǎn)單字段訪問方法2121將邏輯字段名2101(“FirstName(名)”)映射到名稱為“contact(聯(lián)系)”的表中名稱為“f_name”的列。過濾字段(圖2中未示出示例)標(biāo)識(shí)相關(guān)的物理實(shí)體,并提供用來定義該物理數(shù)據(jù)表示內(nèi)的特定條目子集的規(guī)則。過濾字段的示例是紐約郵政編碼字段,該字段映射到郵政編碼的物理表示,并將數(shù)據(jù)限制為僅僅為紐約州定義的那些郵政編碼。組合訪問方法(在圖2中未示出示例)使用作為訪問方法定義的一部分提供的表達(dá)式來從一個(gè)或多個(gè)物理字段計(jì)算邏輯字段。以這一方式,可以計(jì)算出底層數(shù)據(jù)表示中不存在的信息。一個(gè)示例是通過將銷售價(jià)格字段乘以營(yíng)業(yè)稅率而組成的營(yíng)業(yè)稅字段。已經(jīng)考慮到底層數(shù)據(jù)的任何給定數(shù)據(jù)類型(例如,日期、十進(jìn)制數(shù)等)的格式可能變化。因此,在一個(gè)實(shí)施例中,字段規(guī)范208包括反映底層數(shù)據(jù)格式的類型屬性。然而,在另一實(shí)施例中,字段規(guī)范208的數(shù)據(jù)格式與相關(guān)底層物理數(shù)據(jù)不同,在此情況下,訪問方法負(fù)責(zé)以請(qǐng)求實(shí)體采取的適當(dāng)格式返回?cái)?shù)據(jù)。這樣,該訪問方法必須知道采取了哪種數(shù)據(jù)格式(即,根據(jù)邏輯字段)、以及底層物理數(shù)據(jù)的實(shí)際格式。然后,該訪問方法可以將底層物理數(shù)據(jù)轉(zhuǎn)換為邏輯字段的格式。作為示例,圖2示出的數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148的字段規(guī)范208代表被映射到關(guān)系數(shù)據(jù)表示2142中表示的數(shù)據(jù)的邏輯字段。然而,數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148的其它實(shí)例將邏輯字段映射到其它物理數(shù)據(jù)表示,例如XML。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)字段規(guī)范208配置有在上面參考圖1簡(jiǎn)要描述的安全信息162。在所示出的實(shí)施例中,僅字段定義2083具有相關(guān)聯(lián)的安全信息。因此,應(yīng)當(dāng)理解,不是所有字段定義都必定需要包括安全信息。在本示例中,安全信息是具有值“關(guān)鍵字”的類型屬性220。應(yīng)當(dāng)理解,關(guān)鍵字值不需要在數(shù)據(jù)儲(chǔ)存庫(kù)抽象148中指定,而是可以是例如配置文件中的值。在操作中,為具有關(guān)鍵字并且用戶已經(jīng)將其包括在至少一個(gè)查詢中的每個(gè)字段保存會(huì)話特定列表153(在圖1中示出了多個(gè)會(huì)話特定列表153)。具體地說,列表153(例如,散列表)包含已經(jīng)從用于特定會(huì)話的相關(guān)字段返回的所有值。因此,通常,對(duì)于返回先前未返回過的結(jié)果(即,不重疊的查詢結(jié)果)的每個(gè)查詢,用于給定用戶的尺寸列表增大。在一個(gè)實(shí)施例中,該列表可以是持久的,而在另一實(shí)施例中,當(dāng)用戶退出時(shí)或在用戶一段時(shí)間不活動(dòng)之后刪除該列表。然后,如將在下面更詳細(xì)地描述的那樣,可進(jìn)行查詢結(jié)果分析。在某些情況下,根據(jù)安全動(dòng)作定義213來進(jìn)行動(dòng)作。下面描述說明性動(dòng)作。表II示出對(duì)應(yīng)于圖2B所示的數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148的說明性數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件。作為說明,使用XML來定義數(shù)據(jù)儲(chǔ)存庫(kù)抽象148。然而,可以有利地使用任何其它語言。表II-數(shù)據(jù)儲(chǔ)存庫(kù)抽象示例<?xmlversion=“1.0”?><DataRepository><Categoryname=“Demographic”><Fieldqueryable=“Yes”name=“FirstName”displayable=“Yes”><AccessMethod><SimplecolumnName=“f_name”tableName=“contact”></Simple></AccessMethod><TypebaseType=“char”></Type></Field><Fieldqueryable=“Yes”name=“LastName”displayable=“Yes”><AccessMethod><SimplecolumnName=“l(fā)_name”tableName=“contact”></Simple></AccessMethod><TypebaseType=“char”></Type></Field><Fieldqueryable=“Yes”name=“ClinicNumber”displayable=“Yes”><AccessMethod><SimplecolumnName=“CN”tableName=“contact”></Simple></AccessMethod><TypebaseType=“char”key=“true”></Type><Security><SecurityRule><User>All</User><Action>RunAndLog</Action></SecurityRule><SecurityRule><User>securityOfficers</User><Action>RunAndLog</Action></SecurityRule><SecurityRule><User>cujo</User><Action>NoAction</Action></SecurityRule></Security></Field><Category></DataRepository>圖3示出了例示運(yùn)行時(shí)間組件150的操作的一個(gè)實(shí)施例的說明性運(yùn)行時(shí)間方法300。當(dāng)運(yùn)行時(shí)間組件150接收到抽象查詢(例如圖2示出的抽象查詢202)的實(shí)例作為輸入時(shí),在步驟302進(jìn)入方法300。在步驟304,運(yùn)行時(shí)間組件150讀取并分析該抽象查詢實(shí)例,并定位單獨(dú)的選擇標(biāo)準(zhǔn)和所希望的結(jié)果字段。如下所述,在步驟309,進(jìn)行將有利地與執(zhí)行后結(jié)果分析一起使用的一些的初步語句結(jié)構(gòu)分析。具體地說,在步驟309,計(jì)算查詢共同性(commonality)值。該查詢共同性值通過確定當(dāng)前查詢和所有先前查詢之間的相對(duì)共同性來計(jì)算。例如,如果一個(gè)查詢具有兩個(gè)條件,即門診號(hào)碼>x且郵政編碼=y(tǒng),而同一用戶的另一查詢具有兩個(gè)條件,即門診號(hào)碼<1000且診斷結(jié)果=z,則這兩個(gè)查詢具有50%的共同性。在步驟306,運(yùn)行時(shí)間組件150進(jìn)入用于處理在抽象查詢中出現(xiàn)的每個(gè)查詢選擇標(biāo)準(zhǔn)語句的循環(huán),從而構(gòu)建具體查詢的數(shù)據(jù)選擇部分。在一個(gè)實(shí)施例中,選擇標(biāo)準(zhǔn)(在這里也稱為條件)由(邏輯字段的)字段名、比較運(yùn)算符(=、>、<等)和將字段與之相比較的值表達(dá)式組成。在步驟308,運(yùn)行時(shí)間組件150使用來自抽象查詢的選擇標(biāo)準(zhǔn)的字段名來在數(shù)據(jù)儲(chǔ)存庫(kù)抽象148中查找該字段的定義。如上所述,該字段定義包括對(duì)用來訪問與該字段相關(guān)聯(lián)的物理數(shù)據(jù)的訪問方法的定義。在步驟310處開始之后,進(jìn)行更多步驟來進(jìn)行語句結(jié)構(gòu)分析。具體地說,在步驟310,進(jìn)入用于每個(gè)先前查詢的循環(huán)。也就是說,訪問并遍歷查詢歷史表157(圖1)。通常,查詢歷史表157是已經(jīng)執(zhí)行過的查詢的列表。每當(dāng)執(zhí)行新查詢時(shí),在查詢歷史表157中填充新條目。在一個(gè)實(shí)施例中,此數(shù)據(jù)結(jié)構(gòu)包含處于其抽象形式的SQL查詢??梢詫?duì)該數(shù)據(jù)結(jié)構(gòu)配置釋放歷史的時(shí)間。用于釋放歷史的一個(gè)選擇是在結(jié)束會(huì)話的時(shí)候。另一個(gè)是在經(jīng)過一定的時(shí)間段之后。在步驟312,運(yùn)行時(shí)間組件150確定在步驟310從歷史查詢表157中檢索到的先前的查詢中是否使用了正被處理(步驟306)的查詢選擇的字段。如果未使用,則方法300返回步驟310,并且運(yùn)行時(shí)間組件150從歷史查詢表157中檢索另一先前查詢。當(dāng)識(shí)別出具有正被處理(步驟306)的查詢選擇字段的先前查詢時(shí),對(duì)該查詢選擇和所識(shí)別的先前查詢進(jìn)行分析(步驟314)。在步驟316,運(yùn)行時(shí)間組件150確定分析結(jié)果(在步驟314)是否需要進(jìn)行某個(gè)動(dòng)作。在一個(gè)實(shí)施例中,在數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148中指定所述動(dòng)作(參見表II)。安全動(dòng)作包括記錄用戶的查詢(或其它相關(guān)信息)、防止該查詢被執(zhí)行、和/或終止用戶的會(huì)話。更一般地,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,當(dāng)調(diào)用安全規(guī)則時(shí),可以進(jìn)行任何種類的響應(yīng)。例如,可以向系統(tǒng)管理員發(fā)出通知(例如,通過電子郵件)。注意,在表II示出的示例中,為單個(gè)用戶(例如,Cujo)、多組用戶(例如,安全官員)和所有用戶定義了安全動(dòng)作。在對(duì)于特定字段存在多個(gè)動(dòng)作的一個(gè)實(shí)施例中,適用為用戶最緊密地設(shè)計(jì)的動(dòng)作。這樣,特定于單個(gè)用戶的動(dòng)作優(yōu)先于所有其它動(dòng)作,并且特定于一組的動(dòng)作優(yōu)先于為所有用戶指定的動(dòng)作。為所有用戶指定的動(dòng)作僅在不存在其它更緊密地為用戶設(shè)計(jì)的動(dòng)作時(shí)才適用。如果步驟314的回答是否定的(即,不需要?jiǎng)幼?,則處理返回步驟310,其中從歷史查詢表157中檢索另一先前查詢以供檢查。如果在步驟316需要?jiǎng)幼?,則在步驟318進(jìn)行該動(dòng)作。如果該動(dòng)作是致命的(fatal)(步驟320),則不執(zhí)行用戶的查詢(步驟322)。否則,處理返回步驟310。一旦對(duì)歷史查詢表157中的每個(gè)先前查詢都已經(jīng)檢查了正被處理的當(dāng)前查詢選擇的字段的存在性,方法300就前進(jìn)到步驟324。然后,運(yùn)行時(shí)間組件150為正被處理的邏輯字段建立(步驟324)具體查詢組分(contribution)。如同在這里定義的那樣,具體查詢組分是用來基于當(dāng)前邏輯字段進(jìn)行數(shù)據(jù)選擇的具體查詢的一部分。具體查詢是采用例如SQL和XML查詢的語言表示的查詢,并與給定物理數(shù)據(jù)儲(chǔ)存庫(kù)(例如,關(guān)系數(shù)據(jù)庫(kù)或XML儲(chǔ)存庫(kù))的數(shù)據(jù)一致。因此,使用具體查詢來從由圖1示出的DBMS154表示的物理數(shù)據(jù)儲(chǔ)存庫(kù)中定位和檢索數(shù)據(jù)。然后,將為當(dāng)前字段產(chǎn)生的具體查詢組分添加到具體查詢語句中。然后,方法300返回步驟306,以便開始對(duì)抽象查詢的下一字段的處理。因此,對(duì)抽象查詢中的每個(gè)數(shù)據(jù)選擇字段重復(fù)在步驟306進(jìn)入的過程,從而貢獻(xiàn)出(contribute)要進(jìn)行的最終查詢的附加內(nèi)容。在構(gòu)建具體查詢的數(shù)據(jù)選擇部分之后,運(yùn)行時(shí)間組件150識(shí)別將作為查詢執(zhí)行的結(jié)果返回的信息。如上所述,在一個(gè)實(shí)施例中,抽象查詢定義在這里稱為結(jié)果規(guī)范的、將作為查詢執(zhí)行結(jié)果而返回的抽象字段的列表。抽象查詢中的結(jié)果列表可包括字段名和分類標(biāo)準(zhǔn)。因此,方法300在步驟328處進(jìn)入循環(huán)(由步驟328、330、332和334定義),以便將結(jié)果字段定義添加到所產(chǎn)生的具體查詢中。在步驟330,運(yùn)行時(shí)間組件150在數(shù)據(jù)儲(chǔ)存庫(kù)抽象148中查找(來自抽象查詢的結(jié)果規(guī)范的)結(jié)果字段名,然后從數(shù)據(jù)儲(chǔ)存庫(kù)抽象148中檢索結(jié)果字段定義,以便識(shí)別將為當(dāng)前邏輯結(jié)果字段返回的數(shù)據(jù)的物理位置。然后,運(yùn)行時(shí)間組件150為該邏輯結(jié)果字段構(gòu)建(如步驟332)(識(shí)別要返回的數(shù)據(jù)的物理位置的具體查詢的)具體查詢組分。然后,在步驟334,將具體查詢組分添加到具體查詢語句中。一旦處理了抽象查詢中的每個(gè)結(jié)果規(guī)范,就在步驟336執(zhí)行該查詢。參考圖4來描述用于根據(jù)步驟310和318為邏輯字段構(gòu)建具體查詢組分的方法400的一個(gè)實(shí)施例。在步驟402,方法400查詢與當(dāng)前邏輯字段相關(guān)的訪問方法是不是簡(jiǎn)單訪問方法。如果是,則基于物理數(shù)據(jù)位置信息構(gòu)建(步驟404)具體查詢組分,隨后,處理根據(jù)上述方法300而繼續(xù)進(jìn)行。否則,處理繼續(xù)進(jìn)行到步驟406,以查詢與當(dāng)前邏輯字段相關(guān)的訪問方法是否是過濾訪問方法。如果是,則基于某個(gè)物理數(shù)據(jù)實(shí)體的物理數(shù)據(jù)位置信息來構(gòu)建(步驟408)具體查詢組分。在步驟410,利用用于對(duì)與該物理數(shù)據(jù)實(shí)體相關(guān)的數(shù)據(jù)進(jìn)行子集構(gòu)造(subset)的附加邏輯(過濾器選擇)來擴(kuò)展具體查詢組分。然后,處理根據(jù)上述方法300而繼續(xù)進(jìn)行。如果該訪問方法不是過濾訪問方法,則處理從步驟406前進(jìn)到步驟412,在步驟412,方法400查詢?cè)L問方法是不是組合訪問方法。如果該訪問方法是組合訪問方法,則在步驟414,定位并檢索組合字段表達(dá)式中每個(gè)子字段引用(reference)的物理數(shù)據(jù)位置。在步驟416,用組合字段表達(dá)式的物理字段位置信息代替該組合字段表達(dá)式的邏輯字段引用,由此產(chǎn)生具體查詢組分。然后,處理根據(jù)上述方法300而繼續(xù)進(jìn)行。如果該訪問方法不是組合訪問方法,則處理從步驟412前進(jìn)到步驟418。步驟418代表作為本發(fā)明的實(shí)施例而構(gòu)思的任何其它訪問方法類型。然而,應(yīng)當(dāng)理解,構(gòu)思了并不實(shí)現(xiàn)所有可用的訪問方法的實(shí)施例。例如,在特定實(shí)施例中,僅使用簡(jiǎn)單訪問方法。在另一實(shí)施例中,僅使用簡(jiǎn)單訪問方法和過濾訪問方法。如上所述,如果邏輯字段指定了與底層物理數(shù)據(jù)不同的數(shù)據(jù)格式,則可能有必要進(jìn)行數(shù)據(jù)轉(zhuǎn)換。在一個(gè)實(shí)施例中,當(dāng)根據(jù)方法400建立邏輯字段的具體查詢組分時(shí),對(duì)于每一個(gè)訪問方法,分別進(jìn)行初始轉(zhuǎn)換。例如,可以作為步驟404、408和416的一部分或緊跟其后進(jìn)行轉(zhuǎn)換。在步驟322執(zhí)行了查詢之后,進(jìn)行隨后從物理數(shù)據(jù)的格式到邏輯字段的格式的轉(zhuǎn)換。當(dāng)然,如果邏輯字段定義的格式與底層物理數(shù)據(jù)相同,則沒有必要進(jìn)行轉(zhuǎn)換。參考圖5,示出了方法500,其說明在步驟314進(jìn)行的分析的一個(gè)實(shí)施例?;叵?recall)對(duì)具有通用格式<字段><運(yùn)算符><值>的選擇/條件進(jìn)行分析。在步驟502,使用運(yùn)算符和值來確定查詢選擇覆蓋的范圍。在步驟504,運(yùn)行時(shí)間組件150檢查相對(duì)于在步驟310中從歷史查詢表157檢索的先前查詢的條件的不重疊條件。在一個(gè)實(shí)施例中,定義不重疊條件為具有早先查詢的共同字段但不返回早先查詢所返回的任何結(jié)果(行)的條件。例如,考慮具有范圍條件“年齡≥0且年齡<5”的先前查詢(其條件存儲(chǔ)在歷史查詢表157中)?,F(xiàn)在假設(shè)正被分析的查詢包含范圍條件“年齡≥5且年齡<10”。這些查詢條件顯示(evidence)了這樣的模式,該模式暗示用戶正通過有意識(shí)地構(gòu)造設(shè)計(jì)用來避免返回任何相同行的查詢而掃描數(shù)據(jù)庫(kù)的大部分。在另一實(shí)施例中,將不重疊條件定義為具有早先查詢的共同字段并返回一些新結(jié)果(即,先前查詢未返回過的結(jié)果)和一些舊結(jié)果(即,先前查詢已返回過的結(jié)果)的條件。這種不重疊條件的重復(fù)模式也可被識(shí)別為訪問/積累數(shù)據(jù)庫(kù)的一部分的未經(jīng)授權(quán)的企圖。如果識(shí)別出不重疊條件,則在步驟316/318處理該條件。在一個(gè)實(shí)施例中,根據(jù)管理員設(shè)置來處理不重疊條件。具體地說,可以通過管理員設(shè)置來指定在進(jìn)行某個(gè)動(dòng)作之前必須識(shí)別的不相關(guān)查詢的數(shù)目。此外,一個(gè)實(shí)施例可允許一定程度的條件重疊或分離。因而,仍然可以將具有一些很小數(shù)目的共同結(jié)果的兩個(gè)查詢之間的條件視為不重疊。在這種情況下,基于不同查詢的條件所覆蓋的范圍來確定不重疊可令人滿意。例如,在具有相關(guān)字段的某組查詢的結(jié)果的總范圍是4000,而將由條件返回的重疊結(jié)果的實(shí)際數(shù)目是4的情況下,查詢/條件基本上不重疊。另一方面,在具有相關(guān)字段的某組查詢的結(jié)果的總范圍是40,而將由查詢返回的重疊結(jié)果的數(shù)目是30的情況下,查詢/條件可被認(rèn)為是基本上重疊的。出于權(quán)利要求解釋(construction)的目的,術(shù)語“不重疊”查詢/條件應(yīng)被解釋為包括基本上不重疊的查詢/條件。此外或者可替換地,可以通過管理員設(shè)置來定義可為之返回結(jié)果的不同病人的數(shù)目。在一個(gè)實(shí)施例中,可以使這種管理員設(shè)置特定于特定用戶。因而,可以給第一用戶更多的數(shù)據(jù)訪問權(quán),而可以相對(duì)多地限制第二用戶的訪問權(quán)。上文例示了執(zhí)行前分析。其它或替換方面包括圖3的步驟336處的查詢執(zhí)行之后的執(zhí)行后分析。說明性的執(zhí)行后分析由塊338、340和342代表。通常,執(zhí)行后分析包括在執(zhí)行查詢之后以及在將所執(zhí)行的查詢的結(jié)果返回給用戶之前或/和之后進(jìn)行的處理。例如,塊338代表在將結(jié)果提供給用戶之前進(jìn)行的不重疊查詢分析。圖6示出了用于進(jìn)行塊338的不重疊查詢分析的方法600的一個(gè)實(shí)施例。首先,在步驟602,運(yùn)行時(shí)間組件150進(jìn)入為結(jié)果的每一列進(jìn)行的循環(huán)。在步驟604,運(yùn)行時(shí)間組件150確定該列是不是關(guān)鍵字列(keycolumn)(即,為其定義了關(guān)鍵字的列)。如果不是,則類似地處理結(jié)果的下一列。如果結(jié)果不包括關(guān)鍵字列,則檢索對(duì)應(yīng)于該關(guān)鍵字列的列表153的當(dāng)前尺寸(步驟606)。將尚未包含在列表153中的結(jié)果中的每個(gè)值添加到列表153中(步驟608)。在步驟610,運(yùn)行時(shí)間組件150確定是否識(shí)別出不重疊查詢。在說明性實(shí)施例中,步驟610包括確定添加每個(gè)新值(步驟608)之后的關(guān)鍵字列表(keylist)的尺寸是否等于新結(jié)果/值的數(shù)目與(在步驟606檢索到的)該列表的原始尺寸之和。在這方面,肯定性的確定表明查詢沒有返回新值,并且沒有將新值添加到列表153中(在此情況中,在步驟336執(zhí)行的查詢不與先前查詢重疊)。如先前對(duì)執(zhí)行前分析所描述的那樣,在某些情況中,仍然可以將一定程度的重疊視為基本上不重疊。這一原理可以適用于執(zhí)行后分析。因而,仍然可以將具有一些很小數(shù)目的共同結(jié)果的兩個(gè)查詢之間的結(jié)果視為不重疊。在這種情況中,基于返回結(jié)果的總數(shù)目來確定不重疊可令人滿意。例如,在具有相關(guān)字段的某組查詢的全部結(jié)果是4000個(gè)、而重疊結(jié)果的數(shù)目是4的情況中,查詢基本上不重疊。另一方面,在具有相關(guān)字段的某組查詢的全部結(jié)果是40個(gè),而重疊結(jié)果的數(shù)目是30的情況中,可以認(rèn)為該查詢基本上是重疊的。出于權(quán)利要求解釋的目的,術(shù)語“不重疊”查詢/結(jié)果應(yīng)當(dāng)被解釋成包括“基本上”不重疊的查詢/結(jié)果。如果在步驟336執(zhí)行的查詢被確定為重疊或基本上重疊,則對(duì)結(jié)果進(jìn)行標(biāo)記(步驟611),以便返回給用戶,并且,對(duì)下一列繼續(xù)進(jìn)行處理。否則,運(yùn)行時(shí)間組件150確定(步驟614)是否需要某個(gè)預(yù)先定義的動(dòng)作(已經(jīng)在上面描述了它的示例)。如果需要,則在步驟616進(jìn)行該動(dòng)作。如果該動(dòng)作是致命的(在步驟618確定),則終止請(qǐng)求,并且不把結(jié)果返回給用戶(步驟620)。然后,方法600退出。如果該動(dòng)作不是致命的,則處理返回步驟602,在步驟602,開始對(duì)下一列的處理。如果在沒有調(diào)用致命動(dòng)作的情況下成功地處理了所有列,則在步驟612將所有結(jié)果返回給用戶。作為用來識(shí)別不重疊查詢的執(zhí)行后查詢分析的示例,考慮執(zhí)行返回1000個(gè)不同的門診號(hào)碼的第一查詢的用戶。在適當(dāng)?shù)拈T診號(hào)碼的關(guān)鍵字列表153中,跟蹤這1000個(gè)不同的門診號(hào)碼。然后,用戶執(zhí)行返回1500個(gè)不同的門診號(hào)碼的第二查詢。假設(shè)第一查詢和第二查詢返回完全唯一的結(jié)果,則門診號(hào)碼的關(guān)鍵字列表153將包含2500個(gè)不同的門診號(hào)碼,并且,查詢被確定為不重疊。如果查詢返回的結(jié)果共享至少一個(gè)共同的值,則可以進(jìn)行步驟以確定查詢是否仍然基本上不重疊(如上所述)。更一般地,可采用任何種類的可配置設(shè)置來確定不重疊查詢的模式,并避免過早的致命動(dòng)作(即,防止將結(jié)果返回給用戶)。例如,可以預(yù)先定義可在進(jìn)行動(dòng)作之前返回的不重疊關(guān)鍵字值的數(shù)目??商鎿Q地或者此外,可以預(yù)先定義可在進(jìn)行動(dòng)作之前執(zhí)行的不重疊或基本不重疊的查詢的數(shù)目。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到可有利地使用的其它規(guī)則。應(yīng)當(dāng)注意,使用預(yù)先定義的關(guān)鍵字僅僅是用于進(jìn)行各種類型的查詢分析的一個(gè)實(shí)施例。更一般地,考慮了允許跟蹤查詢之間的共同性的任何途徑。例如,對(duì)預(yù)先定義的關(guān)鍵字的替換是由同一用戶檢查一系列查詢以確定共同字段的存在性。然后,可以指定該共同字段,并將其用作可以通過其進(jìn)行趨勢(shì)分析(例如,確定不重疊查詢)的關(guān)鍵字。另一種執(zhí)行后查詢分析由圖3中的方框340代表,并且在這里被稱為查詢聯(lián)合分析檢測(cè)。已經(jīng)在上面提供了查詢聯(lián)合分析的示例。通常,查詢聯(lián)合分析檢測(cè)檢查查詢序列,并確定明顯不關(guān)聯(lián)(即,由不同的條件組成)的查詢的模式,其中,所述明顯不關(guān)聯(lián)的查詢?cè)谶f減的結(jié)果集合中仍然包含一個(gè)或多個(gè)共同結(jié)果值。用于檢測(cè)和處理查詢聯(lián)合分析的一個(gè)實(shí)施例是圖7示出的方法700,其中,在執(zhí)行查詢之后進(jìn)入該方法700。在步驟702,安全算法151確定是否存在用于跟蹤查詢結(jié)果的結(jié)果列表。如果不存在,則創(chuàng)建結(jié)果列表161,并將結(jié)果存儲(chǔ)在其中(步驟704)。然后,方法700退出。然而,如果結(jié)果列表已經(jīng)存在,則算法151進(jìn)行操作,以便從結(jié)果列表161中丟棄所有非共同的值。也就是說,從結(jié)果列表161中移除包含在結(jié)果列表161中的不是從執(zhí)行所述查詢返回的結(jié)果的一部分的所有值。在步驟708,算法151確定結(jié)果列表的尺寸是否已經(jīng)降到尺寸閾值之下(其中,在一個(gè)實(shí)施例中,尺寸閾值是可定制的)。如果不是,則將結(jié)果返回給用戶(步驟710),并且方法700退出。否則,算法151確定(在圖3的步驟305確定的)共同性值是否小于共同性值閾值(步驟712)。如果不小于,則將結(jié)果返回給用戶(步驟710),并且方法700退出。否則,在步驟714進(jìn)行預(yù)先定義的安全動(dòng)作。如果該安全動(dòng)作是致命的(在步驟716確定),則停止用戶的請(qǐng)求,并且方法700退出。如果該安全動(dòng)作不是致命的,則將結(jié)果返回給用戶(步驟710),并且方法700退出。另一類型的執(zhí)行后查詢分析由圖3中的塊342代表,并且在這里被稱為削減分析檢測(cè)。削減分析是指這樣的過程執(zhí)行返回相對(duì)大數(shù)目的行的寬泛查詢,隨后持續(xù)且系統(tǒng)地利用后續(xù)查詢對(duì)初始結(jié)果進(jìn)行子集構(gòu)造。在一個(gè)方面,削減分析是聯(lián)合查詢分析的變體;兩種途徑都有利地使用用戶已知的信息來限制返回結(jié)果的尺寸??紤]發(fā)出對(duì)患有Alzheimer氏病的人的第一查詢的用戶。在查看通過執(zhí)行第一查詢返回的結(jié)果之后,用戶確定可以通過將查詢限制為居住在California的那些人來獲得更大程度的確切性。因此,用戶發(fā)出對(duì)患有Alzheimer氏病并且居住在California的人的第二查詢。隨后,用戶將查詢進(jìn)一步限制為特定年齡的人。用戶可以通過任何數(shù)目的查詢來繼續(xù)此子集構(gòu)造的模式,以便減小返回結(jié)果的數(shù)目。圖8示出了執(zhí)行后削減檢測(cè)方法800的一個(gè)實(shí)施例,其中,在執(zhí)行查詢并接收到結(jié)果之后進(jìn)入該方法800。在步驟804,運(yùn)行時(shí)間組件150確定結(jié)果計(jì)數(shù)是否小于跟蹤閾值。作為說明,跟蹤閾值是根據(jù)應(yīng)當(dāng)何時(shí)進(jìn)行削減檢測(cè)而選擇的預(yù)先定義的值。也就是說,如果結(jié)果計(jì)數(shù)大于跟蹤閾值,則不進(jìn)行削減檢測(cè),以便賦予用戶一定程度的搜索能力。因此,如果步驟804的回答是否定的,則將查詢執(zhí)行的結(jié)果返回給用戶(步驟806)。然而,如果結(jié)果計(jì)數(shù)小于跟蹤閾值,則運(yùn)行時(shí)間組件150根據(jù)削減檢測(cè)方法的前一次調(diào)用確定是否已經(jīng)存在一個(gè)或多個(gè)結(jié)果列表161(圖1)。通常,結(jié)果列表161包含出于進(jìn)行削減檢測(cè)的目的而執(zhí)行的查詢的結(jié)果。如果(在步驟808)結(jié)果列表尚不存在,則將當(dāng)前結(jié)果存儲(chǔ)在結(jié)果列表161中(步驟810),并隨后將其返回給用戶(步驟806)。如果存在至少一個(gè)結(jié)果列表161,則運(yùn)行時(shí)間組件150確定當(dāng)前結(jié)果是不是任何一個(gè)現(xiàn)有結(jié)果列表的子集(步驟812)。如果不是,則將當(dāng)前結(jié)果存儲(chǔ)在單獨(dú)的結(jié)果列表中(步驟814)。因此,可存在多個(gè)結(jié)果列表,每個(gè)結(jié)果列表包含為不同查詢返回的多組不相關(guān)結(jié)果。然而,如果當(dāng)前結(jié)果是現(xiàn)有結(jié)果列表之一的子集,則已經(jīng)檢測(cè)到削減模式,并調(diào)用安全動(dòng)作(步驟816)。已經(jīng)在上面描述了說明性的安全動(dòng)作。如果該安全動(dòng)作是致命的(在步驟818確定),則不把當(dāng)前結(jié)果返回給用戶,從而可以防止用戶執(zhí)行任何進(jìn)一步的查詢(步驟820)。如果該安全動(dòng)作不是致命的,則可以將結(jié)果返回給用戶(步驟806)。在上述削減方法800中,假設(shè)兩個(gè)查詢的結(jié)果計(jì)數(shù)小于跟蹤閾值(在步驟804確定),則可以在僅僅兩個(gè)查詢之后檢測(cè)到削減模式。然而,應(yīng)當(dāng)理解,用于檢測(cè)削減模式的特定標(biāo)準(zhǔn)是可配置的。例如,削減算法(除了小于跟蹤閾值的結(jié)果計(jì)數(shù)以外)可能需要削減模式跨越一定數(shù)目N個(gè)查詢,其中N>2。此外,削減算法可能需要削減模式通過順序/連續(xù)查詢而發(fā)生。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到可有利地使用的其它標(biāo)準(zhǔn)。在一個(gè)實(shí)施例中,有利地使用“熱門列表”。熱門列表包含所選擇的應(yīng)得到更高安全等級(jí)的個(gè)人。在一個(gè)實(shí)施例中,對(duì)所有查詢使用單個(gè)熱門列表,而不管用戶是誰。在熱門列表中列出的個(gè)人是名人的情況下,這種途徑可能是有用的。在另一實(shí)施例中,將熱門列表對(duì)每個(gè)用戶進(jìn)行個(gè)人化,使得該列表包含各個(gè)用戶認(rèn)識(shí)的個(gè)人。以這一方式,可以檢測(cè)并處理由特定用戶進(jìn)行的指向該用戶的熱門列表上的一個(gè)或多個(gè)個(gè)人的搜索,以保護(hù)匿名性和機(jī)密性。如上所述,數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件148僅僅說明提供各種優(yōu)點(diǎn)的一個(gè)實(shí)施例。在一個(gè)方面,通過定義應(yīng)用程序查詢規(guī)范和底層數(shù)據(jù)表示之間的松散耦合來獲得多個(gè)優(yōu)點(diǎn)。如同使用SQL的情況那樣,不是利用特定的表、列和關(guān)系信息來對(duì)應(yīng)用程序編碼,而是該應(yīng)用程序以更加抽象的方式定義數(shù)據(jù)查詢需求,該數(shù)據(jù)查詢需求隨后在運(yùn)行時(shí)被綁定到特定的物理數(shù)據(jù)表示。本發(fā)明松散的查詢-數(shù)據(jù)耦合使得請(qǐng)求實(shí)體(例如應(yīng)用程序),即使在底層數(shù)據(jù)表示被修改、或者將與全新的而不是在開發(fā)該請(qǐng)求實(shí)體時(shí)使用的物理數(shù)據(jù)表示一起使用該請(qǐng)求實(shí)體時(shí),也能起作用。在修改或重新構(gòu)造給定物理數(shù)據(jù)表示的情況下,更新對(duì)應(yīng)的數(shù)據(jù)儲(chǔ)存庫(kù)抽象,以反映對(duì)底層物理數(shù)據(jù)模型進(jìn)行的改變。同一組邏輯字段可通過查詢獲得以供使用,并且其僅僅被綁定到物理數(shù)據(jù)模型中的不同實(shí)體或位置。因此,即使對(duì)應(yīng)的物理數(shù)據(jù)模型已經(jīng)經(jīng)歷了重大改變,寫入到抽象查詢接口的請(qǐng)求實(shí)體也繼續(xù)不被改變地運(yùn)行。如果將與全新的而不是在開發(fā)請(qǐng)求實(shí)體時(shí)使用的物理數(shù)據(jù)表示一起使用該請(qǐng)求實(shí)體,則可以使用相同的技術(shù)(例如,關(guān)系數(shù)據(jù)庫(kù))但遵循不同的命名和組織信息策略(例如,不同大綱)來實(shí)現(xiàn)該新物理數(shù)據(jù)模型。新大綱將包含可使用簡(jiǎn)單、過濾和組合字段訪問方法技術(shù)映射到應(yīng)用程序所需的邏輯字段組的信息??商鎿Q地,新物理表示可使用用于表示類似信息的替換技術(shù)(例如,相對(duì)于關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)而使用基于XML的數(shù)據(jù)儲(chǔ)存庫(kù))。在任一種情況下,當(dāng)為其提供替換數(shù)據(jù)儲(chǔ)存庫(kù)抽象時(shí),被寫入以使用抽象查詢接口的現(xiàn)有請(qǐng)求實(shí)體可容易地移植,以使用新物理數(shù)據(jù)表示,該替換數(shù)據(jù)儲(chǔ)存庫(kù)抽象將查詢中引用的字段與新物理數(shù)據(jù)模型中的位置和物理表示相映射。對(duì)于最終用戶,數(shù)據(jù)儲(chǔ)存庫(kù)抽象提供了披露相關(guān)數(shù)據(jù)并防止訪問選定內(nèi)容的數(shù)據(jù)過濾機(jī)制。然而,應(yīng)當(dāng)理解,數(shù)據(jù)儲(chǔ)存庫(kù)抽象僅僅是本發(fā)明的一個(gè)實(shí)施例。更一般地,根據(jù)用戶數(shù)據(jù)的相關(guān)性,按照提供對(duì)查詢的執(zhí)行(或不執(zhí)行)的方式來實(shí)施本發(fā)明。也就是說,使查詢執(zhí)行依賴于最終用戶和在執(zhí)行時(shí)將由該查詢?cè)L問/返回的特定數(shù)據(jù)。然而,應(yīng)當(dāng)強(qiáng)調(diào)的是,本領(lǐng)域技術(shù)人員將容易地認(rèn)識(shí)到,可以與數(shù)據(jù)儲(chǔ)存庫(kù)抽象組件相分離地實(shí)現(xiàn)本發(fā)明的安全特征和機(jī)制。例如,在傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)的環(huán)境中,一個(gè)實(shí)施例使用來自查詢分析器的結(jié)構(gòu),該結(jié)構(gòu)將駐留在數(shù)據(jù)庫(kù)引擎中,以便執(zhí)行在此描述的分析。盡管前述內(nèi)容針對(duì)的是本發(fā)明的實(shí)施例,但是在不脫離本發(fā)明的基本范圍的情況下,可以設(shè)計(jì)本發(fā)明的其它和另外的實(shí)施例,而本發(fā)明的范圍由所附權(quán)利要求確定。權(quán)利要求1.一種對(duì)數(shù)據(jù)提供安全性的方法,包括接收由用戶發(fā)出的對(duì)數(shù)據(jù)庫(kù)的查詢;以及基于以下的至少一項(xiàng)來確定是否存在安全侵害模式(i)對(duì)所述查詢相對(duì)于至少一個(gè)其它先前從該用戶發(fā)出的查詢進(jìn)行的執(zhí)行前比較分析;以及(ii)對(duì)從所述查詢的執(zhí)行返回的結(jié)果和從所述至少一個(gè)其它先前發(fā)出的查詢的執(zhí)行返回的結(jié)果進(jìn)行的執(zhí)行后比較分析。2.如權(quán)利要求1所述的方法,其特征在于,所述至少一個(gè)其它先前發(fā)出的查詢僅包括從用戶的當(dāng)前登錄會(huì)話起的那些查詢。3.如權(quán)利要求1所述的方法,其特征在于,基于步驟(i)確定是否存在安全侵害模式包括確定所述查詢和所述至少一個(gè)其它先前發(fā)出的查詢之間的相對(duì)共同性。4.如權(quán)利要求3所述的方法,其特征在于,基于步驟(i)確定是否存在安全侵害模式還包括確定相對(duì)共同性是否小于預(yù)先定義的值;以及如果是這樣,則調(diào)用安全規(guī)則。5.如權(quán)利要求3所述的方法,其特征在于,基于步驟(ii)確定是否存在安全侵害模式還包括確定從所述查詢的執(zhí)行返回的結(jié)果和從所述至少一個(gè)其它先前發(fā)出的查詢的執(zhí)行返回的結(jié)果之間的共同結(jié)果的數(shù)目是否減小;如果是這樣,則確定相對(duì)共同性是否小于預(yù)先定義的值,并且如果是,則調(diào)用安全規(guī)則。6.如權(quán)利要求1所述的方法,其特征在于,基于步驟(i)確定是否存在安全侵害模式包括檢測(cè)所述查詢和所述至少一個(gè)其它先前發(fā)出的查詢的共同查詢條件被配置為返回不重疊結(jié)果。7.如權(quán)利要求1所述的方法,其特征在于,基于步驟(i)確定是否存在安全侵害模式包括檢測(cè)用戶獲取未經(jīng)授權(quán)的數(shù)據(jù)庫(kù)量的企圖,該企圖以所述查詢和所述至少一個(gè)其它先前發(fā)出的查詢的、被配置為返回至少部分不重疊的結(jié)果的一個(gè)或多個(gè)共同查詢條件的存在為特征。8.如權(quán)利要求1所述的方法,其特征在于,僅在所述查詢和所述至少一個(gè)其它先前發(fā)出的查詢被配置為訪問共同表列時(shí),才進(jìn)行基于步驟(i)確定是否存在安全侵害模式。9.如權(quán)利要求1所述的方法,其特征在于,基于步驟(ii)確定是否存在安全侵害模式包括檢測(cè)從所述查詢的執(zhí)行返回的結(jié)果和從所述至少一個(gè)其它先前發(fā)出的查詢的執(zhí)行返回的結(jié)果是不重疊的。10.如權(quán)利要求1所述的方法,其特征在于,基于步驟(ii)確定是否存在安全侵害模式包括檢測(cè)結(jié)果子集構(gòu)造的模式。11.如權(quán)利要求1所述的方法,還包括如果存在安全侵害模式,則調(diào)用安全規(guī)則。12.如權(quán)利要求11所述的方法,其特征在于,當(dāng)進(jìn)行步驟(i)之后確定存在安全侵害模式時(shí)調(diào)用安全規(guī)則包括終止所述查詢。13.如權(quán)利要求11所述的方法,其特征在于,當(dāng)進(jìn)行步驟(ii)之后確定存在安全侵害模式時(shí)調(diào)用安全規(guī)則包括阻止用戶獲得從所述查詢的執(zhí)行返回的結(jié)果。14.一種對(duì)數(shù)據(jù)提供安全性的方法,包括從用戶接收多個(gè)查詢;執(zhí)行對(duì)數(shù)據(jù)庫(kù)的所述多個(gè)查詢;接收用戶發(fā)出的對(duì)數(shù)據(jù)庫(kù)的后續(xù)查詢;以及基于所述多個(gè)查詢和后續(xù)查詢,有計(jì)劃地確定是否可以識(shí)別用戶從數(shù)據(jù)庫(kù)訪問未經(jīng)授權(quán)的數(shù)據(jù)量的嘗試。15.如權(quán)利要求14所述的方法,其特征在于,有計(jì)劃地確定包括檢測(cè)所述后續(xù)查詢和多個(gè)查詢的共同查詢條件被配置為返回至少部分不重疊的結(jié)果。16.一種對(duì)數(shù)據(jù)提供安全性的方法,包括從用戶接收多個(gè)查詢;執(zhí)行對(duì)數(shù)據(jù)庫(kù)的所述多個(gè)查詢;接收用戶發(fā)出的對(duì)數(shù)據(jù)庫(kù)的后續(xù)查詢;執(zhí)行該后續(xù)查詢;以及基于所述多個(gè)查詢和后續(xù)查詢,有計(jì)劃地確定是否可以識(shí)別用戶繞開防止唯一地識(shí)別個(gè)人的安全限制的嘗試。17.如權(quán)利要求16所述的方法,其特征在于,有計(jì)劃地確定包括確定后續(xù)查詢和所述多個(gè)查詢之間的相對(duì)共同性;確定從后續(xù)查詢的執(zhí)行返回的結(jié)果和從所述多個(gè)查詢的執(zhí)行返回的結(jié)果之間的共同結(jié)果數(shù)目是否減??;如果是這樣,則確定相對(duì)共同性是否小于預(yù)先定義的值,并且如果是,則調(diào)用安全規(guī)則。18.如權(quán)利要求16所述的方法,其特征在于,有計(jì)劃地確定包括檢測(cè)結(jié)果子集構(gòu)造的模式。19.一種為具有特定物理數(shù)據(jù)表示的數(shù)據(jù)提供安全性的方法,包括提供包括用于定義抽象查詢的多個(gè)邏輯字段的查詢規(guī)范;提供將所述多個(gè)邏輯字段映射到數(shù)據(jù)的物理實(shí)體的映射規(guī)則;提供安全規(guī)則;接收用戶發(fā)出的對(duì)數(shù)據(jù)的抽象查詢,其中,該抽象查詢根據(jù)查詢規(guī)范來定義,并配置有至少一個(gè)邏輯字段值;以及相對(duì)于至少一個(gè)先前從用戶接收的抽象查詢,分析該抽象查詢,以檢測(cè)促使調(diào)用安全規(guī)則的安全侵害活動(dòng)的存在性。20.如權(quán)利要求19所述的方法,其特征在于,分析該抽象查詢和至少一個(gè)先前從用戶接收的抽象查詢以檢測(cè)安全侵害活動(dòng)的存在性包括進(jìn)行對(duì)該抽象查詢和至少一個(gè)其它先前從用戶發(fā)出的抽象查詢的執(zhí)行前比較分析。21.如權(quán)利要求19所述的方法,其特征在于,分析該抽象查詢和至少一個(gè)先前從用戶接收的抽象查詢以檢測(cè)安全侵害活動(dòng)的存在性包括進(jìn)行對(duì)從該抽象查詢的執(zhí)行返回的結(jié)果和從該至少一個(gè)其它先前發(fā)出的抽象查詢的執(zhí)行返回的結(jié)果的執(zhí)行后比較分析。22.如權(quán)利要求19所述的方法,還包括檢測(cè)安全侵害活動(dòng)的存在性;以及調(diào)用安全規(guī)則。23.一種包含指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)執(zhí)行所述指令時(shí),進(jìn)行安全侵害識(shí)別操作,包括接收由用戶發(fā)出的對(duì)數(shù)據(jù)庫(kù)的查詢;以及基于以下的至少一項(xiàng)來確定是否存在安全侵害模式(i)對(duì)所述查詢相對(duì)于至少一個(gè)其它先前從該用戶發(fā)出的查詢進(jìn)行的執(zhí)行前比較分析;以及(ii)對(duì)從所述查詢的執(zhí)行返回的結(jié)果和從所述至少一個(gè)其它先前發(fā)出的查詢的執(zhí)行返回的結(jié)果進(jìn)行的執(zhí)行后比較分析。24.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述至少一個(gè)其它先前發(fā)出的查詢僅包括從用戶的當(dāng)前登錄會(huì)話起的那些查詢。25.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,基于步驟(i)確定是否存在安全侵害模式包括確定所述查詢和所述至少一個(gè)其它先前發(fā)出的查詢之間的相對(duì)共同性。26.如權(quán)利要求25所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,基于步驟(i)確定是否存在安全侵害模式還包括確定相對(duì)共同性是否小于預(yù)先定義的值;以及如果是這樣,則調(diào)用安全規(guī)則。27.如權(quán)利要求25所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,基于步驟(ii)確定是否存在安全侵害模式還包括確定從所述查詢的執(zhí)行返回的結(jié)果和從所述至少一個(gè)其它先前發(fā)出的查詢的執(zhí)行返回的結(jié)果之間的共同結(jié)果數(shù)目是否減??;如果是這樣,則確定相對(duì)共同性是否小于預(yù)先定義的值,并且如果是,則調(diào)用安全規(guī)則。28.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,基于步驟(i)確定是否存在安全侵害模式包括檢測(cè)所述查詢和所述至少一個(gè)其它先前發(fā)出的查詢的共同查詢條件被配置為返回不重疊結(jié)果。29.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,基于步驟(i)確定是否存在安全侵害模式包括檢測(cè)用戶獲取未經(jīng)授權(quán)的數(shù)據(jù)庫(kù)量的企圖,該企圖以所述查詢和所述至少一個(gè)其它先前發(fā)出的查詢的、被配置為返回至少部分不重疊的結(jié)果的一個(gè)或多個(gè)共同查詢條件的存在為特征。30.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,僅在所述查詢和所述至少一個(gè)其它先前發(fā)出的查詢被配置為訪問共同表列時(shí),才進(jìn)行基于步驟(i)確定是否存在安全侵害模式。31.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,基于步驟(ii)確定是否存在安全侵害模式包括檢測(cè)從所述查詢的執(zhí)行返回的結(jié)果和從所述至少一個(gè)其它先前發(fā)出的查詢的執(zhí)行返回的結(jié)果是不重疊的。32.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,基于步驟(ii)確定是否存在安全侵害模式包括檢測(cè)結(jié)果子集構(gòu)造的模式。33.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),還包括,如果存在安全侵害模式,則調(diào)用安全規(guī)則。34.如權(quán)利要求33所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,當(dāng)進(jìn)行步驟(i)之后確定存在安全侵害模式時(shí)調(diào)用安全規(guī)則包括終止所述查詢。35.如權(quán)利要求33所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,當(dāng)進(jìn)行步驟(ii)之后確定存在安全侵害模式時(shí)調(diào)用安全規(guī)則包括阻止用戶獲得從所述查詢的執(zhí)行返回的結(jié)果。36.一種包含安全驗(yàn)證指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)執(zhí)行所述安全驗(yàn)證指令時(shí),進(jìn)行安全驗(yàn)證操作,包括從用戶接收多個(gè)查詢;執(zhí)行對(duì)數(shù)據(jù)庫(kù)的所述多個(gè)查詢;接收用戶發(fā)出的對(duì)數(shù)據(jù)庫(kù)的后續(xù)查詢;以及基于所述多個(gè)查詢和后續(xù)查詢,有計(jì)劃地確定是否可以識(shí)別用戶從數(shù)據(jù)庫(kù)訪問未經(jīng)授權(quán)的數(shù)據(jù)量的嘗試。37.如權(quán)利要求36所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,有計(jì)劃地確定包括檢測(cè)后續(xù)查詢和所述多個(gè)查詢的共同查詢條件被配置為返回至少部分不重疊的結(jié)果。38.一種包含安全驗(yàn)證指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)執(zhí)行所述安全驗(yàn)證指令時(shí),進(jìn)行安全驗(yàn)證操作,包括從用戶接收多個(gè)查詢;執(zhí)行對(duì)數(shù)據(jù)庫(kù)的所述多個(gè)查詢;接收用戶發(fā)出的對(duì)數(shù)據(jù)庫(kù)的后續(xù)查詢;執(zhí)行該后續(xù)查詢;以及基于所述多個(gè)查詢和后續(xù)查詢,有計(jì)劃地確定是否可以識(shí)別用戶繞開防止唯一地識(shí)別個(gè)人的安全限制的嘗試。39.如權(quán)利要求38所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,有計(jì)劃地確定包括確定后續(xù)查詢和所述多個(gè)查詢之間的相對(duì)共同性;確定從后續(xù)查詢的執(zhí)行返回的結(jié)果和從所述多個(gè)查詢的執(zhí)行返回的結(jié)果之間的共同結(jié)果數(shù)目是否減小;如果是這樣,則確定相對(duì)共同性是否小于預(yù)先定義的值,并且如果是,則調(diào)用安全規(guī)則。40.如權(quán)利要求38所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,有計(jì)劃地確定包括檢測(cè)結(jié)果子集構(gòu)造的模式。41.一種包括存儲(chǔ)在其上的信息的計(jì)算機(jī)可讀介質(zhì),該信息包括查詢規(guī)范,包括用于定義抽象查詢的多個(gè)邏輯字段;將所述多個(gè)邏輯字段映射到數(shù)據(jù)的物理實(shí)體的多個(gè)映射規(guī)則;多個(gè)安全規(guī)則;運(yùn)行時(shí)間組件,可執(zhí)行以響應(yīng)于接收到用戶發(fā)出的對(duì)數(shù)據(jù)的抽象查詢而執(zhí)行安全侵害活動(dòng)檢測(cè)操作,其中,該抽象查詢根據(jù)查詢規(guī)范來定義,并配置有至少一個(gè)邏輯字段值,所述安全侵害活動(dòng)檢測(cè)操作包括接收用戶發(fā)出的對(duì)數(shù)據(jù)的抽象查詢,其中,該抽象查詢根據(jù)查詢規(guī)范來定義,并配置有至少一個(gè)邏輯字段值;以及相對(duì)于至少一個(gè)先前從用戶接收的抽象查詢,分析該抽象查詢,以檢測(cè)促使調(diào)用安全規(guī)則的安全侵害活動(dòng)的存在性。42.如權(quán)利要求41所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,分析所述抽象查詢和所述至少一個(gè)先前從用戶接收的抽象查詢以檢測(cè)安全侵害活動(dòng)的存在性包括進(jìn)行對(duì)所述抽象查詢和至少一個(gè)其它先前從用戶發(fā)出的抽象查詢的執(zhí)行前比較分析。43.如權(quán)利要求41所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,分析所述抽象查詢和所述至少一個(gè)先前從用戶接收的抽象查詢以檢測(cè)安全侵害活動(dòng)的存在性包括進(jìn)行對(duì)從所述抽象查詢的執(zhí)行返回的結(jié)果和從所述至少一個(gè)其它先前發(fā)出的抽象查詢的執(zhí)行返回的結(jié)果的執(zhí)行后比較分析。44.如權(quán)利要求41所述的計(jì)算機(jī)可讀介質(zhì),還包括檢測(cè)安全侵害活動(dòng)的存在性;以及調(diào)用安全規(guī)則。45.如權(quán)利要求41所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,安全規(guī)則防止執(zhí)行所述抽象查詢。46.如權(quán)利要求41所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,安全規(guī)則定義為記錄從用戶接收到抽象查詢。全文摘要用于保護(hù)數(shù)據(jù)的系統(tǒng)、方法和工業(yè)產(chǎn)品。分析查詢(202)以檢測(cè)安全侵害嘗試。在一個(gè)實(shí)施例中,實(shí)現(xiàn)了用于檢測(cè)選定安全侵害模式的算法(151)。通常,可以在執(zhí)行查詢(202)之前和執(zhí)行查詢(202)之后檢測(cè)模式。說明性的模式包括聯(lián)合查詢分析(340)、削減分析(342)、不重疊(338)以及其它。文檔編號(hào)G06F21/00GK1708945SQ200380102441公開日2005年12月14日申請(qǐng)日期2003年10月17日優(yōu)先權(quán)日2002年10月31日發(fā)明者理查德·D·德廷杰,理查德·J·史蒂文斯申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司