專利名稱:非關(guān)系型查詢語言與關(guān)系型數(shù)據(jù)存儲的集成的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理和數(shù)據(jù)管理,尤其涉及非關(guān)系型查詢語言與關(guān)系型數(shù)據(jù)處理環(huán)境的集成。
背景技術(shù):
關(guān)系型數(shù)據(jù)庫被廣泛地用于維護數(shù)據(jù)。目前,世界上絕大多數(shù)的數(shù)據(jù)存儲是基于關(guān)系型數(shù)據(jù)模型的。從而,常常由SQL(結(jié)構(gòu)化查詢語言)標準的變化來主導訪問。例如,眾多公司在SQL兼容的數(shù)據(jù)庫中維護組織、產(chǎn)品和顧客數(shù)據(jù)。SQL是用于在關(guān)系型數(shù)據(jù)庫中詢問和處理數(shù)據(jù)的語言。通常為結(jié)合大型機使用而開發(fā)的被設計用于客戶機/服務器環(huán)境的大多數(shù)數(shù)據(jù)庫管理系統(tǒng)(DBMS)支持SQL。
可以與關(guān)系型DBMS結(jié)合使用特別或非標準化查詢來基于所定義的準則來標識信息。換言之,當出現(xiàn)需求時,可以構(gòu)成特別查詢來回答問題。例如,可以構(gòu)成標識駐留在特定郵政編碼的地理界限內(nèi)的所有人的特別查詢。
然而,由于某些原因,眾多數(shù)據(jù)庫管理員避免授予用戶特別查詢的能力。一個原因是,編寫和執(zhí)行含有眾多復雜參數(shù)的特別查詢可能會損害主存數(shù)據(jù)庫的服務器的性能。另一原因是安全。通常數(shù)據(jù)庫包含個人或敏感數(shù)據(jù)(例如,社會保障和信用卡帳號)。授予用戶特別許可有時可能危及該信息的安全和機密性。
為這些原因,數(shù)據(jù)庫管理員通常使用“存儲過程”,它實際上是其中僅有小部分(例如,參數(shù))可改變的內(nèi)置的查詢。例如,存儲過程可以被定義為標識在特定郵政編碼區(qū)域中擁有營業(yè)場所的顧客。根據(jù)該示例性存儲過程,用戶僅需輸入郵政編碼的值來獲取結(jié)果。換言之,用戶可以調(diào)用存儲過程并傳遞所期望的郵政編碼作為被標識的參數(shù)。
存儲過程是SQL標準的基石特征,且類似于典型編程語言中的函數(shù),它使得數(shù)據(jù)庫管理員能預先確定針對該數(shù)據(jù)庫執(zhí)行的查詢。查詢的預先確定可以在數(shù)據(jù)庫行為中提供額外的安全等級和性能可預測性。關(guān)系型數(shù)據(jù)庫的許多用戶排他地依賴于存儲過程,因此禁用了由數(shù)據(jù)庫消費任意(例如,特別)查詢的能力。
最近,興起描述表示數(shù)據(jù)和向商業(yè)應用程序的伙伴發(fā)送數(shù)據(jù)的方法的被稱為XML(可擴展標記語言)的新技術(shù)。XML允許設計者創(chuàng)建他們自定義的標簽,來允許在應用程序之間和組織之間定義、傳輸、確認以及解釋數(shù)據(jù)。
從而,特別為XML數(shù)據(jù)創(chuàng)建了XML查詢語言。由定義,這些語言不能查詢關(guān)系型數(shù)據(jù)模型的數(shù)據(jù)庫。缺乏這種查詢能力造成不均衡,因為這些數(shù)據(jù)訪問方法和/或語言與大多數(shù)現(xiàn)有數(shù)據(jù)存儲不兼容。例如,在關(guān)系型數(shù)據(jù)庫中維護大量數(shù)據(jù),而公司想要通過XML來訪問它。通過這樣做,公司可以開發(fā)利用XML的應用程序并利用XML與其商業(yè)伙伴交互。換言之,存在兼容性中的不均衡,因為存在XML數(shù)據(jù)格式、關(guān)系型數(shù)據(jù)格式、XML查詢語言和關(guān)系型查詢語言。
最近的開發(fā)是針對用于將查詢的行集合(例如,SQL)結(jié)果變換成分層(例如,XML)數(shù)據(jù)流的計算機化的系統(tǒng)和方法。然而,對于使用非關(guān)系型(例如,XML)查詢語言來通過存儲過程訪問數(shù)據(jù),從而從關(guān)系型(例如,SQL)數(shù)據(jù)庫中獲取結(jié)果,仍然存在未解決的問題。從而,存在對可以使用XML查詢語言來從關(guān)系型數(shù)據(jù)存儲中獲取信息的系統(tǒng)的未被滿足的需求。尤其需要,允許使用非關(guān)系型查詢語言來調(diào)用關(guān)系型數(shù)據(jù)存儲內(nèi)的存儲過程以訪問其中的數(shù)據(jù)的系統(tǒng)和/或方法。
發(fā)明內(nèi)容
以下提供了本發(fā)明的簡化的概述,以提供對本發(fā)明的一個或多個方面的基本理解。該概述不是本發(fā)明的廣泛的概觀。它既不旨在標識本發(fā)明的關(guān)鍵或重要的元素,也不描繪本發(fā)明的范圍。該概述的唯一的目的是以簡化的形式呈現(xiàn)作為之后呈現(xiàn)的更詳細描述的序言的本發(fā)明的某些概念。
此處所揭示和要求的本發(fā)明,在其中的一個方面,包含使用非關(guān)系型(例如,XML)查詢語言來訪問結(jié)合關(guān)系型(例如,SQL)DBMS使用的存儲過程的系統(tǒng)和/或方法。使用SQL的存儲過程允許可以針對關(guān)系型數(shù)據(jù)庫執(zhí)行的查詢的預先確定。如上所述,最近關(guān)于非關(guān)系型數(shù)據(jù)模型查詢語言進行了大量的研究。由定義,這些語言不能查詢關(guān)系型數(shù)據(jù)模型數(shù)據(jù)庫。缺乏這種能力導致不均衡,因為這些數(shù)據(jù)訪問方法與關(guān)系型數(shù)據(jù)存儲不兼容。本發(fā)明連接這之間的差異,并允許非關(guān)系型查詢語言與關(guān)系型數(shù)據(jù)存儲的集成。
本發(fā)明的各方面提供從非關(guān)系型查詢語言對以非關(guān)系型查詢語言的存儲過程的支持。該支持可以通過以下生效(1)定義當前數(shù)據(jù)模型中的關(guān)系型數(shù)據(jù)的視圖以及(2)提供使用例如函數(shù)等來從非關(guān)系型查詢語言引用存儲過程的機制。
在一個方面中,提供了便于通過非關(guān)系型查詢組件從關(guān)系型數(shù)據(jù)存儲中訪問數(shù)據(jù)的系統(tǒng)。根據(jù)該方面,集成組件可以將在非關(guān)系型查詢組件內(nèi)定義的函數(shù)轉(zhuǎn)換為對存儲過程的調(diào)用??梢岳斫?,存儲過程可以便于對關(guān)系型數(shù)據(jù)存儲內(nèi)的數(shù)據(jù)的訪問。而且,可以使用轉(zhuǎn)換組件,它將從關(guān)系型數(shù)據(jù)存儲(例如,SQL)中檢索得到的數(shù)據(jù)轉(zhuǎn)換為與非關(guān)系型查詢組件(例如,XML)一致的非關(guān)系型格式。
在一個方面,數(shù)據(jù)為動態(tài)類型的數(shù)據(jù)。一替換的方面是針對其中數(shù)據(jù)是靜態(tài)類型的數(shù)據(jù)的系統(tǒng)??梢詡鬟f一個或一組參數(shù)來標識存儲過程,以及定義將由該存儲過程使用的準則。在靜態(tài)類型的方面中,可以使用能夠就類型對參數(shù)和數(shù)據(jù)進行確認的組件。
替換的方面結(jié)合本發(fā)明使用促進集成的邏輯和推斷機制。例如,可以使用促進接口組件的制定決策功能的基于規(guī)則和/或人工智能的機制。
為了達到前述以及相關(guān)的目的,此處結(jié)合以下描述和附圖描述本發(fā)明的某些說明性的方面。然而,這些方面僅指示可以使用本發(fā)明的原則的各種方式中的少數(shù)幾種,且本發(fā)明旨在包含所有這樣的方面以及其等效實施方式。結(jié)合附圖閱讀以下本發(fā)明的詳細描述時,本發(fā)明的其它優(yōu)點和新穎的特征將變得明顯。
圖1示出了根據(jù)本發(fā)明的一方面,含有促進非關(guān)系型查詢語言與關(guān)系型數(shù)據(jù)存儲之間的集成的接口組件的系統(tǒng)的一般組件框圖。
圖2示出了根據(jù)本發(fā)明的一動態(tài)類型方面,在非關(guān)系型查詢語言與關(guān)系型數(shù)據(jù)存儲之間的示例性集成的一般體系結(jié)構(gòu)示意圖。
圖3示出了根據(jù)本發(fā)明的一靜態(tài)類型方面,在非關(guān)系型查詢語言與關(guān)系型數(shù)據(jù)存儲之間的示例性集成的一般體系結(jié)構(gòu)示意圖。
圖4示出了根據(jù)本發(fā)明,便于確認的另一可替換靜態(tài)類型方面的一般體系結(jié)構(gòu)示意圖。
圖5示出了根據(jù)本發(fā)明的一替換方面,使用基于規(guī)則的決策機制的可替換接口組件的組件框圖。
圖6示出了根據(jù)本發(fā)明的一替換方面,使用基于人工智能的決策機制的可替換接口組件的組件框圖。
圖7示出了根據(jù)一揭示的動態(tài)類型方面,用于集成非關(guān)系型查詢語言與關(guān)系型數(shù)據(jù)存儲的過程的示例性流程。
圖8示出了根據(jù)一揭示的靜態(tài)類型方面,用于集成非關(guān)系型查詢語言與關(guān)系型數(shù)據(jù)存儲的過程的示例性流程。
圖9示出了可用于執(zhí)行所揭示的體系結(jié)構(gòu)的計算機的框圖。
圖10示出了根據(jù)本發(fā)明的示例性計算環(huán)境的示意性框圖。
具體實施例方式
現(xiàn)在參照附圖描述本發(fā)明,在全部附圖中,相同的參考標號指的是同樣的元素。在以下描述中,為說明起見,描述了眾多具體細節(jié),以提供對本發(fā)明的徹底理解。然而顯然,本發(fā)明可以無需這些具體細節(jié)而實現(xiàn)。在其它實例中,公知的結(jié)構(gòu)和設備以框圖形式示出,以便描述本發(fā)明。
如在本申請中所使用的,術(shù)語“組件”和“系統(tǒng)”指的是計算機相關(guān)的實體,它們或者是硬件、硬件和軟件的組合、軟件或者是執(zhí)行中的軟件。例如,組件可以是,但不限于,運行在處理器上的進程、處理器、對象、可執(zhí)行代碼、執(zhí)行的線程、程序和/或計算機。作為說明,運行在服務器上的應用程序和服務器本身都可以是組件。一個或多個組件可以駐留在進程和/或執(zhí)行中的線程內(nèi),且組件可以位于一臺計算機上和/或分布在兩臺或多臺計算機之間。
如此處所用,術(shù)語“推斷”和“推論”一般指的是從通過事件和/或數(shù)據(jù)捕捉到的一組觀察值中推出或推斷系統(tǒng)、環(huán)境和/或用戶的狀態(tài)的過程。推論例如可以被用來標識具體的上下文或動作,或者可以生成狀態(tài)上的概率分布。推論可以是概率性的,即,基于對數(shù)據(jù)和事件的考慮進行對所關(guān)心的狀態(tài)上的概率分布的計算。推論也可以指的是用于從一組事件和/或數(shù)據(jù)中組成更高級的事件的技術(shù)。這樣的推論導致從一組觀察到的事件和/或存儲的事件數(shù)據(jù)中構(gòu)造出新的事件或動作,而不論原先的事件是否在時間上緊密相關(guān),也不論原先的事件和數(shù)據(jù)是來自一個還是若干個事件和數(shù)據(jù)源。
最初參考圖1,示出了根據(jù)本發(fā)明促進非關(guān)系型查詢語言與關(guān)系型數(shù)據(jù)存儲環(huán)境之間的集成的系統(tǒng)100。一般而言,系統(tǒng)100包括非關(guān)系型查詢語言組件102、關(guān)系型數(shù)據(jù)存儲組件104和接口組件106。更具體地,圖1的系統(tǒng)可以使用接口組件106來實現(xiàn)對與關(guān)系型數(shù)據(jù)存儲組件104相關(guān)聯(lián)的存儲過程的調(diào)用,并檢索結(jié)果,好像結(jié)果是被格式化為與非關(guān)系型查詢語言組件(例如,XML)一致。從而,代替必須依賴關(guān)系型查詢語言(例如,SQL)來獲取該信息,可以直接使用非關(guān)系型查詢語言組件102來訪問關(guān)系型數(shù)據(jù)存儲組件104內(nèi)的數(shù)據(jù)。
根據(jù)本發(fā)明,非關(guān)系型查詢語言組件102可以表示本領(lǐng)域中已知的任何非關(guān)系型查詢語言,包括但不限于,XML查詢語言。盡管此處描述了針對使用XML查詢語言的各方面,但可以理解,本發(fā)明的新穎的方面可以結(jié)合任何非關(guān)系型查詢語言組件102來使用,而不背離本發(fā)明及就此所附的權(quán)利要求書的精神和范圍。
操作中,可以通過非關(guān)系型查詢語言組件102定義函數(shù)108,并將其通信(例如,傳輸)至接口組件106。例如,查詢中定義的函數(shù)108可以引用一存儲過程,通過該存儲過程,可以向關(guān)系型數(shù)據(jù)存儲組件104請求數(shù)據(jù)。接口組件106可以接收并分析函數(shù)108,從而生成將被傳送至關(guān)系型數(shù)據(jù)存儲組件104內(nèi)的合適的存儲過程的調(diào)用110。
一旦結(jié)合關(guān)系型數(shù)據(jù)存儲組件104執(zhí)行存儲過程,可以將數(shù)據(jù)112返回至接口組件106。因為是通過關(guān)系型數(shù)據(jù)存儲組件104來生成數(shù)據(jù)112的,應該理解,該數(shù)據(jù)(例如,112)可以是表格格式的。接口組件116可以根據(jù)視圖定義進程,促進將表格格式的數(shù)據(jù)112轉(zhuǎn)換為非關(guān)系型數(shù)據(jù)格式(例如,數(shù)據(jù)114)。將在下文更詳細描述接口組件106的功能??梢躁P(guān)于兩個完全不同的特征,即視圖定義特征和存儲過程引用特征來描述,接口組件106可以響應于非關(guān)系型查詢語言組件102來訪問存儲過程并格式化通過該存儲過程接收的數(shù)據(jù)的概念。這些完全不同的特征將在下文中詳細討論。
首先,關(guān)于視圖定義特征,接口組件106可以定義當前數(shù)據(jù)模型內(nèi)包含的關(guān)系型數(shù)據(jù)的視圖。一般有兩種方法來實行訪問和格式轉(zhuǎn)換。第一種方法是通過正則視圖。換言之,可以對關(guān)系型數(shù)據(jù)進行預先定義的整形以使其遵循目標數(shù)據(jù)模型(例如,XML)。第二種方法涉及向當前數(shù)據(jù)模型定義關(guān)系型數(shù)據(jù)的自定義視圖。第二種方法尤其靈活,因為它允許在成形進程中應用自定義的邏輯,從而提供自定義的成形??梢岳斫?,如此處所用,“成形”和“映射”是同義的術(shù)語。定義關(guān)系型數(shù)據(jù)的視圖的第一特征以提供轉(zhuǎn)換為目標數(shù)據(jù)模型(例如,XML)的機制,在于2000年3月17日提交的,名為“Transforming Query Results into HierarchicalInformation(將查詢結(jié)果變換為分層信息)”的美國專利第6,708,164中描述,其整體通過引用包含在此。以下是便于通過非關(guān)系型查詢語言請求和獲取關(guān)系型數(shù)據(jù)的第二特征(例如,存儲過程引用)的詳細描述。
第二特征可以使用其中可以從非關(guān)系型查詢語言引用和/或訪問存儲過程的機制。DBMS中,存儲過程可以指的是存儲在數(shù)據(jù)庫中的程序(例如,SQL程序)。當然,該存儲的程序可以由來自客戶機或來自數(shù)據(jù)庫觸發(fā)器的調(diào)用直接執(zhí)行。可以理解,因為在數(shù)據(jù)庫中存儲SQL過程,所以不必在每一客戶機中復制該過程。這樣,存儲過程可以減少編程的工程量,尤其當使用不同的客戶機用戶界面和開發(fā)系統(tǒng)時。觸發(fā)器和存儲過程可以嵌入至客戶機/服務器環(huán)境中所使用的DBMS中。
如上所述,在一個方面中,可以通過已知為函數(shù)的編程構(gòu)造進行存儲過程引用。函數(shù)一般是可以由若干組件重用的封裝的邏輯塊。查詢語言(例如,非關(guān)系型查詢語言組件102)可以使得,特定的擴展函數(shù)108當被調(diào)用時,可以訪問關(guān)系型數(shù)據(jù)存儲組件104內(nèi)的存儲過程。從而,表格數(shù)據(jù)112和重定格式的數(shù)據(jù)114可以通過以上描述的接口組件106的成形進程來返回。
根據(jù)本發(fā)明的特征,關(guān)于類型分配來描述各方面。圖2是針對使用動態(tài)類型的或后期綁定查詢語言的一方面。另一方面,圖3和4針對使用靜態(tài)類型或前期綁定的查詢語言的各方面??梢岳斫?,動態(tài)類型的查詢語言可以指的是一種語言,對其而言,對變量和表達式的類型的分配在運行時基于該時刻的條件發(fā)生。而相反,在前期綁定方面中,可以理解對變量和表達式的類型分配在編譯時發(fā)生。
現(xiàn)在參考圖2,示出了針對動態(tài)類型查詢語言102。如圖所示,非關(guān)系型查詢語言組件102可以使用參數(shù)1至M,其中M是整數(shù)。參數(shù)1至M可以個別地或共同地被稱為參數(shù)202。關(guān)系型數(shù)據(jù)存儲組件104可以使用存儲過程1至N,其中N為整數(shù)。存儲過程1至N可以個別地或共同地被稱為存儲過程204。
對諸如XPath查詢語言等動態(tài)類型的查詢語言而言,實現(xiàn)可以使用單個擴展函數(shù)108,其中函數(shù)108的參數(shù)202可以被傳遞至接口組件106,借此參數(shù)202標識存儲過程204的名稱。從而,可以在執(zhí)行過程中調(diào)用該存儲過程204。另外的參數(shù)202也可以被傳遞至該擴展函數(shù)108??梢岳斫?,可以在存儲過程調(diào)用110過程中傳遞這些另外的參數(shù)。在這種情況中,可以使用單個擴展函數(shù)108來訪問所有可供使用用的存儲過程204。
作為示例,假設存儲過程204名為“GetCustomer”。該特定的存儲過程204可以采用單個整數(shù)值參數(shù)202。根據(jù)示例性XPath非關(guān)系型查詢語言組件102,用于調(diào)用此存儲過程204并返回為XML(例如,數(shù)據(jù)114)的結(jié)果的擴展函數(shù)108可以是Access-Stored-Proc(″GetCustomers″,345)/Order[@id=5]
該示例性查詢將使用參數(shù)202的值“345”來調(diào)用“GetCustomer”存儲過程204。在該示例中,“GetCustomer”和“345”均通過參數(shù)202被傳遞給函數(shù)108(例如,“Access-Stored-Proc”)。該存儲過程204的結(jié)果(例如,數(shù)據(jù)112)然后可以被變換為XML片段(例如,數(shù)據(jù)114),且該XPath查詢的剩余部分,如果存在,可以在該片段上執(zhí)行。可以理解,可以響應于存儲過程調(diào)用實現(xiàn)任何數(shù)量的查詢。盡管該示例性函數(shù)名為“Access-Stored-Proc”,但是應該理解,可以利用任何名稱,而不背離此處描述的功能。
現(xiàn)在參考圖3,示出了本發(fā)明的一替換方面。圖3的方面針對其中非關(guān)系型查詢用于組件102是靜態(tài)類型的查詢語言的系統(tǒng)300。對諸如XQuery語言等靜態(tài)類型查詢語言102而言,示例性系統(tǒng)300可以使用在查詢編譯過程中建立的可用的存儲過程信息,并展示用于訪問存儲過程204的多個擴展函數(shù)302。如圖所示,非關(guān)系型查詢用于組件102可以使用1至P個擴展函數(shù),其中P為整數(shù)。擴展函數(shù)1至P可以單個或共同被稱為擴展函數(shù)302。
可以理解,這方面可以展示對應于可用的每一存儲過程204的擴展函數(shù)302。傳遞至這些擴展函數(shù)302的參數(shù)202可以由接口組件106以調(diào)用110的形式傳遞給存儲過程204。引用組件304可以基于擴展函數(shù)302實現(xiàn)存儲過程204的標識。可以提供視圖組件306來定義如上所述當前數(shù)據(jù)模型的關(guān)系型數(shù)據(jù)的視圖。具體地,視圖組件306可以轉(zhuǎn)換表格(例如,關(guān)系型)格式數(shù)據(jù)112成非表格格式(例如,非關(guān)系型)數(shù)據(jù)114。
包含以下示例以提供本發(fā)明的上下文。在一個方面中,假設Customer(顧客)擁有Order History(定單歷史)。具體地,假設Customer擁有帶有一百個相應Product(產(chǎn)品)的十個定單。在該情形中,將形成層次結(jié)構(gòu)。換言之,Customer關(guān)聯(lián)至Order History,Order History關(guān)聯(lián)至Order,最終Order關(guān)聯(lián)至Product。
可以理解,關(guān)系型數(shù)據(jù)庫(例如,SQL)不能存儲該層次關(guān)系型。相反,關(guān)系型環(huán)境中存在名為“規(guī)格化”的概念,借此概念可以以表格的方式存儲信息,從而可以將結(jié)構(gòu)變更為函數(shù)。規(guī)格化進程可以將數(shù)據(jù)分解為記錄組,借此提供更有效的處理。貫穿該進程,可以使用記錄中的關(guān)鍵字段來標識數(shù)據(jù)。
繼續(xù)該示例,Order信息可以由Order Number(定單號)標識,而Customer信息可以由Customer號標識。然而,數(shù)據(jù)庫并不理解該Customer是與該Order相關(guān)聯(lián)的。經(jīng)常在該非關(guān)系型空間中,這些Order可以與該Customer相關(guān)聯(lián)。視圖組件306可以查看關(guān)系型數(shù)據(jù)存儲組件104,并格式化結(jié)果得到的數(shù)據(jù)(例如,112)以顯示關(guān)系型,從而生成數(shù)據(jù)114。此處所述的視圖組件306可以使用與之前提及的美國專利第6,708,164中所述的類似的概念,該專利整體通過引用包含在此。
因為本方面的非關(guān)系型查詢語言組件102是靜態(tài)類型的,系統(tǒng)300可以確保和確認所使用的參數(shù)202對應于指定的數(shù)據(jù)類型。同樣,關(guān)于存儲過程(如由視圖組件306所規(guī)定的)返回的數(shù)據(jù)(例如,數(shù)據(jù)112)的類型可以被驗證來確保,它與查詢的其余部分一致。這些確認方面將在下文關(guān)于圖4更詳細地討論。
除視圖組件306之外,本發(fā)明的另一新穎的方面針對引用組件306。引用組件304可以促進接收來自非關(guān)系型查詢語言組件102的請求和訪問關(guān)系型數(shù)據(jù)存儲組件104內(nèi)維持的數(shù)據(jù)。換言之,本發(fā)明的新穎的特征是針對允許就非關(guān)系型查詢語言組件102(例如,XML)方面的通信的系統(tǒng)和方法,借此可以從關(guān)系型數(shù)據(jù)庫104中指定并獲取信息(例如,數(shù)據(jù))??梢酝ㄟ^與關(guān)系型數(shù)據(jù)存儲104相關(guān)聯(lián)的存儲過程204訪問該信息。如上關(guān)于視圖組件306所述,一旦獲取關(guān)系型信息(例如,數(shù)據(jù)112),那么可以實現(xiàn)對關(guān)系型數(shù)據(jù)112的轉(zhuǎn)換,以生成與非關(guān)系型環(huán)境(例如,XML)兼容格式的數(shù)據(jù)114。
盡管將接口組件106描述為分離的組件,但可以理解,接口組件106的功能可以被包含在現(xiàn)有系統(tǒng)的編譯器中。例如,無論何時用戶調(diào)用查詢,編譯器可以將非關(guān)系型查詢的文本轉(zhuǎn)換成可由計算機執(zhí)行的語言和/或代碼(例如,調(diào)用110)?;旧希景l(fā)明的各方面可以被視為編譯器的新特征,從而實現(xiàn)將由非關(guān)系型查詢語言組件102展示的查詢語言(例如,函數(shù)302)轉(zhuǎn)換成由關(guān)系型數(shù)據(jù)存儲組件104的存儲過程204可識別的調(diào)用110的能力。
返回參考該示例,假定在XQuery環(huán)境中實現(xiàn)。假設在每一Order中存在多個Product,多個Order組成Order History,且每一Customer擁有一Order History。另外,存在存儲過程204,它可以通過標識號來檢索Customer。就此,關(guān)系型數(shù)據(jù)存儲組件104可以展示可以通過標識號來檢索Customer的存儲過程204。如圖3中所示,用戶可以將函數(shù)302中的參數(shù)(例如,整數(shù))202傳遞至接口組件106。接口組件106通過引用組件304,可以將函數(shù)302轉(zhuǎn)換成至指定存儲過程204的調(diào)用110。隨后,可以執(zhí)行存儲過程204,從而從關(guān)系型數(shù)據(jù)存儲組件104返回請求的數(shù)據(jù)112。
因為數(shù)據(jù)112是從關(guān)系型數(shù)據(jù)存儲組件104中檢索得到的,所以將以多個數(shù)據(jù)集來返回數(shù)據(jù)112。按照慣例,因為非關(guān)系型(例如,XML)語言不使用關(guān)系型機制,所以對哪個Product關(guān)聯(lián)至所返回的Order的手動解釋是必需的。然而,根據(jù)本發(fā)明,視圖組件306可以如上所述被用于建立關(guān)系型??梢岳斫?,關(guān)系型數(shù)據(jù)庫使用嵌套(例如,分層)格式,如果將其轉(zhuǎn)換,可以在XML環(huán)境中使用它。
本發(fā)明允許對存儲過程204的訪問,借此由關(guān)系型數(shù)據(jù)存儲組件104存儲的層次結(jié)構(gòu)可以被自動地以與非關(guān)系型環(huán)境(例如,XML)一致的格式來訪問、轉(zhuǎn)換和使用。換言之,根據(jù)本發(fā)明,來自XML環(huán)境內(nèi),可以引用和使用該分層的、嵌套的結(jié)構(gòu)。根據(jù)該示例,Customer內(nèi),用戶可以查看Order以尋找所定購的特定Product。
再次參見圖3,為了訪問來自關(guān)系型數(shù)據(jù)存儲組件104的數(shù)據(jù)112,用戶可以通過非關(guān)系型查詢語言組件102來使用擴展函數(shù)302。擴展函數(shù)302可以在非關(guān)系型查詢語言組件102內(nèi)定義??梢岳斫猓昂瘮?shù)”可以指的是能夠為其被寫入的程序或某些其它程序執(zhí)行任務的自包含軟件例程(例如,存儲過程)。因為該方面使用靜態(tài)類型的情景,表示所期望的存儲過程204的名稱的參數(shù)202可以作為函數(shù)302傳遞。
接口組件106可以將所定義的擴展函數(shù)302翻譯成可以由關(guān)系型數(shù)據(jù)存儲組件104內(nèi)的存儲過程204理解的調(diào)用110。調(diào)用110可以是由程序?qū)κ褂米永?例如,存儲過程204)的請求。當然,該子例程(例如,存儲過程204)可以是大型的,且可以執(zhí)行大量處理。同樣,子例程可以小如標識單個字段和返回結(jié)果。如在圖3的靜態(tài)類型方面中所示,函數(shù)302和隨后的調(diào)用110可以指定存儲過程204的名稱,后跟要傳遞給存儲過程204的任何值或參數(shù)202。
當調(diào)用存儲過程204時,如圖所示可以執(zhí)行操作從而返回結(jié)果(例如,數(shù)據(jù)112)。盡管所述方面是針對數(shù)據(jù)存儲組件(例如,關(guān)系型數(shù)據(jù)存儲組件104)內(nèi)部的存儲過程204,但是可以理解,存儲過程204可以是對該數(shù)據(jù)存儲組件外部的程序和/或子例程。
作為其它示例,在該靜態(tài)類型的示例中,名為“FindCustomer”的存儲過程可以通過非關(guān)系型查詢語言組件102直接調(diào)用。從而,可以添加“姓”和“郵政編碼”作為參數(shù)202,這樣就為存儲過程204定義了準則。從而,該函數(shù)302能夠調(diào)用該指定存儲過程204(例如,“FindCustomer”)并返回對應于所定義的參數(shù)202的結(jié)果(例如,數(shù)據(jù)112)。下一步,可以以適于該查詢語言102進一步后處理的方式轉(zhuǎn)換該結(jié)果(例如,數(shù)據(jù)112)。
如上所述,圖2的方面針對非靜態(tài)類型的機制。就此,可存在能夠促進對存儲過程204的訪問的一個標準擴展函數(shù)108(例如,Access-Stored-Proc)。換言之,實現(xiàn)對存儲過程204訪問的編譯器可以展示單個函數(shù)108。此外,函數(shù)108的參數(shù)202中的一個可以標識要調(diào)用哪個存儲過程204。
另一方面,圖3(以及下述的圖4)中示出的本發(fā)明的方面針對靜態(tài)類型的方面。可以理解,非關(guān)系型查詢語言組件102可以使用類型的概念來提供額外的功能。例如,在靜態(tài)類型或前期綁定情形中,非關(guān)系型查詢語言組件102可以意識到關(guān)系型數(shù)據(jù)存儲104內(nèi)包含的數(shù)據(jù)的類型,借此使用分析和/或確認技術(shù)。按照慣例,可以理解,常見的數(shù)據(jù)類型可以包括數(shù)字、串、布爾(例如,真/假)等。
參考圖4的方面,非關(guān)系型查詢語言組件102可以關(guān)于關(guān)系型數(shù)據(jù)存儲組件104強化這些類型。作為示例,如果用戶調(diào)用使用布爾邏輯“真”加“真”的查詢,那么非關(guān)系型查詢語言組件102可以識別出,這是無意義的動作,從而引起就此的通知。根據(jù)本發(fā)明,非關(guān)系型查詢語言組件102可以利用這種類型的邏輯。這樣做,包含在關(guān)系型數(shù)據(jù)存儲組件104內(nèi)的數(shù)據(jù)可以按照特定類型分類。
回到該示例,根據(jù)靜態(tài)類型方面,可以定義“Customer”類型和“Order History”類型。從而,如果使用函數(shù)來標識“Customer”的“Product”,那么編譯器(例如,確認組件402)可以提示基于數(shù)據(jù)類型指示錯誤的通知。換言之,“Customer”不具有于其直接相關(guān)聯(lián)的“Product”。在該示例中,“Customer”擁有“Order History”,而它擁有“Order”,而“Order”含有“Product”。然而,“Customer”不直接含有“Product”。從而,該請求可以被標識為錯誤。
如圖所示,確認組件402可以被使用來根據(jù)關(guān)于存儲過程204預先定義的類型,來確認參數(shù)202以及所返回數(shù)據(jù)112的類型。作為示例,假設關(guān)系型數(shù)據(jù)存儲104中的名為“FindCustomer”的存儲過程204采用兩個串參數(shù)202。第一參數(shù)202是“名”而第二參數(shù)202是“姓”。從而,在示例性XQuery環(huán)境中,用于調(diào)用該存儲過程204并返回作為XML的結(jié)果(例如,數(shù)據(jù)114)的擴展函數(shù)302可以是FindCustomer(″George″,″Washington″)為了確保該查詢是靜態(tài)正確的,如果參數(shù)202的類型不符合存儲過程204,那么接口組件106(例如,確認組件402)可以提示在來自非關(guān)系型查詢語言組件102的查詢上出錯。同樣,如果所返回的數(shù)據(jù)112的類型與查詢(例如,XQuery查詢)的剩余部分不兼容,可以生成出錯通知。關(guān)于以下示例應該可以更好地理解該功能。假設提供以下XQuery
FindCustomer(″George″,123)在上述查詢語句中,“FindCustomer”存儲過程204不接受整數(shù)值作為參數(shù)202。因為靜態(tài)類型的XQuery編譯器(例如,確認組件402)含有關(guān)于存儲過程04所必需的靜態(tài)信息,確認組件402所以能夠確定該查詢是不正確的。另外,確認組件402可以提供基于通過存儲過程204檢索到的結(jié)果得到的數(shù)據(jù)(例如,112)的類型的類似的檢測和確認。
在關(guān)于圖2描述的方面中,接口組件106和/或編譯器不知道任何這樣的類型信息(例如,動態(tài)類型的)。然而,在圖4的靜態(tài)類型的方面中,編譯器了解關(guān)系型數(shù)據(jù)存儲組件104中的信息的類型。從而,接口組件106能夠理解類型,并能展示存儲過程204作為強類型的方法。據(jù)此,接口組件106可以使用確認組件402來檢查所返回數(shù)據(jù)(例如,數(shù)據(jù)112)的有效性,并要求發(fā)送給存儲過程204的參數(shù)202關(guān)于已知類型是正確的。
可以理解,圖4的方面是針對靜態(tài)檢查的機制。這通常取決于查詢語言是否被設計來支持靜態(tài)類型。如所述,在靜態(tài)類型的方面中,存儲過程自身可以被展示為對擴展函數(shù)的參數(shù)。換言之,因為提前知道存儲過程,可以直接創(chuàng)建表示存儲過程的構(gòu)造。應該理解,信息相關(guān)類型在執(zhí)行之前已知,那么本發(fā)明可以檢查數(shù)據(jù)和函數(shù)的有效性。
繼續(xù)該示例,并關(guān)于圖5,示出了接口組件106的更詳細的示意視圖。如圖所示,接口組件106一般可以包括基于規(guī)則的引擎組件502。如將關(guān)于圖6所述,可任選的人工智能(AI)組件(未示出)可以與該基于規(guī)則的引擎組件502共同使用,或代替引擎組件502被使用來自動推斷要被結(jié)合如上所述接口組件106的功能而使用的一個動作或一組動作。
在圖5的示例性方面中,基于規(guī)則的引擎組件502可以根據(jù)預先確定的偏好(例如,規(guī)則)來被編程或配置。例如,規(guī)則(例如,邏輯)可以被構(gòu)造來基于定義的層次結(jié)構(gòu)自動對查詢區(qū)分優(yōu)先級。更具體地,可以建立規(guī)則來考慮查詢的具體特征、處理時間限制、信息類型等來區(qū)分優(yōu)先級和處理查詢?;谝?guī)則的引擎502可以促進規(guī)則的應用,借此可以因而變更對接口組件106的控制。
在圖6中示出本發(fā)明的另一替換方面的示意圖。圖6中示出的該方面的接口組件106使用AI組件602來自動推斷和/或預測動作。如圖所示,該替換方面可以任選地包括促進自動控制和/或操作的推斷模塊604。
根據(jù)該方面,可任選AI組件602、604可以促進自動執(zhí)行如此處所述的本發(fā)明的各個方面(例如,控制優(yōu)先級、進程限制)。AI組件602可以任選地包括推斷組件604,它部分利用基于推斷的模式來促進推斷在給定時間和/或狀態(tài)時要被執(zhí)行的預期動作,進一步增強AI組件的自動化方面??梢酝ㄟ^任何合適的基于機器學習的技術(shù)和/或基于統(tǒng)計的技術(shù)和/或基于概率的技術(shù)來實施本發(fā)明基于AI的方面。
在該替換方面中,如圖6進一步示出,本發(fā)明(例如,結(jié)合控制查詢(例如,存儲過程)執(zhí)行和/或操作)可以任選地使用各種基于人工智能的模式用于自動執(zhí)行其中的各個方面。具體地,可以任選地提供人工智能組件602、604來基于人工智能進程(例如,置信度、推論)以實現(xiàn)本發(fā)明的各方面。例如,可以通過自動分類器系統(tǒng)和進程促進用于基于用戶偏好來或處理請求確定查詢執(zhí)行的優(yōu)先化的進程。而且,可任選的人工智能組件602、604可以被使用來促進基于預測和/或推斷的偏好來呈現(xiàn)和/或格式化所接收到的數(shù)據(jù)的自動化進程。
分類器是將輸入屬性向量x=(x1,x2,x3,x4,xn)映射至該輸入屬于的一類的置信度的函數(shù),即f(x)=confidence(class)。這樣的分類可以使用概率和/或基于統(tǒng)計的分析(例如,因式分解成分析效用和開銷)來預測或推斷用戶期望自動執(zhí)行的動作。
支持向量機(SVM)是可以使用的分類器的一個示例。SVM通過尋找可能輸入的空間中的超曲面操作,其中超曲面試圖從非觸發(fā)事件中分裂觸發(fā)準則。直觀地,這使分類對于接近但不同于訓練數(shù)據(jù)的測試數(shù)據(jù)是正確的??梢允褂闷渌邢蚧驘o向的模型分類方法包括,例如原始貝葉斯、貝葉斯網(wǎng)絡、決策樹、以及提供獨立的不同模式的概率分類模型。此處所用的分類也包括用于開發(fā)優(yōu)先級模型的統(tǒng)計回歸。
可以通過本說明書中容易地理解,本發(fā)明可以使用顯式訓練(例如,通過普通訓練數(shù)據(jù))以及隱式訓練(例如,通過觀察用戶行為、接收外部信息)的分類器。例如,可以通過分類器構(gòu)造器和特征選擇模塊內(nèi)的學習或訓練階段來配置SVM。換言之,構(gòu)想了使用專家系統(tǒng)、模糊邏輯、支持向量機器、貪婪搜索算法、基于規(guī)則的系統(tǒng)、貝葉斯模型(例如,貝葉斯網(wǎng)絡)、神經(jīng)網(wǎng)絡、其它非線性訓練技術(shù)、數(shù)據(jù)融合、基于效用的分析系統(tǒng)、使用貝葉斯模型的系統(tǒng)等,且它們的使用被預期屬于此處所附的權(quán)利要求書的范圍內(nèi)。
AI的其它實現(xiàn)可以包括可替換的方面,借此基于學會或預測到的用戶意圖,系統(tǒng)可以提示來驗證。例如,系統(tǒng)可以在呈現(xiàn)敏感和/或機密數(shù)據(jù)(例如,社會保障和信用卡帳號)之前提示驗證安全憑證。同樣,可任選的AI組件可以基于系統(tǒng)狀態(tài)提示用戶延遲處理查詢。
關(guān)于圖7和8,示出了根據(jù)本發(fā)明的流程圖。盡管為說明的簡明起見,例如以流程圖形式此處所示的一種或多種方法被示出和描述為一連串動作,但是可以理解和領(lǐng)會,本發(fā)明不受動作順序的限制,而根據(jù)本發(fā)明,某些動作可以此處示出和描述的順序不同的順序和/或與其它動作同時發(fā)生。例如,本領(lǐng)域的技術(shù)人員可以理解和領(lǐng)會,方法可以被替換地表示為一連串相互關(guān)聯(lián)的狀態(tài)或事件,諸如在狀態(tài)圖中。而且,不是所有示出的動作對實現(xiàn)根據(jù)本發(fā)明的方法都是必需的。
參考圖7,示出了使用動態(tài)類型查詢語言組件的示例性方法。在702處,定義了訪問存儲過程的函數(shù)。如上所述,定義訪問存儲過程的函數(shù)可以采用所期望的任何名稱。例如,如上所述,函數(shù)可以被定義為“Access-Stored-Proc”。在704處,標識參數(shù),并將其傳遞至函數(shù)中。參數(shù)可以標識特定存儲過程以及將在訪問該存儲過程的過程中所使用的變量。
在706處,函數(shù)被轉(zhuǎn)換為與存儲過程兼容的調(diào)用。例如,接口組件(例如,引用組件)可以被使用來將函數(shù)轉(zhuǎn)換為存儲過程調(diào)用。下一步,系統(tǒng)試圖定位該存儲過程。從而,在708處,作出是否存在存儲過程的判斷。如果在708處,作出不存在存儲過程的判斷,那么如圖所示該進程終止。
反之,如果在708處,系統(tǒng)確定該存儲過程的確存在,那么可以在710處執(zhí)行該存儲過程。如此處所述,可以理解,可以結(jié)合替換方面使用區(qū)分優(yōu)先級的和/或延遲的存儲過程執(zhí)行。一旦執(zhí)行,在712處存儲過程返回結(jié)果??梢岳斫?,因為存儲過程結(jié)合關(guān)系型數(shù)據(jù)存儲執(zhí)行,所以返回的數(shù)據(jù)是表格格式的。在714處,該表格格式的數(shù)據(jù)可以被轉(zhuǎn)換成與非關(guān)系型查詢引用(例如,XML)一致的分層格式??梢酝ㄟ^上述視圖定義組件實現(xiàn)該格式轉(zhuǎn)換。圖7的方面是針對動態(tài)類型情形的,而圖8是針對靜態(tài)類型情形的。
關(guān)于圖8的靜態(tài)類型方面,在802處,標識存儲過程。如上所述,因為這方面是靜態(tài)類型的,所以關(guān)于存儲過程的信息是可用的,從而該信息可以通過非關(guān)系型查詢語言標識。換言之,在該方面中,函數(shù)可以采用所期望的存儲過程的名稱。在804處,標識參數(shù),并將其添加至函數(shù)。在806處,該函數(shù)被轉(zhuǎn)換為可以由關(guān)系型數(shù)據(jù)庫內(nèi)的存儲過程解釋的調(diào)用。
因為圖8的方面指的是靜態(tài)類型(例如,前期綁定)的系統(tǒng),可以理解,可以使用確認來確保可接受的處理。因而,在808處,可以作出所標識的參數(shù)是否與所標識的存儲過程一致的判斷。換言之,系統(tǒng)可以確定參數(shù)的類型是否與存儲過程一致。如果確定,類型不一致,那么中止調(diào)用并結(jié)束該進程。如果,反之,參數(shù)是可接受的,那么在810處執(zhí)行存儲過程。在812處,從關(guān)系型數(shù)據(jù)存儲返回表格數(shù)據(jù)。
再一次,因為該方面指的是靜態(tài)類型的情形,在814處,可以驗證所返回的數(shù)據(jù)與查詢的兼容性。例如,如果要執(zhí)行另外的查詢動作,系統(tǒng)可以驗證所返回的數(shù)據(jù)類型與該另外的查詢動作一致。如果不可兼容,那么中止該進程,并終止該方法。如果在814處,作出數(shù)據(jù)是兼容的判斷,那么可以在816處,對數(shù)據(jù)重定格式。該重定格式動作可以將所返回的表格數(shù)據(jù)格式化成與非關(guān)系型查詢語言(例如,XML)一致的可接受的分層格式。
現(xiàn)在參考圖9,示出了用于執(zhí)行所揭示的體系結(jié)構(gòu)的計算機的框圖。為了向本發(fā)明的各方面提供附加的環(huán)境,圖9及以下討論旨在提供可在其中實現(xiàn)本發(fā)明各方面的合適的計算環(huán)境900的簡要、大致的描述。盡管以上在可以在一臺或多臺計算機上運行的計算機可執(zhí)行指令的通用語境中描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員可以認識到,本發(fā)明也可以結(jié)合其它程序模塊和/或作為軟硬件的組合來實現(xiàn)。
一般而言,程序模塊包括例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定的任務或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。而且,本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明方法可以使用其它計算機系統(tǒng)配置來實現(xiàn),包括單處理器或多處理器計算機系統(tǒng)、小型機、大型機、以及個人計算機、手持式計算設備、基于微處理器的或可編程消費電子產(chǎn)品等,它們中的每一個都可以有效地耦合至一個或多個相關(guān)聯(lián)的設備。
本發(fā)明所示方面也可以在分布式計算環(huán)境中實現(xiàn),在分布式計算環(huán)境中某些任務是由通過通信網(wǎng)絡鏈接的遠程處理設備執(zhí)行的。在分布式計算環(huán)境中,程序模塊可以位于本地或遠程存儲器存儲設備中。
計算機一般包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是可由計算機訪問的任何可用介質(zhì),且包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。作為示例,而非限制,計算機可讀介質(zhì)可以包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以任何方法或技術(shù)實現(xiàn)的用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的易失性和非易失性、可移動和不可移動介質(zhì)。計算機存儲介質(zhì)包括,但不限于,RAM、ROM、EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁帶盒、磁帶、磁盤存儲或其它磁性存儲設備、或能用于存儲所需信息且可以由計算機訪問的任何其它介質(zhì)。
通信介質(zhì)通常具體化為諸如載波或其它傳輸機制等已調(diào)制數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),且包含任何信息傳遞介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”指的是這樣一種信號,其一個或多個特征以在信號中編碼信息的方式被設定或更改。作為示例,而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡或直接線連接,以及無線介質(zhì),諸如聲學、RF、紅外線和其它無線介質(zhì)。上述中任一個的組合也應包括在計算機可讀介質(zhì)的范圍之內(nèi)。
再次參考圖9,示出了用于實現(xiàn)本發(fā)明各方面的示例性環(huán)境900,包括計算機902,計算機902包括處理單元904、系統(tǒng)存儲器906和系統(tǒng)總線908。系統(tǒng)總線908將包括但不限于系統(tǒng)總線906在內(nèi)的系統(tǒng)組件耦合至處理單元904。處理單元904可以是各種市場上可購買的任何處理器。雙微處理器和其它多處理器體系結(jié)構(gòu)也可以作為處理單元904使用。
系統(tǒng)總線908可以是若干類型總線結(jié)構(gòu)中的任一種,可進一步與存儲器總線(帶有或不帶有存儲器控制器)、外設總線和使用各種市場上可購買的總線體系結(jié)構(gòu)中任一種的局部總線互連。系統(tǒng)存儲器906包括只讀存儲器(ROM)910和隨機存取存儲器(RAM)912?;据斎?輸出系統(tǒng)(BIOS)存儲在諸如ROM、EPROM、EEPROM等非易失性存儲器910中,其中BIOS包含有助于諸如啟動時在計算機902中元件之間傳遞信息的基本例程。RAM 912還可以包括用于高速緩存數(shù)據(jù)的諸如靜態(tài)RAM的高速RAM。
計算機902還包括內(nèi)部硬盤驅(qū)動器(HDD)914(例如EIDE、SATA),其中內(nèi)部硬盤驅(qū)動器914也可被配置為在合適的機箱(未示出)中供外部使用;磁軟盤驅(qū)動器(FDD)916(例如讀寫可移動盤918)以及光盤驅(qū)動器920(例如讀CD-ROM盤922,或者讀寫諸如DVD的其它高容量光介質(zhì))。硬盤驅(qū)動器914、磁盤驅(qū)動器916和光盤驅(qū)動器920可以分別通過硬盤驅(qū)動器接口924、磁盤驅(qū)動器接口926和光盤驅(qū)動器接口928連接至系統(tǒng)總線908。用于外部驅(qū)動器實現(xiàn)的接口924包括通用串行總線(USB)和IEEE 1394接口技術(shù)中的至少一個或兩者。
驅(qū)動器及其相關(guān)聯(lián)的計算機可讀介質(zhì)提供數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)、計算機可執(zhí)行指令等的非易失性存儲。對于計算機902,驅(qū)動器和介質(zhì)容納以合適數(shù)字格式的任何數(shù)據(jù)的存儲。盡管以上計算機可讀介質(zhì)的描述提及HDD、可移動磁盤和諸如CD或DVD的可移動光介質(zhì),但本領(lǐng)域的技術(shù)人員應該理解,計算機可讀的其它類型的介質(zhì),諸如zip驅(qū)動器、磁帶盒、閃存卡、盒式磁帶等,也可以在示例性操作環(huán)境中使用,而且,任何這樣的介質(zhì)可以包含用于執(zhí)行本發(fā)明的方法的計算機可執(zhí)行指令。
多個程序模塊可存儲在驅(qū)動器和RAM 912中,包括操作系統(tǒng)930、一個或多個應用程序932、其它程序模塊934和程序數(shù)據(jù)936。操作系統(tǒng)、應用程序、模塊和/或數(shù)據(jù)的全部或部分也可以高速緩存在RAM 912中。可以理解,本發(fā)明可以使用各種市場上可購買的操作系統(tǒng)或操作系統(tǒng)的組合來實現(xiàn)。
用戶可以通過一個或多個有線/無線輸入設備,例如鍵盤938和諸如鼠標940等定點設備來向計算機902輸入命令和信息。其它輸入設備(未示出)可包括麥克風、IR遙控器、操縱桿、游戲墊、指示筆、觸摸屏等。這些和其它輸入設備通常通過耦合至系統(tǒng)總線908的輸入設備接口942連接到處理單元904,但可以由其它接口連接,諸如并行端口、IEEE 1394串行端口、游戲端口、USB端口、IR接口等。
監(jiān)示器944或其它類型的顯示設備也通過接口,諸如視頻適配器946連接至系統(tǒng)總線908。除監(jiān)示器944之外,計算機一般包括其它外設輸出設備(未示出),諸如揚聲器、打印機等。
計算機902可使用通過有線和/或無線通信至一臺或多臺遠程計算機,諸如遠程計算機948的邏輯連接在網(wǎng)絡化環(huán)境中操作。遠程計算機948可以是工作站、服務器計算機、路由器、個人計算機、便攜式計算機、基于微處理器的娛樂設備、對等設備或其它常見的網(wǎng)絡節(jié)點,并且一般包括相對于計算機902描述的多個或全部元素,但是為了簡明起見,僅示出存儲器存儲設備950。所示邏輯連接包括至局域網(wǎng)(LAN)952和/或較大網(wǎng)絡,例如廣域網(wǎng)(WAN)954的有線/無線連接。這樣的LAN和WAN網(wǎng)絡環(huán)境在辦公室和公司中是常見的,且促進諸如內(nèi)聯(lián)網(wǎng)的企業(yè)范圍網(wǎng)絡,它們?nèi)慷伎蛇B接至例如因特網(wǎng)的全球通信網(wǎng)絡。
當在LAN網(wǎng)絡環(huán)境中使用時,計算機902通過有線和/或無線通信網(wǎng)絡接口或適配器956連接至局域網(wǎng)952。適配器956可促進至LAN 952的有線或無線通信,LAN 925也可包括部署在其上的用于與無線適配器956通信的無線接入點。當在WAN網(wǎng)絡環(huán)境中使用時,計算機902可以包括調(diào)制解調(diào)器958,或者連接至WAN954上的通信服務器,或者具有用于通過諸如因特網(wǎng)等WAN 954建立通信的其它裝置。調(diào)制解調(diào)器958可以是內(nèi)置或外置的和有線或無線設備,它通過串行端口接口942連接至系統(tǒng)總線908。在網(wǎng)絡化環(huán)境中,相對于計算機902所述的程序模塊或其部分可以存儲在遠程存儲器/存儲設備950中??梢岳斫?,所示的網(wǎng)絡連接是示例性的,且可使用在計算機之間建立通信鏈路的其它手段。
計算機902可以用于與操作上部署在無線通信中的任何無線設備或?qū)嶓w通信,例如,打印機、掃描儀、臺式和/或便攜式計算機、便攜式數(shù)據(jù)助理、通信衛(wèi)星、與無線可檢測標簽(例如公共電話亭、報亭、休息室)相關(guān)聯(lián)的任何設備部分或位置、以及電話。這至少包括Wi-Fi和BluetoothTM(藍牙)無線技術(shù)。因此,通信可以是使用常規(guī)網(wǎng)絡的預先定義的結(jié)構(gòu),或僅僅是至少兩個設備之間的特別通信。
Wi-Fi或無線保真允許從家里的睡椅、旅館房間中的床或工作單位的會議室無線地連接至因特網(wǎng)。Wi-Fi是類似于蜂窩電話的無線技術(shù),它使得例如計算機等設備能夠在室內(nèi)外基站范圍內(nèi)的任何地方收發(fā)數(shù)據(jù)。Wi-Fi網(wǎng)絡使用稱為IEEE802.11(a、b、g等)的無線電技術(shù)來提供安全、可靠、快速的無線連接。Wi-Fi網(wǎng)絡可以用于將計算機彼此連接、連接至因特網(wǎng)、以及連接至有線網(wǎng)絡(使用IEEE 802.3或以太網(wǎng))。Wi-Fi網(wǎng)絡在非特許的2.4和5GHz無線電波段中,例如以11Mbps(802.1a)或54Mbps(802.11b)數(shù)據(jù)速率運行,或者帶有包括兩種波段(雙波段)的產(chǎn)品,因此網(wǎng)絡可以提供類似于在許多辦公室中使用的基本10BaseT有線以太網(wǎng)網(wǎng)絡的真實世界性能。
現(xiàn)在參考圖10,示出了根據(jù)本發(fā)明的示例性計算環(huán)境1000的示意框圖。系統(tǒng)1000包括一個或多個客戶機1002??蛻魴C1002可以是硬件和/或軟件(例如,線程、進程、計算設備)。客戶機1002可以例如,通過使用本發(fā)明主存cookie和/或相關(guān)聯(lián)的上下文信息。系統(tǒng)1000也包括一個或多個服務器1004。服務器1004也可以是硬件和/或軟件(例如,線程、進程、計算設備)。服務器1004例如可以通過使用本發(fā)明主存執(zhí)行變換的線程??蛻魴C1002與服務器1004之間的一種可能的通信可以是以適用于在兩個或多個計算機進程之間傳輸?shù)臄?shù)據(jù)包的形式。數(shù)據(jù)包可以包括,例如cookie和/或相關(guān)聯(lián)的上下文信息。系統(tǒng)1000包括通信架構(gòu)1006(例如,諸如因特網(wǎng)的全球通信網(wǎng)絡),它可以被用于促進客戶機1002與服務器1004之間的通信。
可以通過有線(包括光纖)和/或無線技術(shù)來促進通信。客戶機1002操作上連接至一個或多個客戶機數(shù)據(jù)存儲1008,它們可以被用于存儲對客戶機1002本地的信息(例如,cookie和/或相關(guān)聯(lián)的上下文信息)。類似地,服務器1004操作上連接至可使用來存儲對服務器1004本地的信息的一個或多個服務器數(shù)據(jù)存儲1010。
以上描述包括本發(fā)明的示例。當然,不可能為描述本發(fā)明而描述每個可想象的組件或方法的組合,但是本領(lǐng)域的普通技術(shù)人員可以認識到,還可能有本發(fā)明的眾多其它組合和排列。從而,本發(fā)明旨在包括落入所附權(quán)利要求書精神和范圍內(nèi)的所有這樣的變更、修改和變化。而且,就或者在詳細描述中或者在權(quán)利要求書中使用的術(shù)語“包括”而言,當被用作權(quán)利要求書中的過渡詞時,這樣的術(shù)語旨在是包含性的,類似于解釋術(shù)語“包含”的方式。
權(quán)利要求
1.一種便于通過非關(guān)系型查詢組件從關(guān)系型數(shù)據(jù)存儲訪問數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括集成組件,用于將來自非關(guān)系型查詢組件的函數(shù)轉(zhuǎn)換為對存儲過程的調(diào)用;所述存儲過程促進對所述關(guān)系型數(shù)據(jù)存儲內(nèi)的數(shù)據(jù)的訪問;以及轉(zhuǎn)換組件,用于將所述數(shù)據(jù)轉(zhuǎn)換為與所述非關(guān)系型查詢組件相一致的非關(guān)系型格式。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)為動態(tài)類型化的數(shù)據(jù)。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)為靜態(tài)類型化的數(shù)據(jù)。
4.如權(quán)利要求3所述的系統(tǒng),其特征在于,還包括定義所述存儲過程的參數(shù)。
5.如權(quán)利要求4所述的系統(tǒng),其特征在于,還包括就類型對所述參數(shù)和數(shù)據(jù)的進行確認的組件。
6.如權(quán)利要求3所述的系統(tǒng),其特征在于,所述存儲過程是強類型化的方法。
7.一種其上存儲如權(quán)利要求1所述的系統(tǒng)的組件的計算機可讀介質(zhì)。
8.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括基于規(guī)則的引擎組件,用于提供便于根據(jù)預定規(guī)則來執(zhí)行所述存儲過程的邏輯。
9.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括提供便于基于預測的動作來執(zhí)行所述存儲過程的推斷的人工智能(AI)組件。
10.一種用于通過非關(guān)系型查詢語言從關(guān)系型數(shù)據(jù)存儲訪問數(shù)據(jù)的方法,所述方法包括定義所述非關(guān)系型查詢語言內(nèi)便于標識與所述關(guān)系型數(shù)據(jù)存儲相關(guān)聯(lián)的存儲過程的函數(shù);將所述函數(shù)轉(zhuǎn)換為對所述存儲過程的調(diào)用;以及執(zhí)行所述存儲過程來訪問所述關(guān)系型數(shù)據(jù)存儲內(nèi)的數(shù)據(jù)。
11.如權(quán)利要求10所述的方法,其特征在于,還包括將所述數(shù)據(jù)轉(zhuǎn)換為與所述非關(guān)系型查詢語言組件相一致的格式。
12.如權(quán)利要求10所述的方法,其特征在于,還包括向所述函數(shù)傳遞參數(shù),所述參數(shù)標識所述存儲過程。
13.如權(quán)利要求10所述的方法,其特征在于,還包括向所述函數(shù)傳遞參數(shù),所述參數(shù)標識用于所述存儲過程的準則。
14.如權(quán)利要求13所述的方法,其特征在于,還包括靜態(tài)地類型化所述數(shù)據(jù)。
15.如權(quán)利要求14所述的方法,其特征在于,還包括就所述數(shù)據(jù)的類型確認所述參數(shù)。
16.如權(quán)利要求14所述的方法,其特征在于,還包括就查詢確認所述數(shù)據(jù)。
17.如權(quán)利要求10所述的方法,其特征在于,還包括動態(tài)地類型化所述數(shù)據(jù)。
18.一種在非關(guān)系型查詢語言組件與關(guān)系型數(shù)據(jù)存儲之間傳遞的數(shù)據(jù)包,所述數(shù)據(jù)包促進如權(quán)利要求10所述的方法。
19.一種便于從XML(可擴展標記語言)查詢環(huán)境中對SQL(結(jié)構(gòu)化查詢語言)環(huán)境中的存儲過程進行訪問的系統(tǒng),所述系統(tǒng)包括用于使用XML查詢語言來引用與所述SQL環(huán)境相關(guān)聯(lián)的存儲過程的裝置,所述存儲過程便于訪問所述SQL環(huán)境內(nèi)的數(shù)據(jù);以及用于將所訪問的數(shù)據(jù)轉(zhuǎn)換為與所述XML查詢語言相一致的格式的裝置。
20.如權(quán)利要求19所述的系統(tǒng),其特征在于,還包括用于就類型確認傳遞至所述存儲過程的參數(shù)和所述數(shù)據(jù)中的一個的裝置。
全文摘要
提供了使用非關(guān)系型(例如,XML(可擴展標記語言))查詢語言來訪問結(jié)合關(guān)系型(例如,SQL(結(jié)構(gòu)化查詢語言)數(shù)據(jù)庫管理系統(tǒng)使用的存儲過程的系統(tǒng)和/或方法。SQL中的存儲過程使得能夠預先確定可以針對關(guān)系型數(shù)據(jù)庫執(zhí)行的查詢。本發(fā)明在非關(guān)系型查詢語言與關(guān)系型數(shù)據(jù)存儲之間搭建橋梁。換言之,本發(fā)明使得能夠集成非關(guān)系型查詢語言與關(guān)系型數(shù)據(jù)存儲。本發(fā)明可以定義當前數(shù)據(jù)模型中的關(guān)系型數(shù)據(jù)的視圖,將數(shù)據(jù)從關(guān)系型格式轉(zhuǎn)換為非關(guān)系型格式,并提供可以使用例如一函數(shù)等從非關(guān)系型查詢語言引用存儲過程的機制。
文檔編號G06F17/30GK1815468SQ200510003568
公開日2006年8月9日 申請日期2005年12月30日 優(yōu)先權(quán)日2005年1月31日
發(fā)明者A·A·德賽, D·德督-康斯坦丁, I·凡斯連, T·F·弗雷格 申請人:微軟公司