欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

對(duì)數(shù)據(jù)、模式,以及應(yīng)用程序的統(tǒng)一并發(fā)變更的制作方法

文檔序號(hào):6426744閱讀:203來(lái)源:國(guó)知局
專利名稱:對(duì)數(shù)據(jù)、模式,以及應(yīng)用程序的統(tǒng)一并發(fā)變更的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及多用戶數(shù)據(jù)庫(kù),尤其涉及多用戶數(shù)據(jù)庫(kù)環(huán)境中的統(tǒng)一并發(fā)變更。
背景技術(shù)
多用戶數(shù)據(jù)庫(kù)包括為多個(gè)人的一次或多次使用組織的數(shù)據(jù)。數(shù)據(jù)庫(kù)可以按它們所包含的數(shù)據(jù)的種類,如書目、全文、數(shù)字、圖像等等,來(lái)進(jìn)行分類。數(shù)據(jù)庫(kù)也可以根據(jù)它們用來(lái)組織數(shù)據(jù)并表示數(shù)據(jù)關(guān)系的數(shù)據(jù)庫(kù)模型,諸如,例如,關(guān)系模型、分層模型、或網(wǎng)絡(luò)模型, 來(lái)進(jìn)行分類。數(shù)據(jù)庫(kù)模式以數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)支持的形式語(yǔ)言來(lái)描述數(shù)據(jù)庫(kù)結(jié)構(gòu)。例如,在關(guān)系型數(shù)據(jù)庫(kù)中,模式可以定義表、字段、關(guān)系、視圖、索引、封裝、過(guò)程、函數(shù)、隊(duì)列、觸發(fā)器、類型、序列、物化視圖、同義詞、數(shù)據(jù)庫(kù)鏈接、目錄、及數(shù)據(jù)庫(kù)的其他方面。模式有時(shí)被存儲(chǔ)在數(shù)據(jù)字典中。數(shù)據(jù)庫(kù)模式可以在對(duì)數(shù)據(jù)庫(kù)的各種使用期間或在為這樣的使用的準(zhǔn)備中創(chuàng)建、訪問(wèn)和/或修改。例如,在數(shù)據(jù)庫(kù)開發(fā)期間,可以使用模式來(lái)定義和組織該數(shù)據(jù)庫(kù)被設(shè)計(jì)來(lái)容納的數(shù)據(jù)的內(nèi)容、關(guān)系和結(jié)構(gòu)。在數(shù)據(jù)庫(kù)詢問(wèn)期間,根據(jù)數(shù)據(jù)庫(kù)的模式,用戶訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),以便進(jìn)行信息檢索和報(bào)表生成。在數(shù)據(jù)庫(kù)維護(hù)期間,根據(jù)數(shù)據(jù)庫(kù)的模式添加、刪除或更新數(shù)據(jù)。數(shù)據(jù)庫(kù)詢問(wèn)和數(shù)據(jù)庫(kù)維護(hù)常常使用數(shù)據(jù)庫(kù)應(yīng)用程序來(lái)執(zhí)行,該數(shù)據(jù)庫(kù)應(yīng)用程序可以是通用DBMS或?qū)S玫膽?yīng)用程序。在應(yīng)用程序開發(fā)期間,模式支持例如數(shù)據(jù)輸入屏幕、查詢、表單、報(bào)表、表,以及標(biāo)簽的開發(fā)。

發(fā)明內(nèi)容
在多用戶數(shù)據(jù)庫(kù)應(yīng)用程序的上下文中進(jìn)行變更的用戶可能面臨許多不確定性。 例如,用戶可能不確定已經(jīng)變更了什么、數(shù)據(jù)庫(kù)/模式/應(yīng)用程序處于什么狀態(tài)、不同種類的變更如何彼此進(jìn)行交互、和/或由用戶作出的變更如何與由其他用戶作出的并發(fā)變更相關(guān)。在某些情況下,用戶還要應(yīng)付用于創(chuàng)建和保存不同類型的變更的不同用戶體驗(yàn)?zāi)P汀4颂幩枋龅囊恍?shí)施例幫助在多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境中管理變更。一個(gè)實(shí)施例收集對(duì)多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境的建議的變更,之后提交那些變更中的任一個(gè)。建議的變更可包括數(shù)據(jù)變更、模式變更、和/或應(yīng)用程序變更。標(biāo)識(shí)建議的變更的前提條件和后置條件,并使用這些條件來(lái)分析建議的變更之間的依賴關(guān)系。建議的變更根據(jù)其依賴關(guān)系按序放置在變更列表中。在驗(yàn)證每一個(gè)建議的變更的前提條件都將被滿足之后,在單個(gè)事務(wù)期間按序提交建議的變更。如果建議的變更前提條件在當(dāng)前狀態(tài)中不存在,并且將不會(huì)由經(jīng)排序的變更列表中的該建議的變更前面的建議的變更來(lái)提供,那么將引發(fā)錯(cuò)誤并將其呈現(xiàn)給用戶,且不提交建議的變更。除指示提交是否成功之外,提交還可以返回標(biāo)識(shí)符及其他返回值。對(duì)于一些實(shí)施例,用戶觀察多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境的值。用戶向編輯器遞交對(duì)至少一些觀察值的多個(gè)建議的變更。建議的變更可涉及變更類別中的兩個(gè)或三個(gè),即,數(shù)據(jù)變更、模式變更、應(yīng)用程序變更,并且用戶還可以指定屬于這些類別中的一個(gè)或多個(gè)的項(xiàng)
5之間的外鍵和/或其他關(guān)系。用戶命令編輯器將所有建議的變更一起提交,而不是試圖逐個(gè)地提交變更,且伴隨有中間結(jié)果以及其他用戶可能作出的中間活動(dòng)。用戶接收對(duì)“提交所有變更”命令的響應(yīng),該響應(yīng)指示任何建議的變更是否與在觀察和遞交步驟之后并且在命令步驟之前作出的另一個(gè)變更不一致。例如,對(duì)一個(gè)數(shù)據(jù)值的建議的變更可能與移除包含該數(shù)據(jù)值的數(shù)據(jù)元素的變更不一致,如果移除是在觀察和遞交步驟之后并且在命令步驟之前發(fā)生的話。也可以檢測(cè)和報(bào)告其他不一致性。一些實(shí)施例包括可以從用戶姿勢(shì)產(chǎn)生差異圖(diffgram)的差異(diff)管理器; 差異圖表示對(duì)觀察數(shù)據(jù)、模式和/或應(yīng)用程序值的建議的變更。用戶專用變更緩存為特定用戶維護(hù)差異圖的集合,并產(chǎn)生多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境的視圖,該視圖反映了建議的變更差異圖如果被提交則對(duì)環(huán)境將具有的影響。查詢更新引擎可以訪問(wèn)數(shù)據(jù)值、模式值,以及應(yīng)用程序值的共享多用戶存儲(chǔ)。這些類別中的每一個(gè)類別的值變更可被遞交給共享多用戶存儲(chǔ)以便提交。值變更可以建議例如對(duì)數(shù)據(jù)庫(kù)的關(guān)系值的變更和/或?qū)?yīng)用程序描述的圖對(duì)象的變更。值變更可包括樂(lè)觀并發(fā)性檢驗(yàn)或?qū)εc先前狀態(tài)的一致性的檢驗(yàn)的上下文中的SQL語(yǔ)句。提交嘗試的結(jié)果可以由查詢更新引擎來(lái)檢測(cè)并報(bào)告回用戶。所給出的示例只是說(shuō)明性的。本發(fā)明內(nèi)容并不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于限定所要求保護(hù)的主題的范圍。相反地,提供本發(fā)明內(nèi)容是為了以簡(jiǎn)化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。利用權(quán)利要求書定義本發(fā)明,在本發(fā)明內(nèi)容與權(quán)利要求書有沖突的情況下,應(yīng)該以權(quán)利要求書為準(zhǔn)。


