專利名稱:數據變更通告的制作方法
數據變更通告背景在許多計算機系統中,用于計算機應用程序并通過其存儲和檢索的信息由一 個或多個中央存儲系統處理。例如,在個人計算機中普遍使用的一種存儲系統是基 于文件文件夾和目錄的系統,通常被稱為"文件系統"。這些文件系統將多個文件 組織入各層次,以創建存儲介質的物理組織的抽象概念,用于存儲各文件。 一般而 言,這一成為層次的組織在操作系統級發生。存儲的文件通常包括具體表現為由文 件系統維持的指定文件的該文件層次本身("目錄")。該目錄又維護與該目錄內 所有其他文件相對應的條目列表以及這些文件在該層次內的節點位置(在此被稱為 文件夾)。用于中央存儲的文件系統的使用具有各種限制。這些限制可以通過使用作為 中央存儲系統基礎的關系數據庫技術來克服。在使用存儲在存儲系統中數據的應用程序中,該應用程序的某些活動是以存 儲在存儲系統內數據的變更為基礎的。基于該存儲內各獨立對象或對象群的變更, 應用程序可能希望執行相關的商業邏輯或顯示邏輯。例如,電子郵件程序可能想要 知道新電子郵件消息何時到達。在某些系統中,電子郵件消息到達并被存儲在存儲 系統上。當新消息到達時,電子郵件程序隨后就能使用新電子郵件消息己到達的事 實或者使用該電子郵件消息的上下文來執行任何內部處理。例如,某些電子郵件程 序包含用于處理消息的規則。這些規則的應用程序在某些情況下由新消息的到達來 觸發。此外還存在基于存儲在存儲系統內變更的用戶界面的變更。例如, 一有新消 息到達,就向用戶程序呈現指示新消息已到達的通告信號。可以刷新消息列表以包 括該新消息。應用程序感興趣的這類數據變更包括對象創建、對象刪除、以及包括移動對 象或對象安全性變更的對象更新。基礎關系數據庫可以不提供能被用來提供這些更 新的觸發。某些組件要求對存儲在關系數據庫中各對象變更的持續監控。例如,反病毒 程序要求某些類型的對象的變更(包括這些對象的添加)觸發病毒掃描。類似地,對各實體的全文本索引在持續性基礎上完成。如果應用程序對基礎關系數據庫的連 接中斷,通告就會丟失,并且連接一恢復,就可能要求多得多的工作來恢復各操作。 對變更的監控(和響應)的無縫恢復將能夠節省連接恢復時的處理和時間,該變更 包括在應用程序對關系數據庫的連接中斷期間出現的變更。鑒于前述,需要一種能夠在基于數據庫的存儲系統中使用并提供良好性能和 可量測性的變更通告程序。本發明滿足這一需要。概述為了提供變更通告,應用程序向變更通告系統注冊并允許應用程序經由預定(subscription)獲取關于指定變更的信息。變更通告系統監控基礎關系數據庫內數 據的變更并在隊列中存儲與接收到的請求相關的變更信息。應用程序能夠從隊列中 訪問相關變更以確定響應于該應用程序的請求出現了什么變更。根據一個實施例,創建了兩類監視程序(watcher)。如果應用程序請求一非 持久監視程序,則當該應用程序丟失或終止與變更通告系統的連接時,隊列內有關 該應用程序的剩余信息就被移除并且不再會有對響應于該應用程序請求的變更的 跟蹤出現。然而,如果請求持久監視程序,則即使應用程序終止或丟失連接,隊列 內的剩余信息仍被保留,并且與來自該應用程序的請求相關的任何附加變更都被存 儲在該隊列中。當應用程序重新連接時,斷開連接期間的變更信息在隊列中可用, 像在重新連接期間和之后的變更一樣。以此方式,應用程序可以在各種對象范圍(在對象的獨立項目級別、文件 夾內容級別或者完整的層次級別)處、并且針對各種事件類型(創建、更新、 刪除操作)、對象類型(文檔、消息等)和對象種類(項目、擴展、鏈接等) 來訪問事件通告預定選項的豐富集合。此外,事件通告可以在會話終止(自愿或 者非自愿)期間被保留,從而可能實現監控的無縫恢復。通過下面對本發明的以及附圖的詳細說明,將會明了本發明的其他特征和優點。
當結合所附的附圖進行閱讀時,可以更好地理解上面的摘要以及下面對本發 明的詳細說明。出于說明本發明的目的,在附圖中示出了本發明的各個方面的示例 性實施例;然而,本發明不限于所公開的具體方法和手段。附圖中圖1是表示了在其中可以結合本發明各方面的計算機系統的框圖; 圖2是示出了分成三個組件群的計算機系統的框圖;硬件組件、硬件/軟件接口系統組件以及應用程序組件;圖3是根據本發明一個實施例的變更通告系統采取的步驟的流程圖;圖4是根據本發明一個實施例的變更通告系統和特定數據流的框圖;以及圖5是根據一個實施例由變更通告系統400跟蹤客戶410的變更所采取的步驟的流程圖。詳細說明 示例性計算環境本發明的許多實施例可在計算機上執行。圖1及以下討論旨在提供對適合于 在其中實現本發明的計算環境的簡要概括描述。雖然不是必需,本發明的諸方面能以諸如由客戶工作站或服務器的計算機上執行的程序模塊的計算機可執行指令的 一般上下文中描述。 一般而言,程序模塊包括例程、程序、對象、組件、數據結構 等,它們執行特定任務或實現特定抽象數據類型。此外,本發明可用其它計算機系 統配置實現,包括手持設備、多處理器系統、基于微處理器的系統或可編程消費者 電子設備、網絡PC、小型機、大型機等。本發明還能在分布式計算環境中實現, 其中任務由通過通信網絡鏈接的遠程處理設備完成。在分布式計算環境中,程序模 塊可被置于本地或遠程的存儲器設備中。如圖1所示,示例性通用計算系統包括傳統的個人計算機20等,它包括處理 單元21、系統存儲器22和將包括系統存儲器的各種系統組件耦合到處理單元21 的系統總線23。系統總線23可以是幾種類型的總線結構中的任何一種,包括存儲 器總線或存儲控制器、外圍總線、以及使用各種總線體系結構中的任一種的局部總 線。系統存儲器包括只讀存儲器(ROM) 24和隨機存取存儲器(RAM) 25。基本 輸入/輸出系統26 (BIOS)包含有助于諸如啟動時在個人計算機20中元件之間傳 遞信息的基本例程,它存儲在ROM 24中。個人計算機20也可包括用于對硬盤(未 示出)進行讀寫的硬盤驅動器27、用于對可移動磁盤28進行讀寫的磁盤驅動器29 以及用于對可移動光盤31,如CD-ROM或其它光介質進行讀寫的光盤驅動器30。 硬盤驅動器27、磁盤驅動器28以及光盤驅動器30分別通過硬盤驅動器接口 23、 磁盤驅動器接口 32和光盤驅動器接口 33連接至系統總線23。驅動器及其相關的 計算機可讀介質為個人計算機20提供了計算機可讀指令、數據結構、程序模塊和其它數據的非易失性存儲。雖然這里描述的示例性環境采用硬盤、可移動磁盤29和可移動光盤31,本領域技術人員理解,在示例性操作環境中也能使用可存儲能由計算機訪問的數據的其它類型計算機可讀介質,如盒式磁帶、閃存卡、數字視頻盤、Bernoulli盒式磁帶、隨機存取存儲器(RAM)、只讀存儲器(ROM)等。類 似地,示例環境還可包括許多類型的監控設備,如熱傳感器和安全或火警系統,及 其它信息來源。若干程序模塊能存儲在硬盤、磁盤29、光盤31、 ROM24或RAM25中,包括 操作系統35、 一個或多個應用程序36、其它程序模塊37和程序數據38。用戶能 通過如鍵盤40和定位設備42等輸入設備將命令和信息輸入到個人計算機20。其 它輸入設備(未示出)可包括話筒、操縱桿、游戲墊、圓盤式衛星天線、掃描儀等。 這里和其它輸入設備常通過耦合到系統總線的串行接口 46連接到處理單元21,但 也可通過其它接口連接,如并行口、游戲口或通用串行總線(USB)。監視器47 或其它類型的顯示設備也通過如視頻適配器48的接口連接到系統總線23。除監視 器47以外,個人計算機通常包括如揚聲器和打印機等其它外圍輸出設備(未示出)。 圖1的示例系統還包括主適配器55、小型計算機系統接口 (SCSI)總線56和連接 到SCSI總線的外部存儲設備62。個人計算機20可使用到如遠程計算機49的一個或多個遠程計算機的邏輯連 接在網絡環境中操作。遠程計算機49可以是另一臺個人計算機、服務器、路由器、 網絡PC、對等設備或其它公共網絡節點,并通常包括以上對個人計算機20描述的 許多或所有元件,雖然在圖1中只示出存儲器存儲設備50。圖1中畫出的邏輯連 接包括局域網(LAN) 51和廣域網(WAN) 52。那樣的網絡環境常見于辦公室、 企業范圍計算機網絡、內聯網和因特網。當在LAN網絡環境中使用時,個人計算機20通過網絡接口或適配器53連接 至局域網51。當在WAN網絡環境中使用時,個人計算機20通常包括調制解調器 54,或用于通過廣域網52與,如因特網建立通信的其它裝置。內置或外接的調制 解調器54通過串行端口接口46連接系統總線23。在網絡環境中,相對個人計算 機20畫出的程序模塊或其部分可存儲在遠程存儲器存儲設備中。將會理解所示 的這些網絡連接起示例性的作用,也可以使用在計算機之間建立通信鏈路的其他手 段。如圖2的框圖所示,計算機系統200可以被粗略地分為三個組件群硬件組 件202、硬件/軟件接口組件204、以及應用程序組件206 (在本文的某些上下文中也被稱為"用戶組件"或"軟件組件")。在計算機系統200的各個實施例中,并且參考回圖1,硬件組件202尤其可以 包括中央處理單元(CPU) 21、存儲器(ROM24和RAM25兩者)、基本輸入輸 出系統(BIOS) 26、以及諸如鍵盤40、鼠標42、監視器47和/或打印機(未示出) 的各種輸入/輸出(I/O)設備。硬件組件202包括計算機系統200的基本物理基礎 結構。應用程序組件206包括各種軟件程序,包括但不限于編譯器、數據庫系統、 字處理程序、商用程序、視頻游戲等。應用程序提供各種途徑,通過這些途徑,就 能夠利用計算機資源來解決問題、提供解決方案并為各用戶(機器、其他計算機系 統和/或終端用戶)處理數據。硬件/軟件接口組件204包括(并且在某些實施例中由以下各項唯一地組成) 操作系統,而操作系統本身在大多數情況下包括外殼和內核。"操作系統"(OS) 是用作應用程序和計算機硬件之間中介物的指定程序。硬件/軟件接口組件204還 可以包括虛擬機監視器(VMM)、公共語言運行時庫(CLR)或其功能等效物、 Java虛擬機(JVM)或其功能等效物、或者在計算機系統內用以代替或補充操作系 統的其他這些軟件組件。硬件/軟件接口系統的目的在于提供一個在其中用戶能夠 執行應用程序的環境。任何硬件/軟件接口系統的目標在于使得計算機系統易于使 用,并能以高效的方式利用計算機硬件。硬件/軟件接口系統通常在啟動時被裝入計算機系統,并在其后管理計算機系 統內的所有應用程序。應用程序通過經由應用程序接口 (API)請求服務來與硬件 /軟件接口系統交互。某些應用程序能夠讓終端用戶經由諸如命令語言或用戶圖形 界面(GUI)的用戶接口來與硬件/軟件接口系統交互。硬件/軟件接口系統傳統上執行有關應用程序的各種服務。在多個程序同時運 行的多任務硬件/軟件接口系統中,硬件/軟件接口系統確定各應用程序應該以何種 次序運行以及確定在作為輪換切換至另一應用程序之前應該允許每個應用程序允 許多長時間。硬件/軟件接口系統還管理多個應用程序之間內部存儲器的共享,并 且處理來自諸如硬盤、打印機和撥號端口之類的附連硬件設備的輸入以及對其的輸 出。硬件/軟件接口系統還將有關操作的狀態和可能已發生的任何錯誤的消息發送 給每個應用程序(并且在特定情況下,發送給終端用戶)。硬件/軟件接口系統還 卸載批作業(例如,打印)的管理,以使得原始應用程序免除管理劃分程序,使得它同時在多個處理器上運行。硬件/軟件接口系統外殼(這里簡稱"外殼")是到硬件/軟件接口系統的交互 式最終用戶接口。(外殼也稱為"命令解釋器",或在一個操作系統中稱為"操作 系統外殼")。外殼是可直接由應用程序和/或最終用戶訪問的硬件/軟件接口系統 的外層。與外殼相反,內核是直接與硬件組件交互的硬件/軟件接口系統的最內層。雖然可構想本發明的許多實施例尤其適用于計算機化的系統,然而在本說明 中不意味著將本發明限于那些實施例。相反,這里使用的術語"計算機系統"旨在 包括能存儲和處理信息和/或能使用存儲的信息控制設備本身的行為或執行的任何 和所有設備,而不管那些設備本質上是否為電子的、機械的、邏輯的、或虛擬的。數據變更通告為了允許應用程序能夠至少部分基于關系數據庫來監控在存儲系統中存儲的 獨立項目、文件夾或者項目域內的變更,建立一變更通告框架。可以對特定類型的 變更事件(創建、更新、刪除、更新及安全設置等)進行監控。根據一個實施例,與期望注意一個或多個實體、文件夾或域內變更的應用程 序(或其他實體)交互的變更通告系統將進行如圖3所示的動作。圖3是由變更通告系統根據本發明一個實施例采取的步驟的流程圖。如圖3所示,變更通告系統的 第一步驟300是接收關于做出請求的實體的標識信息。在一個實施例中,這為該變 更通告系統的通告客戶組成了請求。變更通告系統在一個實施例中被集成到包含關 系數據庫存儲的文件系統中。在替換實施例中,變更通告系統是與關系數據庫存儲 通信(直接或間接)的層或實體。通告客戶的注冊允許請求實體從變更通告系統獲取客戶句柄。這允許該應用 程序它與變更通告系統的事務處理中用唯一的標識符。在某些實施例中,在客戶注 冊期間存儲安全信息,從而允許變更通告系統確定對可經由變更通告與該應用程序 共享的信息有何限制(如果有的話)。在一個實施例中,如果該應用程序對一項目 有讀訪問權限,則僅遞送有關該項目的變更通告。在通告客戶已被注冊之后,如步驟310所示,變更通告系統將提供通告的有 關的變更信息注冊。在一個實施例中,這通過監視程序預定的注冊來實現。通告客 戶從步驟300提供可用于注冊預定的句柄。每個預定都在文件系統中指定為其請求 通告的一個或多個特定元素。例如,在一個基于關系數據庫的文件系統的示例中, 能被監視的元素可以包括實體、文件夾和域。元素的說明可以是直接的(例如,指 定要監視的具體域)或者是其他方式的(例如,指定其名稱匹配某一常規表達式的所有文件夾)。另外,每個預定指定應被監控的數據變更事件的種類。例如,預定 可以請求有關文件系統內創建、刪除或元素變更的通告。在一個實施例中,可以呈 現用于指定元素的默認值以及數據變更事件的類型。這樣,例如在這一實施例中, 如果沒有指定元素(由直接指定引用或其他方式)也沒有指定變更類型,則考慮對 全部元素內所有可能變更的通告請求。監視程序預定可以在任何時刻注冊。在一個或多個監視程序預定己注冊之后, 如步驟320所示,將變更通告提供給請求實體。在某些實施例中,變更通告被同步 提供。例如,在變更通告系統己經注冊了所期待的實體信息和變更信息之后,可由請求實體調用"WaitForChanges (等待變更)"方法。這一方法將等待變更——它 在一得到變更通告系統通告時就返回變更通告。在其他實施例中,變更通告被異步 提供。在異步實施例中,請求實體能夠在一段時間間隔經過之后訪問其變更通告, 并且該請求實體接收來自該間隔期間的所有變更通告。這樣,可以調用 "ReadOldNotifications (讀取舊通告)"方法來確定是否有關于該請求實體的任何 信息未決,并且返回任何未決通告。在一個實施例中,呈現了一種組合了 WaitForChanges和ReadOldNotifications功能性的方法,在該方法中,如果有任何 未決通告存在,則在調用未決通告時立即返回,而如果沒有,則在變更由變更通告 系統通告時返回。在一個實施例中,變更通告可從變更通告系統經由通告客戶提供。在另一實 施例中,應用程序發信號表明它準備好通過上述調用變更通告系統的方法來接收這 一通告。該通告作為相關變更的集合返回。在一個實施例中,變更作為在變更隊列 上執行的等待查詢的結果返回。等待是僅在找到匹配該查詢的數據時才返回的一特 定類型的查詢(找出,例如在數據庫系統中)。隊列可以包括若干監視程序的變更, 然而該等待査詢(僅在找到匹配該查詢的數據時返回)被構造為僅接收作為有關該 客戶的已注冊監視程序預定的響應的變更。可以注冊來自單個客戶的任何數量的監視程序預定。對于客戶注冊新的監視 程序預定并沒有限制,可以是只在創建稍后或者是只在通告被請求或接收之前。在 上述實施例中,與任何已注冊預定相關的所有通告在單個集合內被返回給該監視程 序。在其它的實施例中,可以為每個監視程序預定返回分開的響應。在其它一些實 施例中,沒有注冊通告客戶,而是注冊了單個預定客戶,包含并具體化為該通告客 戶和一個監視程序預定。根據本發明的一個實施例,監視程序在其與變更通告系統的連接終止時終止。此時或在往后清除期間的某些時刻,隊列內有關該已終止監視程序的任何通告被刪 除,并且響應于該監視程序預定的通告不再排隊。這類監視程序叫做非持久監視程 序。根據本發明的其它實施例,還提供了被稱為持久監視程序的一類監視程序。持久監視程序客戶可以持續多個會話。這就使得創建持久監視程序客戶的應 用程序能夠確保它們不錯過它們已為其注冊的任何變更。當創建該持久監視程序客 戶的會話結束時,不從隊列中刪除有關該客戶的變更通告。相反地,它們被保留。 實際上,隊列上該持久監視程序的所有通告都被保留直到該持久監視程序客戶請求 將其刪除。當創建該持久監視程序客戶的應用程序在終止之后重新連接時,隊列將 包含該客戶在終止時已位于隊列上但尚未請求刪除的并與監視程序預定相關的任 何通告,以及在終止之后放置在該隊列上的任何相關通告。應用程序隨后創建一新 客戶并讀取這些通告(并且在讀取它們之后,能夠請求將其刪除以節省隊列上的空 間)。因為持久監視程序客戶的通告直到持久監視程序客戶要求時才被移除,所以 就增加了該應用能接收所有相關通告的把握。例如,如果通告被發送給運行持久監 視程序客戶的應用程序但是沒被收到(例如,因為存在連接的意外終止),隨后該 應用程序將不會請求將其刪除,并且當連接重新建立時,這些通告將仍然在隊列中 對該持久監視程序可用。在一個實施例中,持久監視程序可以請求在隊列內及兩個 給定時刻(由時間戳、計數器點擊或其他方式引用)之間出現的變更有關的任何變 更通告。根據本發明的各實施例,可以提供持久監視程序、非持久監視程序、或其兩者。圖4是根據本發明一個實施例的變更通告系統和特定數據流的框圖。如圖4 所示,變更通告系統400經由客戶410與應用交互。這些客戶410是注冊監視程序 客戶的應用程序和變更通告系統400的監視程序預定的應用程序。注冊事務未在圖 4中示出。有關監視程序預定的信息(以及有關監視程序預定的關聯客戶410的身份) 被存儲在預定表420內。在一個實施例中,存儲有兩個表——客戶預定表和監視程 序預定表。客戶預定表存儲所有的客戶注冊。對于持久監視程序客戶,保持在客戶 預定表內的信息直到該持久監視程序客戶請求將其移除。對于非持久監視程序客 戶, 一旦關閉與該客戶相關聯的連接,就移除該客戶數據。監視程序預定表保持有 關已注冊監視程序的信息。預定表數據可以被圖式化并存儲為被跟蹤變更的關系數據庫內的數據,或如圖4所示,也可被分開存儲。
通告分派程序430是變更通告系統400的核心。在一個實施例中,通告分派 程序430是如預定表420所指示對關系數據庫(實體表440)執行查詢并在通告隊 列460中存儲變更通告的背景線程。實體表440可由諸如發布程序450之類的外部 實體變更。這些數據通告都對實體表440 (該關系數據庫基礎存儲系統)發生。輸 入實體表被示出作為變更通告系統400的一部分,但是也可與其分開。
在一個實施例中,通告分派程序通過對來自預定表420和實體表440的數據 執行聯結操作來找出實體表440內的各自的變更信息。在某些實施例中,部分客戶 410可能未被允許查看實體表440內的所有數據,并且在這些實施例中,有關客戶 410允許訪問的變更的變更通告僅被存儲在通告隊列460上。
在一個實施例中,通告隊列460使用關系數據庫表被實現,并且客戶410使 用等待査詢以確定是否已將響應于監視程序預定的變更通告放置入通告隊列460。 隊列條目包括用以標識變更通告所針對客戶410的客戶標識符,以及時間戳。因為 多個變更通告可被立刻遞送(例如,在重新連接的持久監視程序的情況下),所以 該時間戳允許客戶410知道各變更以何次序出現。雖然通告隊列460以在其中客戶 410接收有關變更通告的信息的方式呈現,但是可以考慮客戶410從通告分派程序 430接收變更通告的所有方法。通常,在某些實施例中,系統由針對變更請求信息 (預定表420)的存儲、確定是否己做出相關變更的通告分派程序430、以及將通 告傳遞給客戶的通告程序組成。
服務代理程序470確定非持久監視程序客戶410是否己斷開連接,并且如果 是,則清零屬于該非持久監視程序客戶410的變更通告隊列。服務代理程序470 還管理其他客戶狀態信息,諸如預定表420內的信息,以保持預定表420最新。另 外,在其中支持持久監視程序的一個實施例中,服務代理程序470確定監視程序客 戶410是否已要求移除變更通告或終止,并且為這些請求的每一個在預定表420 和通告隊列460上執行清除操作。
圖5是由變更通告系統400根據一個實施例跟蹤客戶410的變更所采取的步 驟的流程圖。如圖5所示,在第一步驟500,向關系數據庫査詢相關數據修改。在 一個實施例中,該步驟500僅在關系數據庫已發生變更時執行。
在第二步驟510,將相關數據修改提供給變更通告系統的客戶。通告包括有關 發生的變更的信息,例如正被監視的項目到底變更了什么——是該項目本身、該項 目的某些成分、或者某些關聯項目。此外,通告包括有關觸發該通告的事件類型的信息。關于該項目的任何數據或元數據的變更可以是該變更的起源。
在某些實施例中,框架經由作為應用程序編程接口一部分的公布的方法為應 用程序提供工具。提供的工具包括
*注冊——應用程序能夠注冊通告客戶。以此方式,可以經由單個應用程序 指定的客戶句柄來處理有關一應用的獨立的通告預定。
皿——己注冊的通告客戶能夠注冊監視程序預定,以指定要被監視的數 據變更事件(例如,有關一實體、文件夾、或域的變更事件)。通告客戶可以注冊 任何數量的這些監視程序預定。(在其它實施例中,沒有注冊是必需的,并且預定 直接由該應用程序獲取。)
未決變更的枚舉~~所有未決數據變更都在注冊之后或重啟期間為預定的 監視程序枚舉。
通告的生成~一生成有關預定已被注冊的數據變更事件的通告。
通告的排隊~~通告被排入通告隊列以響應預定的監視程序。
通告的供應~一來自通告隊列的相關通告被提供給預定的監視程序。
終止提供一種方法來終止獨立的監視程序或終止一通告客戶。
用于非持久監視程序的容錯通告的清除。
刪除監視程序和刪除客戶^這有關監視程序如何指示其完成并從變更通 告系統中移除其信息。可以是刪除獨立監視程序預定,或是刪除任何能被請求的客 戶相關信息。雖然這些既可以為持久監視程序也可以為非持久監視程序實現,但是 在持久監視程序的實施例中,持久監視程序客戶必須使用這些,或者該變更將繼續 為這些客戶排隊。
結論
如之前所示,本發明針對用于組織、搜索以及共享數據的存儲平臺。本發明 的存儲平臺擴展并且擴大了現有文件系統和數據庫系統之外的數據存儲的概念,并 且被設計為用于所有類型的數據的存儲,包括結構化的、非結構化的、或者半結構
化的數據例如關系(表列)數據、XML,以及一種被稱作項目的新形式的數據。
通過其共同存儲基礎和圖式化的數據,本發明的存儲平臺允許用于客戶、知識工人 以及企業的更有效的應用程序開發。它提供了豐富的并且可擴展的應用程序編程接 口,所述接口不僅可以使用其數據模型中固有的性能,而且包含并擴展了現有文件 系統和數據庫訪問方法。可以理解,在不脫離其寬泛的發明概念的情況下,可以對以上所述的實施例進行的變更。因此,本發明并不限于所公開的特殊實施例,而是 旨在覆蓋由所附權利要求所規定的本發明的精神和范圍內的所有變更。
如以上所述很明顯,本發明的各種系統、方法、以及方面的所有或者一部分 可以以程序代碼(即,指令)的形式來體現。這種程序代碼可以被存儲在計算機可
讀介質上,例如磁的、電的或者光的存儲介質,在非限定情況下包括軟盤、CD-ROM、 CD-RW、 DVD-ROM、 DVD-RAM、磁帶、閃速存儲器、硬盤驅動器、或者其它機 器可讀存儲介質,其中當程序代碼被載入到機器例如計算機或服務器中并由機器執
行時,所述機器就變成用于實施本發明的裝置。本發明還可以以在一些傳輸介質上 被傳輸的程序代碼的形式來體現,在傳輸介質上例如在電線或者電纜上、通過光纖、 通過網絡,包括因特網或內部網,或者通過任何其它形式的傳輸,其中,當程序代 碼被接收并且被載入到機器例如計算機中并且由機器執行時,所述機器就變成用于 實施本發明的裝置。當在通用處理器上被實現時,所述程序代碼與處理器相結合, 以便提供類似于特定邏輯電路的操作的獨特裝置。
權利要求
1.一種用于向實體提供關于關系數據庫內指定類型數據變更的變更通告的方法,所述方法包括接收標識所述實體的實體信息;接收關于所述變更的指定類型的變更信息;以及將關于在所述關系數據庫內所述指定類型的變更的變更通告數據提供給所述實體。
2. 如權利要求1所述的方法,其特征在于,所述將變更通告數據提供給所述 實體的步驟包括在隊列中存儲所述變更通告數據。
3. 如權利要求2所述的方法,其特征在于,所述將變更通告數據提供給所述實體的步驟包括響應來自所述隊列的針對數據的請求。
4. 如權利要求3所述的方法,其特征在于,所述響應來自所述隊列的針對數據的請求的步驟包括響應在所述隊列上執行的等待査詢。
5. 如權利要求2所述的方法,其特征在于,所述響應來自所述隊列的針對數據的請求的步驟包括使用實體信息確定所述請求是否由所述實體發出。
6. 如權利要求1所述的方法,其特征在于,所述變更涉及所述關系數據庫內的指定項目,其中對所述關系數據庫內所述指定項目的訪問受安全需求所限,所述方法還包括確定所述實體履行所述安全需求。
7. 如權利要求2所述的方法,其特征在于,所述隊列包括附加的變更通告信 息項目,每個所述附加的變更通告信息項目對應于請求實體,所述方法還包括如果對所述實體的連接被終止,就刪除所述隊列內對應于所述實體的任何所 述附加的變更通告信息。
8. 如權利要求2所述的方法,其特征在于,所述隊列包括附加的變更通告信 息項目,每個所述附加的變更通告信息項目對應于請求實體,所述方法還包括確定對所述實體的連接被終止; 確定對所述實體的新連接存在;以及使用所述新連接提供對應于所述請求實體的所述附加的變更通告信息項目。
9. 一種用于向實體提供至少一個變更通告的系統,每個變更通告關于數據庫 內一變更,所述系統包括存儲關于所述實體的實體信息以及關于至少一個變更定義的變更信息的預定 表,所述變更定義則定義了對所述數據庫的一個或多個可能的變更;通告分派程序,所述通告分派程序用于連接至所述預定表,所述預定表用于 連接至所述數據庫,并且所述通告分派程序為所述變更定義所固有的的數據庫變更 來査詢所述數據庫并接收關于一相干變更的數據;以及用于連接至所述通告分派程序的通告程序,所述通告程序用于連接至所述實 體,所述通告程序提供關于所述相干變更的至少一個通告。
10. 如權利要求9所述的系統,其特征在于,所述通告程序包括 存儲關于所述相干變更的至少一個所述通告的至少一個的隊列。
11. 如權利要求IO所述的系統,其特征在于,所述隊列接收來自所述實體的 查詢并且其中所述關于所述相干變更的至少一個通告的供應是響應所述査詢的。
12. 如權利要求IO所述的系統,其特征在于,還包括服務代理程序,如果在所述通告程序和所述實體之間的所述操作性連接被終止,則所述服務代理程序從所述隊列中移除對應于所述實體的所有相干變更。
13. —種包括計算機可執行指令的計算機可讀介質,所述計算機可執行指令 用于執行以下步驟為關于與至少一個變更定義相對應的數據變更的信息來查詢數據庫,每個所 述至少一個變更定義對應于來自一組可能的請求實體集的一請求實體;以及 將關于所述數據變更的數據變更數據提供給所述請求實體之一。
14. 如權利要求13所述的計算機可讀介質,其特征在于,所述提供關于所述 數據變更的數據變更數據的步驟還包括為每個所述請求實體,在隊列中存儲通告數據項目,所述通告數據項目包括 所述數據變更數據以及對應于所述請求實體的實體標識符;用來自所述隊列內所述通告數據項目之中的至少一個響應的通告數據項目, 響應來自所述請求實體之一的對所述隊列中數據的請求,其中每個所述響應的通告 數據項目包括與所述請求實體之一相對應的實體標識符。
15. 如權利要求14所述的計算機可讀介質,其特征在于,所述通告數據還包 括標識時間點的時間數據,其中所述對數據的請求包括時間范圍,并且對每個所述 響應的通告數據項目的所述時間數據被包含在所述范圍內。
16. 如權利要求14所述的計算機可讀介質,其特征在于,所述請求是所述隊列上的等待請求。
17. 如權利要求13所述的計算機可讀介質,其特征在于,還包括提供一種用于實體來注冊作為所述可能的請求實體之一的方法。
18. 如權利要求13所述的計算機可讀介質,其特征在于,還包括提供一種用于所述可能的請求實體之一來注冊對應于所述實體的變更定義的 方法。
19. 如權利要求13所述方法,其特征在于,所述將關于所述數據變更的數據變更數據提供給所述請求實體之一的步驟僅在確定所述請求實體之一具有訪問所 述數據變更數據的權限之后才被執行。
全文摘要
用于數據變更通告的框架包括存儲事件通告的通告隊列。客戶應用程序可以請求關于各種數據變更事件的事件信息。例如,客戶應用程序可以經由一個或多個API預定以接收事件信息。框架能夠實現在多個客戶會話期間以及在服務器重啟時被保存的會話指定的事件通告機制以及持久事件通告機制。本發明的創新方面包括事件通告的有保證的遞送、允許應用程序獲取有關預定對象過去事件的概述的API、當客戶會話終止時對通告進行的自動垃圾收集/清除。
文檔編號G06Q90/00GK101243445SQ200680029565
公開日2008年8月13日 申請日期2006年8月4日 優先權日2005年8月25日
發明者A·舒克拉, C·羅, H·原, J·D·拉斯弗, J·克萊恩, L·方, N·R·艾利斯, S·P·阿查亞, S·辛恩 申請人:微軟公司