并且在某些情況下,可以刪除那些查詢。
[0048] 此模型針對所有對象工作,支持層次角色,并且在分布式環(huán)境中可縮放。此外,此 模型可以被擴(kuò)展至其他DDL操作,其他DDL操作只要在提交的DDL語句和實際生效的語句之 間的一些延遲時間被容許,就可被使用。
[0049]圖5是根據(jù)本文描述的原理的驗證系統(tǒng)(500)的示例的示意圖。在此示例中,在驗 證系統(tǒng)(500)中可以存在以下引擎:存儲引擎(502)、條件引擎(504)、重新編譯引擎(506)、 密鑰產(chǎn)生引擎(508)、公布引擎(510)、訂閱引擎(512)、通知接收引擎(514)、本地節(jié)點發(fā)送 引擎(516)和查詢執(zhí)行引擎(518)。引擎(502、504、506、508、510、512、514、516、518)指的是 用于執(zhí)行指定功能的硬件和程序指令的組合。引擎(502、504、506、508、510、512、514、516、 518)中的每一個可以包括處理器和存儲器。程序指令被存儲在存儲器中并促使處理器執(zhí)行 引擎的指定功能。
[0050]存儲引擎(502)將查詢存儲在節(jié)點的本地緩存中。條件引擎(504)確定影響查詢的 條件的改變。條件引擎(504)可以使用由公布引擎(510)產(chǎn)生的密鑰公布表確定是否存在影 響查詢的改變。密鑰產(chǎn)生引擎(508)可以響應(yīng)于改變的條件產(chǎn)生密鑰并促使行被添加至指 示改變的公布,在一些情況下,指示相關(guān)細(xì)節(jié)。
[0051] 節(jié)點的訂閱引擎(512)可以訂閱以接收對查詢公布表的改變的通知。節(jié)點可以具 有通知接收引擎(514)以接收關(guān)于改變的通知。本地節(jié)點發(fā)送引擎(516)可以廣播或另外將 通知發(fā)送至本地節(jié)點。如果影響本地存儲的查詢的條件改變,則重新編譯引擎(506)重新編 譯該查詢。查詢執(zhí)行引擎(518)促使查詢基于存儲在本地緩存中的查詢計劃而執(zhí)行。
[0052] 圖6是根據(jù)本文描述的原理的驗證系統(tǒng)(600)的示例的示意圖。在此示例中,驗證 系統(tǒng)(600)包括與存儲器資源(604)通信的處理資源(602)。處理資源(602)包括至少一個處 理器和用于處理程序化指令的其他資源。存儲器資源(604)通常表示能夠存儲諸如程序化 指令的數(shù)據(jù)的任意存儲器或由驗證系統(tǒng)(600)使用的數(shù)據(jù)結(jié)構(gòu)的任意存儲器。示出的存儲 在存儲器資源(604)中的程序化指令包括撤銷發(fā)布器(606)、無效密鑰產(chǎn)生器(608)、表修改 器(610)、訂閱器(612)、通知發(fā)送器(614)、通知接收器(616)、通知廣播器(618)、查詢計劃 確定器(620)、查詢計劃保存器(622)、查詢重新編譯器(626)、驗證狀態(tài)檢查器(628)和查詢 計劃執(zhí)行器(630)。示出的存儲在存儲器資源(604)中的數(shù)據(jù)結(jié)構(gòu)包括本地緩存(624)。 [0053]存儲器資源(604)包括計算機(jī)可讀存儲介質(zhì),該計算機(jī)可讀存儲介質(zhì)包含計算機(jī) 可讀程序代碼以促使任務(wù)由處理資源(602)執(zhí)行。計算機(jī)可讀存儲介質(zhì)可以是有形的和/或 非瞬態(tài)的存儲介質(zhì)。計算機(jī)可讀存儲介質(zhì)可以是非傳輸存儲介質(zhì)的任意適當(dāng)?shù)拇鎯橘|(zhì)。 計算機(jī)可讀存儲介質(zhì)類型的非詳盡列表包括非易失性存儲器、易失性存儲器、隨機(jī)訪問存 儲器、基于憶阻器的存儲器、只寫存儲器、閃存、電可擦除只讀存儲器、磁性存儲介質(zhì)、其他 類型的存儲器或其組合。
[0054]撤銷發(fā)布器(606)表示在被執(zhí)行時促使處理資源(602)響應(yīng)于用戶權(quán)限的改變發(fā) 布撤銷聲明的程序化指令。無效密鑰產(chǎn)生器(608)表示在被執(zhí)行時促使處理資源(602)基于 改變而產(chǎn)生無效密鑰的程序化指令。表修改器(610)表示在被執(zhí)行時促使處理資源(602)使 用無效密鑰修改密鑰公布表的程序化指令。
[0055]訂閱器(612)表示在被執(zhí)行時促使處理資源(602)訂閱提供關(guān)于對密鑰公布表作 出改變的通知的服務(wù)的程序化指令。通知發(fā)送器(614)表示在被執(zhí)行時促使處理資源(602) 發(fā)送關(guān)于對密鑰公開表的改變的通知的程序化指令。通知接收器(616)表示在被執(zhí)行時促 使處理資源(602)接收發(fā)送的通知的程序化指令。通知廣播器(618)表示在被執(zhí)行時促使處 理資源(602)將通知廣播至本地節(jié)點的程序化指令。
[0056]查詢計劃確定器(620)表示在被執(zhí)行時促使處理資源(602)基于提交的查詢輸入 確定查詢計劃的程序化指令。查詢計劃保存器(622)表示在被執(zhí)行時促使處理資源(602)將 由查詢計劃確定器(620)開發(fā)的查詢計劃保存在本地節(jié)點的本地緩存(624)中的程序化指 令。
[0057]查詢重新編譯器(626)表示在被執(zhí)行時促使處理資源(602)在條件改變影響查詢 計劃的情況下重新編譯查詢計劃的程序化指令。例如,如果存在權(quán)限改變、索引改變、關(guān)系 改變、對完全新的查詢計劃的產(chǎn)生沒有必要的另一種類型的改變,則查詢重新編譯器(626) 可以重新編譯查詢。驗證狀態(tài)檢查器(628)表示在被執(zhí)行時促使處理資源(602)在查詢執(zhí)行 之前檢查改變的狀態(tài)的程序化指令。查詢計劃執(zhí)行器(630)表示在被執(zhí)行時促使處理資源 (602)執(zhí)行查詢計劃的程序化指令。
[0058]進(jìn)一步,存儲器資源(604)可以是安裝包的一部分。響應(yīng)于安裝該安裝包,存儲器 資源(604)的程序化指令可以從諸如便攜式介質(zhì)、服務(wù)器、遠(yuǎn)程網(wǎng)絡(luò)位置、另一個位置或其 組合之類的安裝包的源下載。兼容本文描述的原理的便捷式存儲器介質(zhì)包括DVD、CD、閃存、 移動硬盤、磁盤、光盤、其他形式的便攜式存儲器或其組合。在其他示例中,程序指令已經(jīng)被 安裝。這里,存儲器資源可以包括諸如硬盤驅(qū)動器、固態(tài)硬盤驅(qū)動器等的集成存儲器。
[0059] 在一些示例中,處理資源(602)和存儲器資源(604)被放置在諸如服務(wù)器或網(wǎng)絡(luò)部 件的同一物理部件內(nèi)。存儲器資源(604)可以是物理部件的主存儲器、緩存、寄存器、非易失 性存儲器或物理部件存儲器層級中的別處的一部分??商娲?,存儲器資源(604)可以通過 網(wǎng)絡(luò)與處理資源(602)通信。進(jìn)一步,諸如文件庫的數(shù)據(jù)結(jié)構(gòu)可以通過網(wǎng)絡(luò)連接從遠(yuǎn)程位置 訪問,而程序化指令被本地放置。因此,驗證系統(tǒng)(600)可以被實現(xiàn)在用戶設(shè)備、服務(wù)器、月艮 務(wù)器集合或其組合上。
[0060] 圖6的驗證系統(tǒng)(600)可以是通用計算機(jī)的一部分。然而,在可替代地示例中,驗證 系統(tǒng)(600)是專用集成電路的一部分。
[0061] 已經(jīng)提出的上面描述僅說明和描述所描述的原理的示例。此描述不意在窮舉或?qū)?這些原理限制到所公開的任意精確形式。根據(jù)上面的教導(dǎo),許多修改和變形是可能的。
【主權(quán)項】
1. 一種對數(shù)據(jù)庫查詢執(zhí)行進(jìn)行驗證的方法,包括: 確定存儲的數(shù)據(jù)庫查詢的條件是否已經(jīng)改變; 如果存在所述條件的改變,則重新編譯所述數(shù)據(jù)庫查詢;以及 基于所述改變產(chǎn)生密鑰。2. 根據(jù)權(quán)利要求1所述的方法,其中所述條件是權(quán)限撤銷、訪問類型或其組合。3. 根據(jù)權(quán)利要求1所述的方法,其中所述條件是數(shù)據(jù)庫表的修改。4. 根據(jù)權(quán)利要求1所述的方法,其中所述條件是數(shù)據(jù)庫表的關(guān)系。5. 根據(jù)權(quán)利要求1所述的方法,其中所述密鑰包括主題字段、對象字段和類型字段。6. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括:將所述密鑰發(fā)送至執(zhí)行查詢的本地節(jié)點。7. 根據(jù)權(quán)利要求1所述的方法,其中確定所述數(shù)據(jù)庫查詢的條件是否已經(jīng)改變包括:使 用訂閱來訂閱密鑰公布表引擎。8. 根據(jù)權(quán)利要求7所述的方法,進(jìn)一步包括:在所述條件已經(jīng)改變時,基于所述訂閱從 所述密鑰公布表引擎接收通知。9. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括:將所述數(shù)據(jù)庫查詢存儲在存儲裝置中。10. -種用于對數(shù)據(jù)庫查詢執(zhí)行進(jìn)行驗證的系統(tǒng),包括: 存儲引擎,用于將數(shù)據(jù)庫查詢存儲在存儲裝置中; 條件引擎,用于確定所述數(shù)據(jù)庫查詢的條件是否已經(jīng)改變;以及 重新編譯引擎,用于如果存在所述條件的改變,則重新編譯所述數(shù)據(jù)庫查詢。11. 根據(jù)權(quán)利要求10所述的系統(tǒng),進(jìn)一步包括:用于基于所述改變產(chǎn)生密鑰的密鑰產(chǎn)生 引擎。12. 根據(jù)權(quán)利要求10所述的系統(tǒng),進(jìn)一步包括:用于追蹤對所述條件的改變的密鑰公布 表引擎。13. 根據(jù)權(quán)利要求12所述的系統(tǒng),進(jìn)一步包括:用于訂閱密鑰公布表引擎的訂閱引擎。14. 根據(jù)權(quán)利要求10所述的系統(tǒng),進(jìn)一步包括:用于執(zhí)行所述數(shù)據(jù)庫查詢的數(shù)據(jù)庫查詢 執(zhí)行引擎。15. -種用于對數(shù)據(jù)庫查詢執(zhí)行進(jìn)行驗證的計算機(jī)程序產(chǎn)品,包括: 包括程序指令的非瞬態(tài)計算機(jī)可讀存儲介質(zhì),所述程序指令在被執(zhí)行時促使處理器: 將數(shù)據(jù)庫查詢存儲在存儲裝置中; 確定是否存在所述數(shù)據(jù)庫查詢的條件的改變; 基于所述改變產(chǎn)生密鑰; 將所述密鑰發(fā)送至數(shù)據(jù)庫查詢執(zhí)行引擎;以及 如果所述條件已經(jīng)改變,則重新編譯所述數(shù)據(jù)庫查詢。
【專利摘要】對查詢執(zhí)行進(jìn)行驗證包括確定查詢的條件是否已經(jīng)改變,并且如果條件已經(jīng)改變,則重新編譯查詢。
【IPC分類】G06F17/30
【公開號】CN105683950
【申請?zhí)枴?br>【發(fā)明人】S·蘇比亞, R·S·馬頓, H·澤勒, B·L·弗里奇曼, G·M·舒爾茨, 詹姆斯·A·卡普斯, 邁克爾·J·漢隆
【申請人】慧與發(fā)展有限責(zé)任合伙企業(yè)
【公開日】2016年6月15日
【申請日】2013年10月29日