將參考附圖給出更具體的描述。這些附圖只示出了選定的方面,且因此不完全確定覆蓋或范圍。圖1是示出一計(jì)算機(jī)系統(tǒng)并且還示出已配置的存儲(chǔ)介質(zhì)實(shí)施例的框圖,該計(jì)算機(jī)系統(tǒng)具有至少一個(gè)處理器、至少一個(gè)存儲(chǔ)器、多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境、以及可以存在于多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)上的操作環(huán)境中的其他項(xiàng);圖2是示出用于在圖1操作環(huán)境中管理對(duì)數(shù)據(jù)、模式、以及應(yīng)用程序值的統(tǒng)一并發(fā)變更的示例體系結(jié)構(gòu)的各方面的框圖;圖3是示出某一進(jìn)程的步驟和已配置的存儲(chǔ)介質(zhì)實(shí)施例的流程圖;以及圖4是示出一示例體系結(jié)構(gòu)的框圖,該示例體系結(jié)構(gòu)包括差異管理器、查詢更新引擎、以及客戶端-服務(wù)器操作環(huán)境中的其他項(xiàng)。
具體實(shí)施例方式概覽多用戶數(shù)據(jù)庫(kù)應(yīng)用程序的許多方面可以至少在理論上由應(yīng)用程序的創(chuàng)建者或用戶來(lái)變更。為清楚起見,這些方面可被歸類為數(shù)據(jù)變更、模式變更、以及應(yīng)用程序變更,但是,可以理解,某些變更跨越這些類別,并且在其他討論中可以使用其他類別。應(yīng)用程序變更涉及對(duì)數(shù)據(jù)庫(kù)應(yīng)用程序本身的描述(如頁(yè)、布局等等)的變更。模式變更涉及對(duì)數(shù)據(jù)的描述(諸如,例如,表的模式)的變更。數(shù)據(jù)變更涉及應(yīng)用程序的數(shù)據(jù)庫(kù)的數(shù)據(jù)中的變更, 如姓名、年齡、和/或存儲(chǔ)在被應(yīng)用程序訪問(wèn)的表中的其他數(shù)據(jù)。
此處所描述的一些實(shí)施例提供了一種管理應(yīng)用程序、模式、以及數(shù)據(jù)變更的統(tǒng)一的樂(lè)觀并發(fā)性編輯模型。一些實(shí)施例向用戶呈現(xiàn)統(tǒng)一用戶模型中的編輯體驗(yàn),并且還利用統(tǒng)一的體系結(jié)構(gòu)來(lái)實(shí)現(xiàn)該解決方案。一些實(shí)施例在允許并發(fā)數(shù)據(jù)和模式變更的環(huán)境中使用樂(lè)觀并發(fā)性。在某些實(shí)施例中,統(tǒng)一編輯體系結(jié)構(gòu)支持某些實(shí)施例中的所有變更類別,而全局保存用戶模型接收所有三個(gè)變更類別,并遞交它們以便進(jìn)行事務(wù)性提交。給定實(shí)施例還可以包括下列各方面中的一些。在某些實(shí)施例中,用戶界面顯示變更,并報(bào)告與其他用戶的變更的交互??梢燥@示概述和狀態(tài)指示??梢詸z測(cè)和解決沖突,包括例如模式-模式、模式-數(shù)據(jù)、應(yīng)用程序-應(yīng)用程序、應(yīng)用程序-模式、以及應(yīng)用程序-數(shù)據(jù)沖突??梢詫?duì)圖結(jié)構(gòu)化數(shù)據(jù)定義樂(lè)觀并發(fā)性方法。在建議的變更被實(shí)際應(yīng)用之前,用戶可以看到建議的變更的近似結(jié)果。在應(yīng)用變更之前可以跨類別對(duì)變更進(jìn)行排序,以減少錯(cuò)誤并保留好的狀態(tài)。現(xiàn)在將參考諸如附圖中所示出的那些示例性實(shí)施例,并使用特定語(yǔ)言來(lái)對(duì)其進(jìn)行描述。但是,精通相關(guān)技術(shù)的人員所能想到的對(duì)此處所示出的本發(fā)明的特點(diǎn)的更改和進(jìn)一步的修改,如此處所示出的本發(fā)明的原理的其他的應(yīng)用,都應(yīng)該被視為在帶有權(quán)利要求的本發(fā)明的范圍內(nèi)。在本發(fā)明中闡明了術(shù)語(yǔ)的含義,如此,應(yīng)該在仔細(xì)關(guān)注這些闡明的情況下閱讀權(quán)利要求書。給出了具體示例,但是,相關(guān)領(lǐng)域的技術(shù)人員將理解,其他示例也可以落在所使用的術(shù)語(yǔ)的含義范圍內(nèi),并且在一個(gè)或多個(gè)權(quán)利要求的范圍內(nèi)。術(shù)語(yǔ)不一定具有與它們?cè)谝话阌猛局?、在特定行業(yè)的用途、或在特定詞典或詞典集中擁有的相同含義。附圖標(biāo)記可以與各種措詞一起使用,以幫助顯示術(shù)語(yǔ)的廣度。從給定文本片段中省略附圖標(biāo)記不一定意味著沒(méi)有通過(guò)文本討論附圖的內(nèi)容。發(fā)明人聲明并行使他們對(duì)他們自己的詞典的權(quán)限。這里在詳細(xì)描述中和/或在申請(qǐng)文件的別處顯式地或隱式地定義了術(shù)語(yǔ)。如此處所使用的,“計(jì)算機(jī)系統(tǒng)”可包括,例如,一個(gè)或多個(gè)服務(wù)器、主板、處理節(jié)點(diǎn)、個(gè)人計(jì)算機(jī)(無(wú)論是否是便攜式的)、個(gè)人數(shù)字助理、蜂窩或移動(dòng)電話、和/或提供至少部分地通過(guò)指令來(lái)控制的一個(gè)或多個(gè)處理器的設(shè)備。指令可以采取存儲(chǔ)器中的軟件和/或?qū)iT電路的形式。具體而言,雖然許多實(shí)施例在工作站或膝上型計(jì)算機(jī)上運(yùn)行,但是其他實(shí)施例也可以在其他計(jì)算設(shè)備上運(yùn)行,并且任何一個(gè)或多個(gè)這樣的設(shè)備都可以是給定實(shí)施例的一部分?!岸嗑€程”計(jì)算機(jī)系統(tǒng)是支持多執(zhí)行線程的計(jì)算機(jī)系統(tǒng)。術(shù)語(yǔ)“線程”應(yīng)該被理解為包括能夠或接受同步的任何代碼,并且還可被稱為另一名稱,如“任務(wù)”、“進(jìn)程”或“協(xié)同例程”。線程可以并行地、按順序、或以并行執(zhí)行(例如,多處理)和順序執(zhí)行(例如,時(shí)間分片)的組合運(yùn)行。多線程環(huán)境是以各種配置設(shè)計(jì)的。執(zhí)行線程可以并行地運(yùn)行,或者線程可以被組織為并行執(zhí)行,但是實(shí)際輪流按順序執(zhí)行。例如,多線程化可以通過(guò)在多處理環(huán)境中在不同的核上運(yùn)行不同的線程、通過(guò)對(duì)單個(gè)處理器核上的不同線程進(jìn)行時(shí)間分片、或者通過(guò)時(shí)間分片和多處理器線程化的某種組合來(lái)實(shí)現(xiàn)。線程上下文切換可以例如通過(guò)內(nèi)核的線程調(diào)度器、通過(guò)用戶空間信號(hào)、或通過(guò)用戶空間和內(nèi)核操作的組合來(lái)發(fā)起。線程可以輪流對(duì)共享數(shù)據(jù)進(jìn)行操作,或者例如每一線程都可以對(duì)其自己的數(shù)據(jù)進(jìn)行操作?!斑壿嬏幚砥鳌被颉疤幚砥鳌笔菃蝹€(gè)獨(dú)立的硬件線程處理單元。例如,每個(gè)核運(yùn)行兩個(gè)線程的超線程四核芯片具有八個(gè)邏輯處理器。處理器可以是通用的,或者針對(duì)特定用途, 如圖形處理、信號(hào)處理、浮點(diǎn)算術(shù)處理、加密、I/O處理等等,對(duì)它們進(jìn)行定制。“多處理器”計(jì)算機(jī)系統(tǒng)是具有多個(gè)邏輯處理器的計(jì)算機(jī)系統(tǒng)。多處理器環(huán)境存在各種配置。在一給定配置中,所有處理器都在功能上是相等的,而在另一配置中,由于具有不同的硬件能力、不同的軟件指派,或者兩者,某些處理器可能不同于其他處理器。取決于配置,處理器可以在單條總線上彼此緊密耦合,或者它們可以是松散耦合的。在某些配置中,處理器共享中央存儲(chǔ)器,在某些配置中,它們每一個(gè)都具有它們自己的本地存儲(chǔ)器,而在某些配置中,存在共享的和本地存儲(chǔ)器兩種?!皟?nèi)核”包括操作系統(tǒng)、系統(tǒng)管理程序、虛擬機(jī),以及類似的硬件接口軟件。“代碼”表示處理器指令、數(shù)據(jù)(包括常數(shù)、變量、以及數(shù)據(jù)結(jié)構(gòu)),或者指令和數(shù)據(jù)兩者?!白詣?dòng)地”表示通過(guò)使用自動(dòng)化(例如,通過(guò)軟件為此處所討論的具體操作而配置的通用計(jì)算硬件),而不是沒(méi)有自動(dòng)化。具體而言,“自動(dòng)地”執(zhí)行的步驟不是手動(dòng)在紙上執(zhí)行的或在人的心里執(zhí)行的;它們是利用機(jī)器執(zhí)行的。貫穿本文,可任選的復(fù)數(shù)的使用表示存在所指示的特征中的一個(gè)或多個(gè)。例如, “變更”表示“一個(gè)或多個(gè)變更”,或等效地“至少一個(gè)變更”。貫穿本文,除非明確地聲明,否則任何對(duì)進(jìn)程中的步驟的引用都假設(shè)該步驟可以由感興趣的一方直接執(zhí)行和/或由該方通過(guò)中間機(jī)制和/或中間實(shí)體間接地執(zhí)行,且仍落入該步驟的范圍內(nèi)。即,由感興趣的一方直接執(zhí)行該步驟不是必需的,除非直接執(zhí)行是明確地聲明的必要條件。例如,涉及由感興趣的一方執(zhí)行的動(dòng)作的步驟,如“傳送到”、“發(fā)送到”、 “遞交到”、“提供到”或“傳遞到”目的地,可能涉及居間動(dòng)作,如某個(gè)另一方執(zhí)行的轉(zhuǎn)發(fā)、復(fù)制、上傳、下載、編碼、解碼、壓縮、解壓、加密、解密等等,但仍被理解為由該感興趣的一方直接執(zhí)行。每當(dāng)提及數(shù)據(jù)或指令時(shí),應(yīng)該理解,這些項(xiàng)配置計(jì)算機(jī)可讀存儲(chǔ)器,從而將它變換為特定制品,而不是簡(jiǎn)單地例如存在于紙上、在人的腦子里、或作為線路上的瞬時(shí)信號(hào)。操作環(huán)境參考圖1,用于一個(gè)實(shí)施例的操作環(huán)境100可包括計(jì)算機(jī)系統(tǒng)102。計(jì)算機(jī)系統(tǒng) 102可以是多處理器計(jì)算機(jī)系統(tǒng),或者也可以不是。操作環(huán)境在給定計(jì)算機(jī)系統(tǒng)中可包括一個(gè)或多個(gè)機(jī)器,它們可以是集群化的、以客戶端-服務(wù)器方式聯(lián)網(wǎng)的、和/或以對(duì)等方式聯(lián)網(wǎng)的。人類用戶104可以通過(guò)使用顯示器、鍵盤、及其他外圍設(shè)備106與計(jì)算機(jī)系統(tǒng)102 進(jìn)行交互。系統(tǒng)管理員、開發(fā)人員、工程師以及最終用戶每一個(gè)都是特定類型的用戶104。 代表一個(gè)或多個(gè)人操作的自動(dòng)化代理也可以是用戶104。在某些實(shí)施例中,存儲(chǔ)設(shè)備和/或聯(lián)網(wǎng)設(shè)備可以被認(rèn)為是外圍設(shè)備。圖1中未示出的其他計(jì)算機(jī)系統(tǒng)可以與計(jì)算機(jī)系統(tǒng)102 進(jìn)行交互,或者例如通過(guò)網(wǎng)絡(luò)接口設(shè)備使用到網(wǎng)絡(luò)108的一個(gè)或多個(gè)連接與另一系統(tǒng)實(shí)施例進(jìn)行交互。計(jì)算機(jī)系統(tǒng)102包括至少一個(gè)邏輯處理器110。計(jì)算機(jī)系統(tǒng)102與其他合適的系統(tǒng)一樣,還包括一個(gè)或多個(gè)計(jì)算機(jī)可讀非瞬態(tài)存儲(chǔ)介質(zhì)112。介質(zhì)112可以是不同的物理類型。介質(zhì)112可以是易失性存儲(chǔ)器、非易失性存儲(chǔ)器、被安裝就位的介質(zhì)、可移動(dòng)介質(zhì)、磁介質(zhì)、光介質(zhì)、和/或其他類型的非瞬態(tài)介質(zhì)(而不是諸如只傳播信號(hào)的線路之類的瞬態(tài)介質(zhì))。具體而言,諸如⑶、DVD、記憶棒、或其他可移動(dòng)非易失性存儲(chǔ)器介質(zhì)之類的已配置介質(zhì)114在被插入或以其他方式安裝時(shí)可以在功能上變?yōu)橛?jì)算機(jī)系統(tǒng)的一部分,從而使其內(nèi)容可被訪問(wèn)以供處理器110使用??梢苿?dòng)的已配置介質(zhì)114是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)112的示例。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)112的某些其他示例包括內(nèi)置RAM、R0M、硬盤、以及其他不能被用戶104輕松地移走的存儲(chǔ)設(shè)備。介質(zhì)114被配置有可由處理器110執(zhí)行的指令116 ;“可執(zhí)行”在此處按廣義使用, 以包括例如機(jī)器代碼、可解釋代碼以及在虛擬機(jī)上運(yùn)行的代碼。介質(zhì)114還被配置有數(shù)據(jù) 118,該數(shù)據(jù)通過(guò)指令116的執(zhí)行被創(chuàng)建、修改、引用和/或以別的方式使用。指令116和數(shù)據(jù)118配置它們所在的介質(zhì)114 ;當(dāng)該存儲(chǔ)器是給定計(jì)算機(jī)系統(tǒng)的功能部件時(shí),指令116和數(shù)據(jù)118還配置該計(jì)算機(jī)系統(tǒng)。在某些實(shí)施例中,數(shù)據(jù)118的一部分代表了諸如產(chǎn)品特征、 庫(kù)存、物理測(cè)量值、設(shè)置、圖像、讀數(shù)、目標(biāo)、卷等等之類的現(xiàn)實(shí)的世界的項(xiàng)。這些數(shù)據(jù)也可以如此處所討論的通過(guò)并發(fā)統(tǒng)一變更管理中的操作,例如,通過(guò)收集、分析、排序、提交、綁定、 部署、執(zhí)行、修改、顯示、創(chuàng)建、加載和/或其他操作,來(lái)變換。多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境120,包括帶有接口 IM的數(shù)據(jù)庫(kù)應(yīng)用程序122、帶有模式1 和數(shù)據(jù)130的數(shù)據(jù)庫(kù)126、附圖中所示出的其他軟件及其他項(xiàng),可以部分地或完全地駐留在一個(gè)或多個(gè)介質(zhì)112內(nèi),從而配置那些介質(zhì)。操作環(huán)境也可以包括諸如例如顯示器132、總線、電源、以及加速器之類的其他硬件。給定操作環(huán)境100可包括向開發(fā)人員提供一組協(xié)調(diào)的軟件開發(fā)工具的集成開發(fā)環(huán)境(IDE) 134。具體而言,對(duì)于一些實(shí)施例的一些合適的操作環(huán)境包括或幫助創(chuàng)建被配置成支持程序開發(fā)的 Microsoft Visual Studio ⑧開發(fā)環(huán)境(Microsoft Corporation 的標(biāo)志)。一些合適的操作環(huán)境包括Java 環(huán)境(Oracle America股份有限公司的標(biāo)志), 并且一些操作環(huán)境包括使用諸如C++或C#( "C-Sharp")之類的語(yǔ)言的環(huán)境,但是,此處的教示適用于各種各樣的編程語(yǔ)言、編程模型和程序,以及使用多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境或其組件的軟件開發(fā)本身的領(lǐng)域以外的嘗試。在圖1中以輪廓形式示出了各項(xiàng)以強(qiáng)調(diào)它們不必是所示出的操作環(huán)境的一部分, 但是可以與操作環(huán)境中的項(xiàng)進(jìn)行交互操作,如此處所討論的。未采用輪廓形式的項(xiàng)在任何附圖或任何實(shí)施例中也不一定是必需的。系統(tǒng)圖2示出了適合與一些實(shí)施例一起使用的體系結(jié)構(gòu)的各方面。變更緩存202(有時(shí)在客戶端-服務(wù)器實(shí)施例中被稱為本地緩存)包含對(duì)應(yīng)用程序122、模式128、和/或數(shù)據(jù)130的建議的變更204。變更緩存202也可以包含描繪應(yīng)用建議的變更204的近似結(jié)果的視圖206。這樣的視圖206是近似的,在于它基于以前的時(shí)間點(diǎn)的環(huán)境120的狀態(tài),并且自從該時(shí)間點(diǎn)以來(lái),其他用戶可能不僅已經(jīng)建議了變更,而且還提交了它們。 在某些實(shí)施例中,建議的變更204被表示差異圖208,即,表示跨變更類別的一組編輯的數(shù)據(jù)結(jié)構(gòu)。差異圖可以使用樹、列表、位標(biāo)志、屬性、對(duì)象、類、類方法、和/或適用于表示對(duì)應(yīng)用程序122、模式1 和/或數(shù)據(jù)130的編輯的其他熟悉的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)。在某些實(shí)施例中,差異圖是從用戶104向差異管理器210的用戶界面輸入的用戶姿勢(shì)中產(chǎn)生的。
9
更一般而言,編輯器212接受作為用戶輸入的建議的變更204,并將建議的變更給予數(shù)據(jù)庫(kù)管理系統(tǒng)和/或應(yīng)用程序編輯系統(tǒng)以供提交。在某些實(shí)施例中,編輯器將建議的變更204放在列表214中。在某些情況下,列表214是根據(jù)建議的變更之間的依賴關(guān)系216 來(lái)排序的,以使得放置變更供提交的次序不一定是用戶104在編輯器212中輸入變更的次序。在某些實(shí)施例中,編輯器212包括差異管理器210、變更緩存202、以及查詢更新引擎218。在某些情況下,編輯器212的這三個(gè)組件使用差異圖208彼此進(jìn)行通信,如此,該體系結(jié)構(gòu)相對(duì)于變更生命周期內(nèi)的變更的內(nèi)部表示是統(tǒng)一的。在某些實(shí)施例中,差異圖可以表示所有三個(gè)類別(應(yīng)用程序、模式、數(shù)據(jù))的變更204,如此,該體系結(jié)構(gòu)相對(duì)于涉及應(yīng)用程序122、模式128、以及數(shù)據(jù)130中的兩個(gè)或更多的變更的內(nèi)部表示是統(tǒng)一的。在某些實(shí)施例中,查詢更新引擎218可以訪問(wèn)表示應(yīng)用程序122的應(yīng)用程序值 222、表示模式128的模式值224、以及表示數(shù)據(jù)130的數(shù)據(jù)值226的共享多用戶存儲(chǔ)220。 就這一點(diǎn)而言,該體系結(jié)構(gòu)相對(duì)于被單個(gè)編輯器212訪問(wèn)的單個(gè)共享存儲(chǔ)中的所有三個(gè)類別的表示是統(tǒng)一的,該單個(gè)編輯器212接受三個(gè)類別(應(yīng)用程序、模式、數(shù)據(jù))中的每一個(gè)中的建議的變更204。在某些實(shí)施例中,對(duì)數(shù)據(jù)庫(kù)126的變更204可包括對(duì)數(shù)據(jù)庫(kù)關(guān)系值 228(即,關(guān)系型數(shù)據(jù)庫(kù)1 模式1 和/或數(shù)據(jù)130值)的變更。在某些實(shí)施例中,對(duì)應(yīng)用程序122的變更204可包括對(duì)應(yīng)用程序描述232中的圖對(duì)象230的變更。在某些實(shí)施例中,將收集的建議的變更204放在單個(gè)值變更事務(wù)234中以便一起提交。這樣的事務(wù)可包括一個(gè)、兩個(gè)或所有三個(gè)變更類別(應(yīng)用程序、模式、數(shù)據(jù))的建議的變更204,取決于用戶的愿望以及實(shí)施例對(duì)于統(tǒng)一變更的支持。一些實(shí)施例將至少某些變更作為SQL語(yǔ)句236實(shí)現(xiàn)以供提交。在某些情況下,在某些實(shí)施例中,SQL語(yǔ)句可以在一個(gè)或多個(gè)樂(lè)觀并發(fā)性檢驗(yàn)238和/或?qū)εc先前的觀察值的一致性檢驗(yàn)MO的上下文中發(fā)生。 提交操作提供返回M2,在某些實(shí)施例中,返回242可包括由數(shù)據(jù)庫(kù)管理系統(tǒng)所生成的標(biāo)識(shí)符,以及成功/失敗/錯(cuò)誤代碼返回。然后,編輯器212通過(guò)錯(cuò)誤報(bào)告、成功消息等等來(lái)向用戶104提供對(duì)應(yīng)的響應(yīng)對(duì)4。在某些實(shí)施例中,提交涉及丟棄成功提交的差異圖,并且還重新同步高速緩存的值以獲取提交后的高速緩存的值的當(dāng)前狀態(tài)。參考圖1到3,一些實(shí)施例提供了具有邏輯處理器110和存儲(chǔ)器介質(zhì)112的計(jì)算機(jī)系統(tǒng)102,該邏輯處理器和存儲(chǔ)器介質(zhì)通過(guò)電路、固件和/或軟件配置并位于至少一個(gè)機(jī)器中以便通過(guò)如此處所描述的對(duì)數(shù)據(jù)、模式、以及應(yīng)用程序的統(tǒng)一并發(fā)變更來(lái)變換用戶姿勢(shì)和現(xiàn)有環(huán)境120。在某些實(shí)施例中,駐留在存儲(chǔ)器中的差異管理器210可操作以從用戶姿勢(shì)產(chǎn)生差異圖208。駐留在存儲(chǔ)器中的用戶專用變更緩存202可操作以為特定用戶104維護(hù)差異圖208的集合,并為特定用戶104產(chǎn)生多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境120的視圖206,視圖206反映零個(gè)或多個(gè)差異圖208如果被提交則對(duì)環(huán)境將具有的影響。駐留在存儲(chǔ)器中的查詢更新引擎218可操作以(a)訪問(wèn)下列類別中的每一個(gè)類別的值的共享多用戶存儲(chǔ)220 數(shù)據(jù)值、模式值、應(yīng)用程序值,(b)將這些類別中的每一個(gè)類別的值變更204遞交到共享多用戶存儲(chǔ),以及(c)檢測(cè)將這些類別中的變更提交到共享多用戶存儲(chǔ)的嘗試之后的結(jié)果。在某些實(shí)施例中,一體系結(jié)構(gòu)支持其中所有這些組件202、210、218在單個(gè)客戶端可執(zhí)行程序內(nèi)實(shí)現(xiàn)的實(shí)現(xiàn)方式。一些實(shí)施例還支持這樣的基于web的實(shí)現(xiàn)方式其中,查詢更新引擎218在中間層實(shí)現(xiàn),而其他兩個(gè)組件210,202在web瀏覽器中實(shí)現(xiàn)。
一些實(shí)施例包括駐留在存儲(chǔ)器中的值變更204,該值變更包括由檢驗(yàn)所提供的上下文中的SQL語(yǔ)句236。例如,該上下文可包括樂(lè)觀并發(fā)性檢驗(yàn)238,以查看特定用戶的建議的值變更中涉及的值自從它們被當(dāng)前用戶最后一次觀察以來(lái)是否被另一個(gè)用戶更改。SQL 語(yǔ)句上下文也可以或可另選地包括一致性檢驗(yàn)對(duì)0,以檢驗(yàn)建議的值與該值的先前狀態(tài)的一致性。樂(lè)觀并發(fā)性檢驗(yàn)一般包括一致性檢驗(yàn),但是也可以檢驗(yàn)其他值。例如,當(dāng)變更數(shù)據(jù)值時(shí),一致性檢驗(yàn)可以將新的(建議的)數(shù)據(jù)值與最后一個(gè)觀察值進(jìn)行比較。并發(fā)性檢查可以那么做,并且還檢驗(yàn)?zāi)J街械目赡苡绊憯?shù)據(jù)值的變更。在某些實(shí)施例中,SQL UPDATE語(yǔ)句236不受樂(lè)觀并發(fā)性檢驗(yàn)238的保護(hù),但是接受一致性檢驗(yàn)M0,因?yàn)閁PDATE所應(yīng)用到的集合受到聲明將要被更新的行的先前狀態(tài)的前提條件的限制。在更新之后,該實(shí)施例對(duì)已經(jīng)受影響的行進(jìn)行計(jì)數(shù),并將此計(jì)數(shù)與本應(yīng)受影響的期望行數(shù)進(jìn)行比較。如果該數(shù)量不相等,那么,該實(shí)施例引發(fā)并發(fā)性錯(cuò)誤并回滾整個(gè)事務(wù)。在某些實(shí)施例中,查詢更新引擎218可操作以基于建議的值變更之間的依賴關(guān)系來(lái)對(duì)建議的值變更進(jìn)行排序。一些實(shí)施例包括駐留在存儲(chǔ)器中的值變更列表214。列表214 包含一個(gè)或多個(gè)(在某些情況下,所有三個(gè))變更類別(數(shù)據(jù)、模式、應(yīng)用程序)的建議的值變更;變更按適于在單個(gè)事務(wù)下提交的提交次序列出。在某些情況下,例如,單個(gè)事務(wù)更新一臺(tái)機(jī)器上的單個(gè)存儲(chǔ),而在其他情況下,事務(wù)可以分布在多個(gè)存儲(chǔ)和/或多個(gè)機(jī)器上。在某些實(shí)施例中,該系統(tǒng)的應(yīng)用程序處理器或其他組件可操作以跟蹤在多用戶數(shù)據(jù)庫(kù)應(yīng)用程序122的操作期間哪些值被用戶104查詢。查詢更新引擎218可操作以產(chǎn)生值變更204,值變更204是條件性的,這表現(xiàn)在只有在驗(yàn)證由用戶查詢的值沒(méi)有被變更之后, 即,在一致性檢驗(yàn)240之后,它們才請(qǐng)求提交。在某些實(shí)施例中,查詢更新引擎可操作以產(chǎn)生對(duì)于數(shù)據(jù)庫(kù)126的關(guān)系值228的值變更204,且這樣的變更駐留在系統(tǒng)中。在某些實(shí)施例中,查詢更新引擎可操作以產(chǎn)生對(duì)于應(yīng)用程序描述232的圖對(duì)象230的值變更204。在這些示例中,關(guān)系值228、數(shù)據(jù)庫(kù)126、圖對(duì)象230、以及應(yīng)用程序描述232可以各自通過(guò)熟悉的技術(shù)來(lái)提供。在某些實(shí)施例中,該系統(tǒng)包括單個(gè)事務(wù)234,該單個(gè)事務(wù)234包含對(duì)于數(shù)據(jù)庫(kù)1 的值的值變更204、對(duì)于數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)模式128的值的值變更204、以及對(duì)于用于訪問(wèn)數(shù)據(jù)庫(kù)的應(yīng)用程序122的應(yīng)用程序描述232的值變更204。這些值變更中的每一個(gè)都可以具有同一個(gè)用戶104作為作者。在某些實(shí)施例中,諸如人類用戶I/O設(shè)備之類的外圍設(shè)備106(屏幕、鍵盤、鼠標(biāo)、 圖形輸入板、話筒、揚(yáng)聲器、運(yùn)動(dòng)傳感器等等)將可操作地與一個(gè)或多個(gè)處理器110和存儲(chǔ)器進(jìn)行通信。然而,一實(shí)施例也可以深嵌入在系統(tǒng)中,以便沒(méi)有人類用戶104直接與該實(shí)施例進(jìn)行交互。軟件進(jìn)程可以是用戶104。在某些實(shí)施例中,該系統(tǒng)包括通過(guò)網(wǎng)絡(luò)連接的多個(gè)計(jì)算機(jī)。網(wǎng)絡(luò)接口設(shè)備可以使用例如諸如分組交換網(wǎng)接口卡、無(wú)線收發(fā)器或電話網(wǎng)絡(luò)接口之類的組件提供對(duì)網(wǎng)絡(luò)108的接入,并將存在于計(jì)算機(jī)系統(tǒng)中。然而,一實(shí)施例也可以通過(guò)直接存儲(chǔ)器存取、可移動(dòng)非易失性介質(zhì)、或其他信息存儲(chǔ)檢索和/或傳輸方法進(jìn)行通信,或者,計(jì)算機(jī)系統(tǒng)中的一實(shí)施例可以不與其他計(jì)算機(jī)系統(tǒng)進(jìn)行通信即可操作。進(jìn)程
圖3以流程圖300示出了某些進(jìn)程實(shí)施例。在某些實(shí)施例中,附圖所示出的進(jìn)程可以自動(dòng)地執(zhí)行,例如,通過(guò)幾乎不要求同時(shí)的實(shí)況的用戶輸入的測(cè)試腳本以運(yùn)用編輯器 212,該編輯器212進(jìn)而遞交多個(gè)變更類別的值變更204。除非另外指明,否則進(jìn)程也可以部分自動(dòng)地而部分手動(dòng)地執(zhí)行。在一給定實(shí)施例中,可以重復(fù)進(jìn)程的零個(gè)或多個(gè)所示出的步驟,有可能利用不同的參數(shù)或數(shù)據(jù)來(lái)操作。一實(shí)施例中的步驟也可以按照與圖3中展示的自頂向下次序不同的次序來(lái)執(zhí)行。步驟可以串行地、以部分重疊的方式、或完全并行地執(zhí)行。遍歷流程圖300以指出在進(jìn)程中執(zhí)行的步驟的次序可以在進(jìn)程的一次執(zhí)行與該進(jìn)程的另一次執(zhí)行之間不同。流程圖遍歷次序也可以在一個(gè)進(jìn)程實(shí)施例與另一進(jìn)程實(shí)施例之間不同。各步驟還可以被省略、組合、重命名、重組、或以其他方式偏離所示出的流程,只要所執(zhí)行的進(jìn)程是可操作的,并符合至少一個(gè)權(quán)利要求。此處提供了幫助示出該技術(shù)的各方面的示例,但是在本文內(nèi)給出的示例并未描述所有可能的實(shí)施例。實(shí)施例不僅限于此處所提供的具體實(shí)現(xiàn)、排列、顯示、特征、方法或情形。給定實(shí)施例可包括例如附加的或不同的特征、機(jī)制、和/或數(shù)據(jù)結(jié)構(gòu),并可以以別的方式偏離此處所提供的示例。在收集步驟302期間,一實(shí)施例收集建議的值變更204。步驟302可以使用適用于接收例如尋求對(duì)數(shù)據(jù)、模式、和/或應(yīng)用程序值的變更的姿勢(shì)的用戶界面或其他機(jī)制來(lái)完成。對(duì)建議的變更的收集302可以將對(duì)當(dāng)前值的觀察(例如,通過(guò)詢問(wèn))與由用戶向編輯器遞交建議的變更交錯(cuò)。在某些實(shí)施例中,查詢更新引擎充當(dāng)或包含應(yīng)用程序處理器或在轉(zhuǎn)發(fā)查詢之前截取查詢并跟蹤用戶對(duì)值的觀察的其他組件。在某些實(shí)施例中,用戶的觀察不必完全自相一致。例如,用戶A可能觀察按姓氏按字母順序排序的雇員數(shù)據(jù)庫(kù)中的前十個(gè)雇員的數(shù)據(jù)?;谠撔畔?,A可以更新一些數(shù)據(jù)。同時(shí),用戶B進(jìn)行了很多編輯,不僅對(duì)第一組十個(gè)雇員,而且還對(duì)后面的(第二)組十個(gè)雇員進(jìn)行了編輯,并提交這些編輯。然后,用戶A向下翻頁(yè),以觀察第二組十個(gè)雇員。一些實(shí)施例不刷新用戶A對(duì)前十個(gè)雇員值的觀察,而其他實(shí)施例卻刷新。簡(jiǎn)而言之,A對(duì)數(shù)據(jù)庫(kù)的查看可能不是在每一方面都是完全一致的。然而,當(dāng)A試圖提交變更時(shí),無(wú)法接受的不一致性最終將被發(fā)現(xiàn)。在標(biāo)識(shí)步驟304,一實(shí)施例標(biāo)識(shí)收集的建議的值變更的前提條件306和/或后置條件308。步驟304可以使用專用代碼和/或體現(xiàn)對(duì)變更的邏輯分析的電路來(lái)完成。例如,在行中輸入數(shù)據(jù)值或?yàn)閿?shù)據(jù)值指定顯示格式之前,如果行還不存在,則應(yīng)該創(chuàng)建行。此處還提供其他示例,但是示例并不是全面的;它們只提供本領(lǐng)域技術(shù)人員可以詳細(xì)敘述的指南。在依賴關(guān)系分析步驟310,一實(shí)施例分析建議的變更204的依賴關(guān)系。分析可包括確定312后置條件和前提條件的影響。例如,分析310可以確定一個(gè)建議的變更的后置條件會(huì)干擾另一個(gè)建議的變更的前提條件,如當(dāng)重命名行(例如,從“Bob”重命名為“Robert”) 會(huì)干擾變更該行中的數(shù)據(jù)值(例如,Bob的郵寄地址)或顯示該行的內(nèi)容的時(shí)候。作為另一個(gè)示例,分析310可以確定一個(gè)建議的變更的后置條件促進(jìn)另一個(gè)建議的變更的前提條件,如當(dāng)添加表會(huì)促進(jìn)向表添加數(shù)據(jù)值以及以報(bào)表來(lái)打印該表的時(shí)候。步驟310可以使用專用代碼和/或體現(xiàn)對(duì)變更依賴關(guān)系的確定以及分析的電路來(lái)完成。在包括一個(gè)或多個(gè)變更放置步驟316的建議的變更排序步驟314期間,一實(shí)施例放置由用戶104建議的變更,以形成318變更列表214。變更列表不一定在每個(gè)時(shí)間點(diǎn)都按照提交次序,但是在被遞交以供在單個(gè)事務(wù)234中提交之前將按提交次序來(lái)放置。變更可以例如基于后置條件和前提條件來(lái)排序314,以使得被置于列表214中靠前的變更的后置條件滿足或至少不違反前提條件。鏈表、樹、以及其他熟悉的數(shù)據(jù)結(jié)構(gòu)可以用于實(shí)現(xiàn)變更列表214以及適用于如此處所教導(dǎo)的建議的變更和變更列表214的細(xì)節(jié)的步驟314,316。一些實(shí)施例不對(duì)緩存的202更新差異圖進(jìn)行排序,而是稍后,例如就在提交之前在查詢更新引擎中對(duì)它們進(jìn)行排序。編輯器用戶界面可以實(shí)施一些排序。例如,如果用戶希望將Order. CustomerName (定單.顧客名)設(shè)置為還不存在的顧客,那么不在下拉列表中向用戶提供該CustomerName??梢悦黠@地通知用戶,他們正在對(duì)緩存的預(yù)期的數(shù)據(jù)庫(kù)進(jìn)行操作。當(dāng)對(duì)用于生成T-SQL語(yǔ)句以提交320變更的差異圖進(jìn)行排序314時(shí),一些實(shí)施例不一定利用可能由用戶提供的任何次序。在變更提交步驟320期間,一實(shí)施例試圖提交(或等效地,指示DBMS和/或其他軟件試圖提交)對(duì)數(shù)據(jù)、模式和/或應(yīng)用程序值的建議的變更204的已排序列表214。在步驟320期間,可以使用例如到熟悉的DBMS的熟悉的接口及其他值維護(hù)技術(shù)。在返回獲取步驟322期間,一實(shí)施例從提交步驟320獲取返回M2。返回可包括例如成功代碼和/或錯(cuò)誤代碼。在某些實(shí)施例中,返回242也可以包括由數(shù)據(jù)庫(kù)管理系統(tǒng)或存儲(chǔ)所生成的標(biāo)識(shí)符,例如,當(dāng)創(chuàng)建表或其他模式元素時(shí),或當(dāng)添加行時(shí)。在步驟320期間, 可以使用例如到熟悉的DBMS的熟悉的接口及其他值維護(hù)技術(shù)。在訪問(wèn)獲取步驟3M期間,一實(shí)施例獲取對(duì)多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境120的一部分的獨(dú)占訪問(wèn),諸如通過(guò)使用熟悉的技術(shù)來(lái)獲取鎖。在變更評(píng)估步驟3 期間,一實(shí)施例就對(duì)前提條件的滿足來(lái)評(píng)估建議的變更列表 214的變更。步驟3 可涉及例如在一實(shí)施例獲取324的獨(dú)占訪問(wèn)的上下文中的分析步驟 310。在例如可以在變更評(píng)估步驟3 期間發(fā)生的未滿足的條件定位步驟3 期間,一實(shí)施例定位其前提條件未被滿足的建議的變更。該實(shí)施例可以引發(fā)330錯(cuò)誤332,向用戶 104報(bào)告存在未滿足的條件,以及或許還包括其特征。一些實(shí)施例還防止334建議的變更被提交。在前提條件驗(yàn)證步驟336期間,一實(shí)施例或許在假設(shè)鎖定的情況下驗(yàn)證變更列表 214中的每一個(gè)建議的變更的前提條件將在變更被提交時(shí)被滿足。步驟336例如在所有前提條件都被滿足的情況下可包括評(píng)估步驟326。在值觀察步驟338期間,一實(shí)施例的用戶觀察涉及環(huán)境120的數(shù)據(jù)130、模式128、 和/或應(yīng)用程序122方面的值。例如,用戶可以詢問(wèn)數(shù)據(jù)庫(kù)126,將模式1 或其一部分加載到模式編輯器中,或?qū)?yīng)用程序描述或其一部分加載到應(yīng)用程序描述232編輯器中。在觀察跟蹤步驟340期間,一實(shí)施例跟蹤值觀察步驟338期間的用戶活動(dòng)。步驟 340可以使用用戶界面墊片(shim)、日志記錄和/或適用于跟蹤諸如例如在122、126、128、 130,228,230和/或232處表示的那些之類的特定項(xiàng)的其他熟悉的跟蹤機(jī)制來(lái)完成。在用戶控制的遞交步驟342期間,一實(shí)施例的用戶例如通過(guò)在編輯器212的用戶界面作出用戶姿勢(shì)344向該實(shí)施例遞交建議的變更204。在提交命令步驟346期間,一實(shí)施例的用戶命令該實(shí)施例在單個(gè)事務(wù)內(nèi)嘗試提交建議的變更204的集合,并返回該嘗試的結(jié)果。例如,由用戶使用的編輯器212可以具有“全局保存”按鈕,當(dāng)被用戶點(diǎn)擊時(shí),該按鈕操作以發(fā)起提交命令步驟346。在響應(yīng)接收步驟350,一實(shí)施例的用戶接收對(duì)提交命令步驟346的響應(yīng)M4。響應(yīng)可以通過(guò)使用例如適用于在某些實(shí)施例中所使用的樂(lè)觀并發(fā)性的熟悉的用戶界面機(jī)制、 錯(cuò)誤代碼,以及成功指示符來(lái)提供。在關(guān)系指定步驟352期間,一實(shí)施例的用戶指定在建議的變更204中所涉及的數(shù)據(jù)130、模式128,和/或應(yīng)用程序122項(xiàng)之間的關(guān)系356。例如,用戶104可以指定在給定頁(yè)面上顯示的所有名稱都是雇員姓名??梢允褂美邕m用于在編輯器212內(nèi)對(duì)數(shù)據(jù)130、模式128以及應(yīng)用程序122項(xiàng)進(jìn)行統(tǒng)一處理的熟悉的用戶界面機(jī)制,但是也可以使用熟悉的軟件工具代替編輯器212來(lái)指定關(guān)系。在關(guān)系提供步驟3M期間,一實(shí)施例的用戶向編輯器212提供在建議的變更204 中所涉及的數(shù)據(jù)130、模式128、和/或應(yīng)用程序122項(xiàng)之間的一個(gè)或多個(gè)關(guān)系356。如果例如用戶在編輯器212中直接指定關(guān)系,則步驟3M可以通過(guò)指定步驟352來(lái)完成。另選地, 如果用戶在別處例如通過(guò)使用熟悉的軟件指定352關(guān)系,那么可以通過(guò)向編輯器212導(dǎo)入在該指定352過(guò)程中所創(chuàng)建的文件或文件集合來(lái)提供3M關(guān)系。在某些實(shí)施例中,在處理應(yīng)用程序描述232的過(guò)程中推斷一些或所有這樣的關(guān)系。例如,如果應(yīng)用程序描述指示一實(shí)施例對(duì)表Customers查詢雇員Bob和Fred的列 Name (姓名)和Age (年齡),該實(shí)施例發(fā)現(xiàn)用戶已經(jīng)觀察了表Customers、列Name和Age的應(yīng)用程序描述和模式值,以及數(shù)據(jù)值Bob和Fred中的特定關(guān)系。在差異圖產(chǎn)生步驟358期間,一實(shí)施例從用戶姿勢(shì)344產(chǎn)生差異圖208??梢允褂美邕m用于統(tǒng)一地接收姿勢(shì)控制數(shù)據(jù)130、模式128、和/或應(yīng)用程序122項(xiàng)的熟悉的用戶界面軟件,以及捕捉對(duì)這樣的項(xiàng)的建議的變更的狀態(tài)的差異圖208數(shù)據(jù)結(jié)構(gòu)。在差異圖維護(hù)步驟360期間,一實(shí)施例維護(hù)對(duì)應(yīng)于還沒(méi)有被遞交以供提交348的一組建議的變更204的差異圖208的集合。步驟360可包括諸如對(duì)通過(guò)差異圖表示的建議的變更進(jìn)行排序314,將這些建議的變更放置316在列表214中,分析310建議的變更依賴關(guān)系,評(píng)估3 建議的變更,和/或跟蹤340用戶對(duì)數(shù)據(jù)130、模式128、和/或應(yīng)用程序122 項(xiàng)的觀察。在視圖產(chǎn)生步驟362,一實(shí)施例為用戶產(chǎn)生視圖206,該視圖206反映在由一個(gè)或多個(gè)差異圖所表示的建議的變更被成功地提交320的情況下環(huán)境120的狀態(tài)??梢允褂弥T如HTML、Windows Presentation Foundation等等之類的用于創(chuàng)建/配置可視顯示132的熟悉的用戶界面工具,它們適用于將視圖基于未提交的變更204以及底層存儲(chǔ)220。在存儲(chǔ)訪問(wèn)步驟364,一實(shí)施例例如通過(guò)使用熟悉的工具來(lái)讀和/寫存儲(chǔ),例如在編輯器212和/或查詢更新引擎218的指導(dǎo)下,訪問(wèn)多用戶存儲(chǔ)220。在條件性值變更產(chǎn)生步驟366期間,一實(shí)施例產(chǎn)生條件性值變更204,S卩,以樂(lè)觀并發(fā)性檢驗(yàn)238和/或先前值一致性檢驗(yàn)240為條件的變更。步驟366可以例如基于在事務(wù)234期間要執(zhí)行的檢驗(yàn)238、240在條件性SQL控制流語(yǔ)句的上下文中使用SQL語(yǔ)句236 來(lái)完成。對(duì)于檢驗(yàn)238J40的條件可以基于例如分析310和/或評(píng)估326自動(dòng)地生成,和 /或作為由用戶104顯式地提供的條件來(lái)生成。在遞交步驟368期間,一實(shí)施例例如響應(yīng)于提交建議的變更的集合的命令346遞交條件性值變更204以供提交348。
14
在返回檢測(cè)步驟370期間,一實(shí)施例檢測(cè)從提交嘗試的返回M2。返回可包括例如成功/出錯(cuò)指示符,并且可包括通過(guò)數(shù)據(jù)庫(kù)和/或通過(guò)其他軟件所提供的標(biāo)識(shí)符。下面將參考各實(shí)施例更詳細(xì)地討論前面的步驟和它們的相互關(guān)系。一些實(shí)施例提供了用于在多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境中管理變更的進(jìn)程。下面首先主要從實(shí)現(xiàn)方式的觀點(diǎn)來(lái)看來(lái)描述該進(jìn)程,但是,可以理解,此處還描述并隱式地/顯式地講述了從用戶的觀點(diǎn)來(lái)看的對(duì)應(yīng)的進(jìn)程。在某些實(shí)施例中,一進(jìn)程包括收集302對(duì)多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境的建議的變更,之后提交那些變更中的任一個(gè)。該進(jìn)程對(duì)于特定厄建議的變更Y,標(biāo)識(shí)304由Y假定的至少一個(gè)前提條件PreY,以及通過(guò)提交Y所引起的至少一個(gè)后置條件PostY,并對(duì)于特定的建議的變更X,標(biāo)識(shí)304由X假定的至少一個(gè)前提條件PreX,以及通過(guò)提交X所引起的至少一個(gè)后置條件PostX。為分析310變更X和變更Y的依賴關(guān)系,該進(jìn)程判斷312PostY使 PreX變得不可用(即,變更Y的結(jié)果違反變更X的前提條件,如此,Y無(wú)法在X之前被提交) 和/或判斷312PostX允許(即,變更X的結(jié)果不排除變更Y,如此,X可以在Y之前被提交)。然后,該進(jìn)程對(duì)建議的變更進(jìn)行排序314,以形成已排序的變更列表214,在該列表中,按照提交次序,變更X在變更Y前面。前面的實(shí)施例涉及收集302建議的變更204并在試圖提交320它們之前對(duì)它們進(jìn)行排序314。這些實(shí)施例不一定包括或排除此處所討論的其他方面,如樂(lè)觀并發(fā)性、事務(wù)性提交、或?qū)τ跀?shù)據(jù)、模式以及應(yīng)用程序變更的統(tǒng)一的用戶體驗(yàn)。作為一個(gè)具體示例,在某些實(shí)施例中,排序步驟314在已排序的變更列表中,把將創(chuàng)建數(shù)據(jù)庫(kù)元素的建議的模式變更204置于316將把值寫入到該數(shù)據(jù)庫(kù)元素中的建議的數(shù)據(jù)變更204之前。例如,變更可能試圖在Employees表中創(chuàng)建Age列,然后向Employees表添加一行,該行包括Age值。作為另一個(gè)具體示例,在某些實(shí)施例中,排序步驟314在已排序的變更列表中,把將引用數(shù)據(jù)庫(kù)元素值的建議的變更204置于316將移除該數(shù)據(jù)庫(kù)元素的建議的變更204之前。例如,變更可能在刪除Bob的行之前試圖將Tasks. AssignedTo (任務(wù).分配給)從Bob 變更為Fred。另一個(gè)示例是試圖在刪除Bob的行之前從Employees表中的Bob的行復(fù)制一些東西的變更。在某些實(shí)施例中,該進(jìn)程在一個(gè)事務(wù)中提交320變更的集合。例如,該進(jìn)程可能在單個(gè)事務(wù)234中提交320上面所指出的變更X和變更Y。這些實(shí)施例將事務(wù)性提交添加到上面指出的各方面(收集變更并對(duì)它們排序)。這些實(shí)施例允許但是不要求樂(lè)觀并發(fā)性,以及對(duì)于對(duì)數(shù)據(jù)、模式、以及應(yīng)用程序的變更的統(tǒng)一用戶體驗(yàn)。在某些實(shí)施例中,該進(jìn)程獲取3M對(duì)多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境的一部分的獨(dú)占訪問(wèn)。所述的部分具有在獲取該獨(dú)占訪問(wèn)時(shí)的一些當(dāng)前狀態(tài)。對(duì)于每一個(gè)建議的變更204, 該進(jìn)程評(píng)估3 該建議的變更的所有前提條件是否都存在于當(dāng)前狀態(tài)或者將由已排序的變更列表中的該建議的變更前面的建議的變更所引起。這樣的實(shí)施例將樂(lè)觀并發(fā)性的方面添加到收集和排序變更的方面。例如,響應(yīng)于 “保存”按鈕,一些這樣的實(shí)施例鎖定可以變更的任何東西(數(shù)據(jù)、模式、應(yīng)用程序描述),如此,獲取3M獨(dú)占訪問(wèn)。然后,這些實(shí)施例檢驗(yàn)以查看當(dāng)用戶收集要遞交的建議的變更時(shí)什么已經(jīng)變更,即,該進(jìn)程相對(duì)于用戶首先看到的值評(píng)估3 建議的變更??赡苌婕皟煞N前提條件,即,當(dāng)客戶首先觀察時(shí)什么處于環(huán)境120中,以及作為已排序的變更的結(jié)果將產(chǎn)生什么。在某些實(shí)施例中,如果滿足所有前提條件,則該進(jìn)程提交320建議的變更。然而,在某些實(shí)施例中以及在一些情況下,用戶104可以讓一實(shí)施例在編輯建議的變更時(shí)在后臺(tái)執(zhí)行這些獲取3 和評(píng)估3 步驟,而不實(shí)際提交320變更,直到用戶已準(zhǔn)備好并顯式地命令346 該實(shí)施例提交變更。在某些實(shí)施例中,評(píng)估步驟定位3 具有以下前提條件的建議的變更該前提條件在當(dāng)前狀態(tài)中不存在,并且將不會(huì)由已排序的變更列表中的該建議的變更前面的建議的變更所引起。在這種情況下,該進(jìn)程引發(fā)330 —個(gè)錯(cuò)誤,并例如通過(guò)從事務(wù)中刪除它來(lái)阻止 334建議的變更被提交。此活動(dòng)認(rèn)識(shí)到,樂(lè)觀并發(fā)性在某些情況下太樂(lè)觀,在于可以由其他用戶作出沖突的變更。在某些實(shí)施例中,收集步驟302收集下列變更類別中的至少兩個(gè)類別的建議的變更204 數(shù)據(jù)變更、模式變更、應(yīng)用程序變更。在某些實(shí)施例中,收集所有三個(gè)類別的建議的變更204。就這一點(diǎn)而言,一些實(shí)施例提供一種形式的跨變更類別的統(tǒng)一的用戶體驗(yàn)。在某些實(shí)施例中,變更類別之間的區(qū)別是分明的,這表現(xiàn)在給定變更可能只影響單個(gè)類別。在其他實(shí)施例中,這樣的區(qū)別是模糊的,這表現(xiàn)在變更可能涉及兩個(gè)或者甚至三個(gè)類別。在各類別之間可能存在形式關(guān)系,但是,不是在每個(gè)實(shí)施例中都必需的。在某些實(shí)施例中,應(yīng)用程序描述232與數(shù)據(jù)值和模式值存儲(chǔ)在同一個(gè)數(shù)據(jù)庫(kù)中, 以便于所有三個(gè)類別的或包括應(yīng)用程序變更的任何兩個(gè)類別中的變更的事務(wù)性提交。在其他實(shí)施例中,應(yīng)用程序描述被分開存儲(chǔ),而事務(wù)性提交利用熟悉的分布式事務(wù)技術(shù)來(lái)完成,例如通過(guò)鎖定總的存儲(chǔ)220的應(yīng)用程序描述部分、鎖定總的存儲(chǔ)220的模式數(shù)據(jù)部分、 提交應(yīng)用程序變更、提交模式和/或數(shù)據(jù)變更、解除鎖定總的存儲(chǔ)220的應(yīng)用程序描述部分、以及解除鎖定總的存儲(chǔ)220的模式數(shù)據(jù)部分。在某些實(shí)施例中,該進(jìn)程基于至少兩個(gè)已分析的依賴關(guān)系按提交的次序?qū)χ辽偃齻€(gè)建議的變更進(jìn)行排序314,建議的變更是下列變更類別中的至少兩個(gè)數(shù)據(jù)變更、模式變更、應(yīng)用程序變更。該進(jìn)程驗(yàn)證336在建議的變更的提交時(shí)間每一個(gè)建議的變更的前提條件將被滿足。然后,該進(jìn)程在單個(gè)事務(wù)中按提交的次序提交320建議的變更,在該單個(gè)事務(wù)中,將與建議的變更有沖突的任何變更都被禁止。如此,一些實(shí)施例包括收集變更、在試圖提交它們之前對(duì)它們進(jìn)行排序、樂(lè)觀并發(fā)性(例如,驗(yàn)證336前提條件)、事務(wù)性的提交 320( “單個(gè)事務(wù)”)、以及對(duì)于數(shù)據(jù)、模式、以及應(yīng)用程序變更的統(tǒng)一的用戶體驗(yàn)(“至少兩個(gè)變更類別”)。如上所述,事務(wù)可以是單個(gè)事務(wù),即使涉及多個(gè)數(shù)據(jù)庫(kù)或其他存儲(chǔ)部分中的多個(gè)鎖。通過(guò)在涉及單獨(dú)的數(shù)據(jù)庫(kù)時(shí)使用多個(gè)鎖,可以提供事務(wù)的特征。例如,進(jìn)程可以行使對(duì)存儲(chǔ)的獨(dú)占寫控制(不管有多少數(shù)據(jù)庫(kù)構(gòu)成存儲(chǔ)220),能夠回滾變更,等等。在某些實(shí)施例中,該進(jìn)程不會(huì)從提交步驟獲得返回值。在其他實(shí)施例中,該進(jìn)程從提交步驟獲得322至少一個(gè)返回值對(duì)2。返回值可以是狀態(tài)代碼和/或標(biāo)識(shí)符。術(shù)語(yǔ)“標(biāo)識(shí)符”此處對(duì)于返回值242廣泛地使用,并且可包括數(shù)據(jù)庫(kù)生成的ID或從提交操作返回的修改過(guò)的值。例如,當(dāng)插入新顧客時(shí),該顧客的ID可以由DBMS自動(dòng)生成。一旦事務(wù)成功地完成,就檢索并返回新自動(dòng)生成的ID。然而,返回242 “標(biāo)識(shí)符”不僅限于鍵或其他單一值; 它們還可以是任何數(shù)據(jù)庫(kù)自動(dòng)生成的或修改的單元格。
現(xiàn)在轉(zhuǎn)向用戶的觀點(diǎn),一些實(shí)施例提供用于在多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境120中做出變更的進(jìn)程,其包括該環(huán)境的特定用戶觀察338多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境的值,并向編輯器遞交342對(duì)多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境的至少一些觀察值的多個(gè)建議的變更。 建議的變更可以是一個(gè)或多個(gè)變更類別,即,數(shù)據(jù)變更、模式變更、應(yīng)用程序變更。用戶還命令346編輯器將所有建議的變更一起提交320,而不是命令編輯器提交其中一個(gè)變更,接收對(duì)該命令的響應(yīng),然后命令編輯器提交另一個(gè)變更,接收對(duì)該命令的響應(yīng),并繼續(xù)逐個(gè)地提交變更??梢岳斫?,對(duì)建議的變更的遞交不一定要最好被視為離散的用戶動(dòng)作,而是可以被視為一系列用戶動(dòng)作。用戶例如對(duì)數(shù)據(jù)庫(kù)中的一些數(shù)據(jù)進(jìn)行一次或多次觀察,收集針對(duì)這些觀察值的建議的變更的集合,然后要求原子地提交建議的變更。觀察和收集動(dòng)作可以交錯(cuò),并且除針對(duì)在所有建議的變更已經(jīng)被收集并作出提交它們的嘗試之后由其他用戶進(jìn)行變更進(jìn)行保護(hù)之外,一些實(shí)施例還針對(duì)可能在該進(jìn)程的此部分期間發(fā)生的任何外部變更進(jìn)行保護(hù)。在某些實(shí)施例中,該進(jìn)程涉及接收350對(duì)命令步驟的響應(yīng),其指出建議的變更204 與在觀察和遞交步驟之后并且在命令步驟之前作出的另一個(gè)變更不一致。例如,SQL事務(wù) 234可能失敗,產(chǎn)生一致性錯(cuò)誤,因?yàn)樵诖擞脩暨f交建議的變更的時(shí)間和此用戶命令346建議的變更被提交的時(shí)間之間另一個(gè)用戶變更了某種東西(數(shù)據(jù)、模式和/或應(yīng)用程序描述)O作為一具體示例,一些實(shí)施例接收350對(duì)命令步驟的響應(yīng)M4,其指出對(duì)數(shù)據(jù)值的建議的變更與在觀察和遞交步驟之后且在命令步驟之前作出的、移除包含該數(shù)據(jù)值的數(shù)據(jù)元素的變更不一致。例如,或許客戶B希望變更Bob的年齡,但是,客戶A已經(jīng)從Employees 表中移除了 Bob的行。作為另一個(gè)具體示例,一些實(shí)施例接收350對(duì)命令步驟的響應(yīng)M4,其指出變更數(shù)據(jù)值的建議的變更與(a)移除包含該數(shù)據(jù)值的數(shù)據(jù)庫(kù)元素,并且(b)在觀察和遞交步驟之后且在命令步驟之前作出的變更不一致。例如,客戶B希望變更Bob的年齡,但是,客戶A 已經(jīng)從Employees表中移除了 Age列。作為另一個(gè)具體示例,一些實(shí)施例接收350對(duì)命令步驟的響應(yīng)M4,其指出變更數(shù)據(jù)元素類型的建議的變更與(a)重命名該數(shù)據(jù)元素并且(b)在觀察和遞交步驟之后且在命令步驟之前作出的變更不一致。例如,客戶B希望變更Bob的年齡類型,但是,客戶A已經(jīng)將Bob的行重命名為“Robert”。作為另一個(gè)具體示例,一些實(shí)施例接收350對(duì)命令步驟的響應(yīng)M4,其指出變更數(shù)據(jù)庫(kù)元素類型的建議的變更與(a)重命名該數(shù)據(jù)庫(kù)元素并且(b)在觀察和遞交步驟之后且在命令步驟之前作出的變更不一致。例如,客戶B希望變更Age列類型,但是,客戶A已經(jīng)重命名了 Age列。作為另一個(gè)具體示例,一些實(shí)施例接收350對(duì)命令步驟的響應(yīng)M4,其指出提變更數(shù)據(jù)元素的應(yīng)用程序顯示規(guī)則的建議的變更與(a)移除數(shù)據(jù)庫(kù)元素并且(b)在觀察和遞交步驟之后且在命令步驟之前作出的變更不一致。例如,客戶B希望變更Age列值(數(shù)據(jù)元素)在應(yīng)用程序122中如何顯示,但是,客戶A已經(jīng)從模式中移除了 Age列(數(shù)據(jù)庫(kù)元素)。作為另一個(gè)具體示例,一些實(shí)施例接收350對(duì)命令步驟的響應(yīng)M4,其指出變更數(shù)
17據(jù)元素的應(yīng)用程序顯示規(guī)則的建議的變更與(a)重命名數(shù)據(jù)庫(kù)元素并且(b)在觀察和遞交步驟之后且在命令步驟之前作出的變更不一致。例如,客戶B希望變更Age列值在應(yīng)用程序中如何顯示,但是,客戶A已經(jīng)重命名Age列。還可能有許多其他不一致情形。例如,客戶A希望將列Age的類型從串變更為整型,而客戶B希望將Bob的年齡從“32” (串)變更為“34”(還是串)。此處所提供的不一致情形的示例和示例檢驗(yàn)并不是所有實(shí)施例中的所有可能性的全面。更一般而言,一些實(shí)施例從編輯器212接收350響應(yīng),其指出未提交的建議的變更 204與由環(huán)境的另一個(gè)用戶遞交的已提交的變更不一致。在SQL事務(wù)例如以一致性錯(cuò)誤失敗之后可以向用戶顯示詳細(xì)信息。一種實(shí)現(xiàn)方式可以具體地報(bào)告事務(wù)為什么失敗,并可以指出就此可以聯(lián)系哪些其他用戶,因?yàn)橐采婕傲怂麄兊淖兏?。一些?shí)施例包括指定352屬于下列類別中的一個(gè)或多個(gè)的項(xiàng)之間的至少一個(gè)關(guān)系數(shù)據(jù)值、模式值、應(yīng)用程序值,并且還包括在遞交步驟期間提供邪4關(guān)系。例如,一些實(shí)施例允許用戶104在存儲(chǔ)器中的不同數(shù)據(jù)值、模式值或應(yīng)用程序值之間創(chuàng)建關(guān)系。這樣的關(guān)系可以基于臨時(shí)存儲(chǔ)器內(nèi)結(jié)構(gòu),因?yàn)橛糜诒硎具@樣的關(guān)系的存在的鍵可以是由數(shù)據(jù)庫(kù)在提交時(shí)間自動(dòng)生成的。作為提交變更的一部分,一些實(shí)施例試圖確保在這些實(shí)體之間創(chuàng)建更加永久的關(guān)系。例如,當(dāng)插入新顧客(cl)和該特定顧客(cl)的新定單(ol)時(shí),ol在存儲(chǔ)器中鏈接到Cl。然而,如果cl的主鍵是數(shù)據(jù)庫(kù)生成的值,則在實(shí)際插入cl之后在ol和 cl之間建立更加永久的關(guān)系,并檢索cl的自動(dòng)生成的主鍵值作為返回242值。一旦檢索了該返回值,一實(shí)施例可以自動(dòng)地將ol的CustomerId (顧客id)列更新到cl的主鍵的更加永久的值,以使得ol正確地鏈接到Cl。一些實(shí)施例使用從提交返回的結(jié)果(存儲(chǔ)生成的值)來(lái)更新在變更緩存中高速緩存的值。其他實(shí)施例在成功提交之后丟棄變更緩存的所有高速緩存的值,并重新查詢以利用例如足以支持應(yīng)用程序的當(dāng)前頁(yè)面的值重新填充變更緩存。已配置的介質(zhì)一些實(shí)施例包括已配置的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)112。介質(zhì)112可包括盤(磁盤、 光盤,或別的)、RAM、EEPR0M或其他ROM、和/或其他可配置存儲(chǔ)器,特別包括非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)(而不是有線和其他傳播信號(hào)介質(zhì))。已配置的存儲(chǔ)介質(zhì)可以特別地是諸如CD、 DVD或閃存之類的可移動(dòng)存儲(chǔ)介質(zhì)114。可以是可移動(dòng)的或不可移動(dòng)的,并可以是易失性的或非易失性的通用存儲(chǔ)器可以被配置成以從可移動(dòng)介質(zhì)114和/或諸如網(wǎng)絡(luò)連接之類的另一源中讀取的數(shù)據(jù)118和指令116的形式使用諸如差異圖208、已排序的變更列表214、所有三個(gè)類別的建議的變更204、和/或帶有全局保存命令346的編輯器212之類的項(xiàng)的實(shí)施例,以形成已配置的介質(zhì)。已配置的介質(zhì)112能夠使計(jì)算機(jī)系統(tǒng)執(zhí)行用于通過(guò)諸如樂(lè)觀并發(fā)性、已排序的變更、跨各變更類別的統(tǒng)一體系結(jié)構(gòu)和用戶體驗(yàn)之類的方面以及此處所公開的其他方面來(lái)變換數(shù)據(jù)的進(jìn)程步驟。如此,圖1到3幫助示出了已配置的存儲(chǔ)介質(zhì)實(shí)施例和進(jìn)程實(shí)施例,以及系統(tǒng)和進(jìn)程實(shí)施例。具體而言,圖3中所示出的,或此處以其他方式教導(dǎo)的進(jìn)程步驟中的任一個(gè)可以被用來(lái)幫助配置存儲(chǔ)介質(zhì)以形成已配置的介質(zhì)實(shí)施例。補(bǔ)充示例下面提供了更多細(xì)節(jié)和設(shè)計(jì)考慮。如同此處的其他示例,在給定實(shí)施例中,所描述的特征可以單獨(dú)地使用和/或組合地使用,或根本不使用。CN 102279873 A
說(shuō)明書
15/18 頁(yè) 那些本領(lǐng)域的技術(shù)人員將理解,實(shí)現(xiàn)細(xì)節(jié)可以涉及諸如特定API和特定示例程序之類的特定代碼,且因此不必出現(xiàn)在每個(gè)實(shí)施例中。本領(lǐng)域的技術(shù)人員還將理解,在討論細(xì)節(jié)時(shí)所使用的程序標(biāo)識(shí)符和某些其他術(shù)語(yǔ)是實(shí)現(xiàn)專用的,且如此不必涉及每個(gè)實(shí)施例。盡管如此,雖然它們不一定需要出現(xiàn)在這里,但是提供了這些細(xì)節(jié),因?yàn)樗鼈兺ㄟ^(guò)提供上下文可以幫助一些讀者,和/或可以示出此處所討論的技術(shù)的許多可能的實(shí)現(xiàn)中的一些。在某些實(shí)施例中,包括圖4中所示出的一些,一體系結(jié)構(gòu)包括三個(gè)主要子系統(tǒng)查詢更新引擎218、本地緩存202、以及差異管理器210。這三個(gè)組件使用差異圖208來(lái)進(jìn)行通信。差異圖是對(duì)數(shù)據(jù)項(xiàng)118的一組編輯的具體表示。在差異圖內(nèi),要變更的數(shù)據(jù)具有標(biāo)識(shí)。 標(biāo)識(shí)被一般地操縱。對(duì)于給定的一條數(shù)據(jù)118,標(biāo)識(shí)足以將該數(shù)據(jù)映射回到存儲(chǔ),如此標(biāo)識(shí)的形式取決于數(shù)據(jù)118的源。具體而言,數(shù)據(jù)庫(kù)126的目標(biāo)數(shù)據(jù)可以通過(guò)關(guān)系存儲(chǔ)在一個(gè)或多個(gè)服務(wù)器404上的目標(biāo)存儲(chǔ)402中,而應(yīng)用程序描述232包括存儲(chǔ)在充當(dāng)應(yīng)用程序存儲(chǔ)406的對(duì)象儲(chǔ)存庫(kù)中的圖結(jié)構(gòu)化對(duì)象230。在此示例中,存儲(chǔ)402、406共同形成多用戶存儲(chǔ)220。標(biāo)識(shí)的形式在數(shù)據(jù)118的這些形式之間不同。在某些實(shí)施例中,查詢更新引擎218負(fù)責(zé)訪問(wèn)364各種各樣的存儲(chǔ)的數(shù)據(jù)118(應(yīng)用程序描述232、模式128、以及目標(biāo)數(shù)據(jù)130),將對(duì)此數(shù)據(jù)的變更遞交368到存儲(chǔ),并檢測(cè) 370和解釋這些變更的失敗。查詢更新引擎218的一個(gè)作用是以存儲(chǔ)220理解的術(shù)語(yǔ)創(chuàng)建和解釋標(biāo)識(shí)(也稱做“標(biāo)識(shí)符”)。當(dāng)對(duì)存儲(chǔ)做出查詢時(shí),一實(shí)施例可以為返回242的數(shù)據(jù)生成標(biāo)識(shí)。當(dāng)作出了更新時(shí),一實(shí)施例可以將一組差異圖208轉(zhuǎn)換為要應(yīng)用于存儲(chǔ)220的操作序列,它們可以涉及對(duì)變更重新排序314,以適應(yīng)由存儲(chǔ)施加的語(yǔ)義約束。在支持樂(lè)觀并發(fā)性的各實(shí)施例中,當(dāng)實(shí)施例和/或用戶正在準(zhǔn)備更新時(shí),存儲(chǔ) 220可能已經(jīng)以與給定用戶的更新相沖突的方式被變更。在某些實(shí)施例中,借助于底層存儲(chǔ),檢測(cè)這些情況,并在可操作的響應(yīng)244中報(bào)告它們是查詢更新引擎218的職責(zé)。此職責(zé)可以依賴于對(duì)底層數(shù)據(jù)的語(yǔ)義的認(rèn)識(shí),并可以緊密耦合到存儲(chǔ)220。例如,關(guān)系數(shù)據(jù)和圖對(duì)象數(shù)據(jù)具有不同的沖突檢測(cè)規(guī)則。一些實(shí)施例也被設(shè)計(jì)成能處理變更將在數(shù)據(jù)存儲(chǔ)更新之間沖突的可能性。為支持檢測(cè)這樣的沖突,一些差異圖208包括從存儲(chǔ)中獲取的舊值,以及新建議的值。在某些實(shí)施例中,本地緩存202維護(hù)360差異圖208的集合,并產(chǎn)生362用于向用戶顯示的數(shù)據(jù)118的視圖,該視圖表示如果當(dāng)前累加的未提交的變更204被成功地提交320 到存儲(chǔ)器則將是什么狀態(tài)。在某些實(shí)施例中,這是由用戶看到和操縱的數(shù)據(jù)視圖。除存儲(chǔ)數(shù)據(jù)118的原始值以及當(dāng)前建議的值之外,此組件也可以呈現(xiàn)當(dāng)前數(shù)據(jù)庫(kù)1 和應(yīng)用程序描述232值,以便于沖突的演示。在某些實(shí)施例中,當(dāng)用戶選擇提交他們的變更204時(shí),所有變更都被封裝,并作為單個(gè)更新遞交到查詢更新引擎218。368可能成功地完成,或者也可能失敗。在失敗的情況下,一些實(shí)施例接收有關(guān)存儲(chǔ)的當(dāng)前狀態(tài)的足夠信息,以允許它們構(gòu)建沖突的演示。在某些實(shí)施例中,在另一個(gè)事務(wù)被調(diào)用之前,解決沖突的用戶的姿勢(shì)被反映在用戶界面中,以便給出系統(tǒng)狀態(tài)已經(jīng)變更的視覺(jué)反饋。在某些實(shí)施例中,差異管理器210負(fù)責(zé)將用戶姿勢(shì)344轉(zhuǎn)換為差異圖208。當(dāng)由查詢更新引擎218評(píng)估查詢時(shí),它們被注解,以使得各個(gè)結(jié)果的標(biāo)識(shí)可用。差異管理器210 使用這些標(biāo)識(shí)來(lái)為接收到的特定用戶姿勢(shì)創(chuàng)建差異圖,例如通過(guò)編輯器212用戶界面408。
19在某些實(shí)施例中,給定用戶姿勢(shì)可以導(dǎo)致許多差異圖的創(chuàng)建。在某些實(shí)施例中,在駐留在客戶端410上的單個(gè)可執(zhí)行程序內(nèi)實(shí)現(xiàn)多個(gè)組件218、 202、210、212。一些實(shí)施例包括這樣的web實(shí)現(xiàn)方式其中,查詢更新引擎218在中間層實(shí)現(xiàn),而組件202、210、212在瀏覽器中實(shí)現(xiàn)。至于用戶模型,在某些實(shí)施例中,用戶模型是這樣的使得所有類型的變更一應(yīng)用程序、模式、以及數(shù)據(jù)一都共享統(tǒng)一的包羅萬(wàn)象的體驗(yàn)。這樣的一個(gè)示例是全局保存的體驗(yàn);可以做出不同類型的變更,然后,當(dāng)用戶敲擊保存按鈕作為命令346時(shí),所有變更都立即應(yīng)用。此方法允許用戶導(dǎo)航遍及環(huán)境120,作出完全不同類型的變更,然后在用戶空閑時(shí)決定保存。這有助于避免迫使用戶對(duì)于不同類型的變更通過(guò)不同的體驗(yàn)來(lái)保存的方法所施加的情形,并且不會(huì)讓用戶在保存之前作出若干類型的變更。這里所討論的用戶模型就“保存”變更的單一概念而言,提供了大得多的靈活性和簡(jiǎn)潔性。在某些實(shí)施例中,還收集和記錄所有類別的變更,以使得用戶可以在統(tǒng)一的位置查看所有變更。那里,用戶可以斷定什么已經(jīng)變更,添加了什么,刪除了什么等等,以幫助跟蹤還有待于保存的活動(dòng)。當(dāng)用戶使用全局保存按鈕保存時(shí),向他們示出沖突的所有配置,并且他們可以推理沖突的所有配置,以使得他們可以作出有關(guān)各種數(shù)據(jù)源內(nèi)沖突和跨數(shù)據(jù)源沖突的解決選項(xiàng)的決策。這比不允許用戶直接看到他們的模式變更例如如何影響他們的數(shù)據(jù)的方法提供更大的靈活性。此外,它還可以允許用戶選擇他們的沖突解決選項(xiàng),而不是讓他們的變更完全被拒絕,或蓋寫其他用戶的變更。更一般而言,一些實(shí)施例提供對(duì)變更的排序。編輯器212收集和緩存很多變更(對(duì)數(shù)據(jù)、模式、對(duì)應(yīng)用程序描述的變更)。直到客戶敲擊“保存”之前,這些變更不被提交到數(shù)據(jù)庫(kù)。更新引擎以使得變更可以被提交到數(shù)據(jù)庫(kù)(在單一事務(wù)中)并成功的方式來(lái)對(duì)這些變更進(jìn)行排序。一些實(shí)施例提供樂(lè)觀并發(fā)性。給定用戶可以在單次遇到打開(Open)···編輯 (Edit)…保存(Save)時(shí)作出數(shù)據(jù)、模式、以及應(yīng)用程序描述變更。用戶基于首先查詢數(shù)據(jù)庫(kù)以觀察數(shù)據(jù)、模式、以及應(yīng)用程序描述的當(dāng)前狀態(tài)來(lái)創(chuàng)作這些變更。為確保他們的更新不會(huì)打斷應(yīng)用程序,一實(shí)施例可以確保數(shù)據(jù)庫(kù)和/或其他涉及的存儲(chǔ)220在用戶首先觀察值的時(shí)間和他們敲擊“保存”以提交320他們的各種變更的時(shí)間之間沒(méi)有被變更。在運(yùn)行編輯器212的過(guò)程中,一些實(shí)施例跟蹤引擎218查詢了什么數(shù)據(jù)/模式/應(yīng)用程序描述。在提交時(shí)間,編輯器212開發(fā)反映他們的建議的數(shù)據(jù)/模式/應(yīng)用程序描述變更204的T-SQL 更新語(yǔ)句。T-SQL語(yǔ)句是條件性的,驗(yàn)證336到變更被提交時(shí),數(shù)據(jù)/模式/應(yīng)用程序描述的觀察值保持不變。作為涉及模式和數(shù)據(jù)變更的具體示例,通過(guò)編輯器,用戶在“Employees”表中創(chuàng)建新列“Age”。然后,用戶在Employees表中添加一個(gè)新行,并為在此新行中的“Age”單元格提供值?!癆ge”列在數(shù)據(jù)庫(kù)中還不存在,因?yàn)檫@些變更被緩存在編輯器212中,以使得當(dāng)用戶敲擊“保存”時(shí)它們可以被一同應(yīng)用到數(shù)據(jù)庫(kù)。用戶敲擊“保存”。為使這些變更的SQL事務(wù)成功,對(duì)它們進(jìn)行排序。首先,在“Employees”表中創(chuàng)建“Age”列。其次,向“Employees” 中添加一個(gè)新行(包括“Age”值)。作為涉及數(shù)據(jù)變更的具體示例,假設(shè)Bob剛剛被解雇,需要將他從“人力資源”數(shù)據(jù)庫(kù)中刪除。用戶從Employees表中刪除帶有主鍵“Bob”的行。用戶進(jìn)入Tasks (任務(wù))表,并將Bob的任務(wù)重新分配給他的代替者“Fred”。假設(shè)Tasks表具有外鍵約束,聲明Tasks 表中的AssignecTTo (分配給)列必須匹配Employees表中的一些雇員的EmployeeName (雇員姓名)字段。對(duì)于Tasks表中的“修復(fù)一些隱錯(cuò)”任務(wù),用戶將“AssignedTo”字段從 “Bob”更新為“Fred”。用戶敲擊“保存”。為使這些變更的SQL事務(wù)成功,對(duì)它們進(jìn)行排序 314。首先,對(duì)于“修復(fù)一些隱錯(cuò)”任務(wù),將Tasks. AssignedTo從Bob變更為Fred。其次,刪除Employees表中的“Bob”行。作為涉及樂(lè)觀一致性和數(shù)據(jù)變更的具體示例,假設(shè)用戶A希望從Employees表中刪除Bob,因?yàn)樗唤夤?,而用戶B希望將Employees表中的Bob的年齡從42變更為43。在編輯器212中,用戶B將“Employees”表中的“Bob”行的“Age”字段從42變更為43。用戶 B沒(méi)有敲擊“保存”,而是暫時(shí)轉(zhuǎn)向其他事情。為作出從42到43的變更,編輯器查詢數(shù)據(jù)庫(kù)中的Bob的年齡。作為緩存變更的一部分(“保存”之前),編輯器注意到它最后觀察到了 Bob 的年齡為 42 (數(shù)據(jù)庫(kù)=“HR”、表="Employees",行=“Name:Bob,,,字段=“Age:42”)。 當(dāng)用戶B專注于其他事情時(shí),用戶A從Employees表中刪除“Bob”行,并將此變更保存到數(shù)據(jù)庫(kù)。用戶B將注意力回到編輯器,仔細(xì)考慮從42到43的變更,然后敲擊“保存”。SQL事務(wù)失敗,帶有一致性錯(cuò)誤。對(duì)于42-43變更的SQL語(yǔ)句利用樂(lè)觀并發(fā)性檢驗(yàn)保護(hù)UPDATE delete from Employees where Name =' Bob' and Age = 43 ;ifiiROWCOUNT O 1 raiserrorC CONCURRENCY ERROR' ,1,16);作為涉及樂(lè)觀一致性和模式變更的具體示例,假設(shè)用戶A希望將“Employees”表中的“Age,,列的名稱變更為“EmployeeAge”。用戶B希望將“Age,,列的類型從“nvarchar” 變更為“int”。在編輯器中,用戶B變更“Age”列的類型,但是沒(méi)有立即敲擊“保存”。相反, 用戶B在HR數(shù)據(jù)庫(kù)中做了一些相關(guān)的工作。為作出這一類型變更,編輯器查詢SQL模式表。 作為緩存變更的一部分(“保存”之前),編輯器注意到它最后觀察到了“Employees”表中的類型“nvarchar,,的“AgVH同時(shí),用戶A將“Age,,列重命名為“EmpIoyeeAge,,,并將此變更保存到數(shù)據(jù)庫(kù)。用戶B判斷到時(shí)間了,并敲擊“&we”,意圖與其他HR數(shù)據(jù)庫(kù)工作一起保存“nvarchar”-〉“int”變更。SQL 事務(wù)失敗,帶有一致性錯(cuò)誤?!皀varchar" ->〃 int" 變更的SQL語(yǔ)句利用樂(lè)觀并發(fā)性檢驗(yàn)保護(hù)UPDATE。作為涉及樂(lè)觀一致性和應(yīng)用程序變更的具體示例,假設(shè)用戶A希望向應(yīng)用程序 122添加一個(gè)規(guī)則,說(shuō)“當(dāng)顯示Age值時(shí),以紅色呈現(xiàn)那些> 55的值”。用戶B從Employees 表中完全刪除了 Age列。通過(guò)編輯器212,用戶A編輯應(yīng)用程序描述以包括該新規(guī)則,并刷新應(yīng)用程序,看出該規(guī)則具有所需的效果。應(yīng)用程序描述被存儲(chǔ)在HR數(shù)據(jù)庫(kù)中。用戶還沒(méi)有敲擊“保存”。為運(yùn)行HR應(yīng)用程序,編輯器處理應(yīng)用程序描述。在這樣做時(shí),它注意到這一事實(shí)應(yīng)用程序描述要求對(duì)Employees表進(jìn)行SQL查詢。作為處理應(yīng)用程序描述中的新的與Age相關(guān)的規(guī)則的一部分,編輯器還注意這一事實(shí)該規(guī)則涉及Employees表中的Age 列。同時(shí),用戶A從Employees表中刪除Age列,并將此變更保存到數(shù)據(jù)庫(kù)。然后,用戶B 敲擊“保存”,意圖是保存修改的應(yīng)用程序描述,并對(duì)添加的Age值著色。SQL事務(wù)失敗,帶有一致性錯(cuò)誤。將更新應(yīng)用程序描述的SQL語(yǔ)句包括樂(lè)觀并發(fā)性保護(hù)。結(jié)論雖然具體實(shí)施例在此處被明確示出并描述為進(jìn)程、已配置的介質(zhì)、或系統(tǒng),但是可以理解,對(duì)一種類型的實(shí)施例的討論也一般性地延伸到其他實(shí)施例類型。例如,結(jié)合圖3對(duì)進(jìn)程的描述也幫助描述已配置的介質(zhì),并幫助描述類似于結(jié)合其他附圖所討論的那些的系統(tǒng)和產(chǎn)品的操作。對(duì)一個(gè)實(shí)施例的限制也不一定適用于另一個(gè)實(shí)施例。具體而言,進(jìn)程不一定僅限于在討論諸如已配置的存儲(chǔ)器之類的系統(tǒng)或產(chǎn)品時(shí)呈現(xiàn)的數(shù)據(jù)結(jié)構(gòu)和方案。不是圖中所示出的每一項(xiàng)都需要存在于每個(gè)實(shí)施例中。相反,實(shí)施例可以包含圖中未顯式地示出的項(xiàng)。雖然一些可能性在此處通過(guò)具體示例在文本和附圖中示出,但是各實(shí)施例可以偏離這些示例。例如,一示例的具體特征可以被省略、重命名、以不同的方式分組、重復(fù)、不同地以硬件和/或軟件實(shí)例化,或是在兩個(gè)或更多示例中出現(xiàn)的特征的混合。 在某些實(shí)施例中,在一個(gè)位置處示出的功能也可以在不同的位置處提供。通過(guò)附圖標(biāo)記參考了附圖。在附圖或文本中與給定附圖標(biāo)記相關(guān)聯(lián)的措詞中的任何顯而易見的不一致性應(yīng)該被理解為僅僅時(shí)拓寬該標(biāo)記所引用的內(nèi)容的范圍。如此處所使用的,諸如“一”和“該”之類的術(shù)語(yǔ)是包括所指出的項(xiàng)或步驟中的一個(gè)或多個(gè)。具體而言,在權(quán)利要求書中,對(duì)一個(gè)項(xiàng)的引用一般表示至少一個(gè)這樣的項(xiàng)存在, 并且對(duì)一個(gè)步驟的引用表示執(zhí)行該步驟的至少一個(gè)實(shí)例。標(biāo)題只是為了方便;有關(guān)給定主題的信息可以在其標(biāo)題指出該主題的部分外面找到。所提出的所有權(quán)利要求都是本說(shuō)明書的一部分。盡管在附圖中示出了并在上文描述了示例性實(shí)施例,但是,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō)顯而易見的是,在不偏離權(quán)利要求書中所闡述的原理和概念的情況下,可以進(jìn)行很多修改。盡管用結(jié)構(gòu)特征和/或過(guò)程動(dòng)作專用的語(yǔ)言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于權(quán)利要求書上面所描述的具體特征或動(dòng)作。不一定在給定定義或示例中標(biāo)識(shí)的每一個(gè)手段或方面都在每個(gè)實(shí)施例中存在或使用。相反,所描述的具體特征和動(dòng)作是作為供當(dāng)實(shí)現(xiàn)權(quán)利要求書時(shí)考慮的示例來(lái)公開的。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變應(yīng)在法律允許的最大可能的范圍內(nèi)被權(quán)利要求書的范圍所涵蓋。
權(quán)利要求
1.一種配置有數(shù)據(jù)以及指令的計(jì)算機(jī)可讀非瞬態(tài)存儲(chǔ)介質(zhì),所述指令當(dāng)由至少一個(gè)處理器執(zhí)行時(shí)使得所述處理器執(zhí)行一種用于在多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境中管理變更的過(guò)程,所述過(guò)程包括下列步驟收集(30 對(duì)所述多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境的建議的變更,之后提交那些變更中的任一個(gè);對(duì)于特定的建議的變更Y,標(biāo)識(shí)(304)由Y假定的至少一個(gè)前提條件I^reY,以及通過(guò)提交Y所引起的至少一個(gè)后置條件PostY ;對(duì)于特定的建議的變更X,標(biāo)識(shí)(304)由X假定的至少一個(gè)前提條件ft~eX,以及通過(guò)提交X所引起的至少一個(gè)后置條件PostX ;通過(guò)執(zhí)行下列各項(xiàng)中的至少一項(xiàng)分析(310)變更X和變更Y的依賴關(guān)系 判斷PostY使I^reX變得不可用, 判斷PostX允許PreY ; 然后,對(duì)所述建議的變更進(jìn)行排序(314),以形成已排序的變更列表,在所述列表中按照提交次序,變更X在變更Y前面。
2.如權(quán)利要求1所述的已配置的介質(zhì),其特征在于,所述排序步驟執(zhí)行下列各項(xiàng)中的至少一項(xiàng)在所述已排序的變更列表中,把將創(chuàng)建數(shù)據(jù)庫(kù)元素的建議的模式變更置于(316)將值寫入該數(shù)據(jù)庫(kù)元素中的建議的數(shù)據(jù)變更之前;在所述已排序的變更列表中,把將引用數(shù)據(jù)庫(kù)元素值的建議的變更置于(316)將移除該數(shù)據(jù)庫(kù)元素的建議的變更之前。
3.如權(quán)利要求1所述的已配置的介質(zhì),其特征在于,所述過(guò)程還包括在單個(gè)事務(wù)中提交(320)變更X和變更Y兩者。
4.如權(quán)利要求1所述的已配置的介質(zhì),其特征在于,所述過(guò)程還包括獲取(324)對(duì)所述多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境的一部分的獨(dú)占訪問(wèn),所述部分具有當(dāng)獲取所述獨(dú)占訪問(wèn)時(shí)的當(dāng)前狀態(tài);以及對(duì)于每一個(gè)建議的變更,評(píng)估(326)該建議的變更的所有前提條件是否都存在于所述當(dāng)前狀態(tài)或者將由所述已排序的變更列表中的該建議的變更前面的建議的變更所引起。
5.如權(quán)利要求1所述的已配置的介質(zhì),其特征在于,所述過(guò)程還包括基于至少兩個(gè)已分析的依賴關(guān)系,按提交次序?qū)χ辽偃齻€(gè)建議的變更進(jìn)行排序(314), 所述建議的變更是下列變更類別中的至少兩個(gè)數(shù)據(jù)變更、模式變更、應(yīng)用程序變更;驗(yàn)證(336)每一個(gè)建議的變更的前提條件將在所述建議的變更的提交時(shí)間被滿足;以及在單個(gè)事務(wù)中,按提交次序提交(320)所述建議的變更,在所述單個(gè)事務(wù)中,將與所述建議的變更沖突的任何變更都被禁止。
6.如權(quán)利要求1所述的已配置的介質(zhì),其特征在于,所述收集步驟收集,并且提交步驟提交下列變更類別中的每一個(gè)類別的至少一個(gè)建議的變更O04)數(shù)據(jù)(130)變更、模式 (128)變更、應(yīng)用程序(12 變更;并且其中,所述過(guò)程還包括從所述提交步驟獲取(322) 至少一個(gè)返回值。
7.一種用于在多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境中做出變更的過(guò)程,所述過(guò)程包括所述環(huán)境的特定用戶的以下步驟觀察(338)所述多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境的值,并向編輯器遞交對(duì)所述多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境的至少某些觀察值的多個(gè)建議的變更,所述建議的變更是下列變更類別中的至少兩個(gè)數(shù)據(jù)變更、模式變更、應(yīng)用程序變更;以及命令(346)所述編輯器將所有建議的變更一起提交,而不是命令所述編輯器提交所述變更中的一個(gè),接收對(duì)該命令的響應(yīng),然后命令所述編輯器提交所述變更中的另一個(gè),接收對(duì)該命令的響應(yīng),并繼續(xù)逐個(gè)地提交所述變更。
8.如權(quán)利要求7所述的過(guò)程,其特征在于,所述命令步驟命令所述編輯器提交下列變更類別中的每一個(gè)的至少一個(gè)建議的變更O04)數(shù)據(jù)(130)變更、模式(128)變更、應(yīng)用程序(12 變更。
9.如權(quán)利要求7所述的過(guò)程,其特征在于,所述過(guò)程還包括下列各項(xiàng)中的至少一項(xiàng)接收(350)對(duì)所述命令步驟的響應(yīng),所述響應(yīng)指出變更數(shù)據(jù)值的建議的變更與(a)移除包含所述數(shù)據(jù)值的數(shù)據(jù)元素并且(b)在所述觀察和遞交步驟之后且在所述命令步驟之前作出的變更不一致;接收(350)對(duì)所述命令步驟的響應(yīng),所述響應(yīng)指出變更數(shù)據(jù)值的建議的變更與(a)移除包含所述數(shù)據(jù)值的數(shù)據(jù)庫(kù)元素并且(b)在所述觀察和遞交步驟之后且在所述命令步驟之前作出的變更不一致;接收(350)對(duì)所述命令步驟的響應(yīng),所述響音指出變更數(shù)據(jù)元素類型的建議的變更與 (a)重命名所述數(shù)據(jù)元素并且(b)在所述觀察和遞交步驟之后且在所述命令步驟之前作出的變更不一致;接收(350)對(duì)所述命令步驟的響應(yīng),所述響應(yīng)指出變更數(shù)據(jù)庫(kù)元素類型的建議的變更與(a)重命名所述數(shù)據(jù)庫(kù)元素并且(b)在所述觀察和遞交步驟之后且在所述命令步驟之前作出的變更不一致;接收(350)對(duì)所述命令步驟的響應(yīng),所述響應(yīng)指出變更數(shù)據(jù)元素的應(yīng)用程序顯示規(guī)則的建議的變更與(a)移除數(shù)據(jù)庫(kù)元素并且(b)在所述觀察和遞交步驟之后并且在所述命令步驟之前作出的變更不一致;接收(350)對(duì)所述命令步驟的響應(yīng),所述響應(yīng)指出變更數(shù)據(jù)元素的應(yīng)用程序顯示規(guī)則的建議的變更與(a)重命名數(shù)據(jù)庫(kù)元素并且(b)在所述觀察和遞交步驟之后并且在所述命令步驟之前作出的變更不一致;
10.如權(quán)利要求7所述的過(guò)程,其特征在于,還包括指定(352)屬于下列類別中的一個(gè)或多個(gè)的項(xiàng)之間的至少一個(gè)關(guān)系數(shù)據(jù)值、模式值、應(yīng)用程序值;以及在所述遞交步驟期間提供(354)所述關(guān)系。
11.一種計(jì)算機(jī)系統(tǒng),包括至少一個(gè)邏輯處理器(110);可操作地與所述邏輯處理器進(jìn)行通信的存儲(chǔ)器(112),所述存儲(chǔ)器位于至少一個(gè)機(jī)器中;差異管理器010),所述差異管理器駐留在所述存儲(chǔ)器中,并且可操作以從用戶姿勢(shì)產(chǎn)生差異圖(208);用戶專用變更緩存002),所述用戶專用變更緩存駐留在所述存儲(chǔ)器中,并且可操作以為特定用戶維護(hù)差異的集合,并為所述特定用戶產(chǎn)生多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境的視圖 006),所述視圖(206)反映零個(gè)或多個(gè)差異圖如果被提交則對(duì)所述環(huán)境將具有的影響;以及查詢更新引擎018),所述查詢更新引擎駐留在所述存儲(chǔ)器中,并且可操作以(a)訪問(wèn)下列類別中的每一個(gè)類別的值的共享多用戶存儲(chǔ)數(shù)據(jù)值、模式值、應(yīng)用程序值,(b)將這些類別中的每一個(gè)類別的值變更遞交到所述共享多用戶存儲(chǔ),以及(c)檢測(cè)將這些類別中的變更提交到所述共享多用戶存儲(chǔ)的嘗試之后的結(jié)果。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括駐留在所述存儲(chǔ)器中的值變更004),所述值變更包括由下列各項(xiàng)中的至少一個(gè)所提供的上下文中的SQL語(yǔ)句 (236)樂(lè)觀并發(fā)性檢驗(yàn)、對(duì)與先前狀態(tài)的一致性的檢驗(yàn)。
13.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述查詢更新引擎可操作以基于建議的值變更之間的依賴關(guān)系(216)對(duì)建議的值變更進(jìn)行排序,并且所述系統(tǒng)還包括值變更列表 014),所述值變更列表駐留在所述存儲(chǔ)器中,并包含按適于在單個(gè)事務(wù)下提交的提交次序列出的每一個(gè)類別的建議的值變更。
14.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述系統(tǒng)可操作以跟蹤在多用戶數(shù)據(jù)庫(kù)應(yīng)用程序的操作期間哪些值(222,224,226)被所述用戶查詢,并且所述查詢更新引擎可操作以產(chǎn)生值變更,所述值變更是條件性的,在于只有在驗(yàn)證由所述用戶查詢的值沒(méi)有被變更之后它們才請(qǐng)求提交。
15.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括單個(gè)事務(wù)034),所述單個(gè)事務(wù)包含對(duì)于數(shù)據(jù)庫(kù)的值的值變更、對(duì)于所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)模式的值的值變更、以及用于訪問(wèn)所述數(shù)據(jù)庫(kù)的應(yīng)用程序的應(yīng)用程序描述的值變更,這些值變更中的每一個(gè)都以同一個(gè)用戶作為作者。
全文摘要
在多用戶數(shù)據(jù)庫(kù)應(yīng)用程序環(huán)境中管理變更。收集建議的變更,包括對(duì)數(shù)據(jù)、模式和/或應(yīng)用程序描述的變更。用戶可以指定屬于這些類別中的一個(gè)或多個(gè)的項(xiàng)之間的外鍵關(guān)系。產(chǎn)生視圖,該視圖示出了建議的變更如果被成功地提交則將對(duì)該環(huán)境的影響。根據(jù)其依賴關(guān)系,對(duì)用戶的建議的變更進(jìn)行排序,并在單個(gè)事務(wù)中一起遞交以供提交,服從樂(lè)觀并發(fā)性和一致性檢驗(yàn)。例如,對(duì)一個(gè)數(shù)據(jù)值的建議的變更可能與移除包含該數(shù)據(jù)值的數(shù)據(jù)元素的變更不一致。除指出提交是否成功之外,提交操作還可以返回標(biāo)識(shí)符及其他返回值。
文檔編號(hào)G06F17/30GK102279873SQ20111016812
公開日2011年12月14日 申請(qǐng)日期2011年6月10日 優(yōu)先權(quán)日2010年6月11日
發(fā)明者B·奧蘭尼科, B·洛夫林, H·阿罕默德, N·阿維特爾, P·F·禮薩伊, Q·布拉德利, S·D·肯特, S·J·米利特, W·E·艾特墾 申請(qǐng)人:微軟公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
定南县| 奈曼旗| 庆元县| 大田县| 扬中市| 安乡县| 兴和县| 家居| 新竹市| 克拉玛依市| 隆子县| 鹤岗市| 平泉县| 邯郸县| 河北区| 开阳县| 邵东县| 朝阳县| 宁陕县| 津市市| 色达县| 九江县| 萨迦县| 马尔康县| 辽中县| 夏津县| 文昌市| 临夏县| 博客| 石棉县| 阜城县| 隆昌县| 西华县| 辽源市| 古交市| 阜新| 新兴县| 双城市| 介休市| 九寨沟县| 定远县|