新四季網

請求和接收資料庫改變通知的系統和方法

2023-07-13 00:47:01

專利名稱:請求和接收資料庫改變通知的系統和方法
技術領域:
本發明涉及資料庫,更特別地,涉及註冊資料庫查詢來接收資料庫改變通知並發送指示已註冊的資料庫查詢結果已改變的資料庫改變消息的系統和方法。
背景技術:
計算和網絡技術已改變了日常生活的很多重要方面。計算機已成為家用商品而非奢侈品,教育工具和/或娛樂中心,它還向用戶提供財務管理和預測、控制如加熱、製冷、照明和安全這樣的日常操作,並在持久可靠的媒體中存儲記錄和圖像的工具。
已有的商業實踐隨著計算和網絡技術而發展。例如,傳統的銀行交易包括收集如銀行帳號、存摺和標識這樣的信息、用專門時間到銀行去、乘坐交通工具、排隊等待並通過出納員完成銀行交易。今天,消費者可以通過網際網路訪問他/她的帳戶並通過點擊滑鼠按鈕執行越來越多的可用交易,如查詢餘額、基金轉帳和帳單支付。
隨著計算和網絡技術變得健壯、安全和可靠,更多的消費者、批發商、零售商、企業、教育機構、支持團體及其類似正在改變其模式並使用網際網路而非傳統方法來完成業務。例如,很多公司和消費者提供網站和/或在線服務(如,用於購買食品和衣服、搜索信息、發送電子郵件和玩交互式遊戲)。在另一個例子中,股票市場網站可以向用戶提供檢索股票報價和購買股票的工具。
通常,客戶應用的用戶接口(如,網頁)用於和伺服器交互,伺服器在可由客戶程序訪問的資料庫中存儲信息。資料庫對可以在多個用戶和應用之間共享的數據提供持續、持久的存儲。客戶應用通常通過查詢從資料庫中檢索數據,查詢返回的結果包含應用感興趣的數據的子集。然後應用使用、顯示、變換、存儲或處理那些結果,並可以基於檢索到的結果提交改變。
一旦檢索到結果,可以對資料庫中使原先檢索到的結果中和資料庫中的狀態不一致的數據做出改變。這樣的改變通常對保存原先檢索到的結果的客戶是不可見的,除非該客戶向資料庫重新提交請求。

發明內容
下面提供發明簡單的概要以提供對本發明一些方面的基本理解。此概要並不是本發明全面的總述。其目的並不是標識本發明的關鍵/重要元件或限定本發明的範圍。此概要唯一的目的是以簡化的形式提供本發明的一些概念,作為後面更加詳細的說明的先導。
本發明涉及註冊資料庫查詢以在使註冊時的查詢結果和資料庫的當前狀態不一致的資料庫改變發生時接收通知的系統和方法。
通常,用戶請求可以初始化資料庫查詢以從資料庫中檢索滿足該請求的數據。在很多情況下,資料庫可以成為資源爭用的源。例如,不止一個用戶可以發送請求同時查詢資料庫得到類似的結果。然後資料庫表示在用戶之間共享的狀態。共享狀態爭用會限制系統和/或架構的可伸縮性。在其他情況下,用戶可以對資料庫頻繁執行類似的請求。例如,用戶可以重複點擊滑鼠來對資料庫發起類似的請求以定期刷新由應用和/或網頁顯示的數據並且/或者應用可以對資料庫定期提交查詢以確定資料庫的狀態是否已改變。例如,重複的資料庫查詢很耗時、降低帶寬、降低性能並消耗很多資源。
現有的用於減少查詢數量(如通過一個或多個用戶)的技術包括在資料庫外部保存經常使用的數據。然後用戶可以使用保存的數據而不是重複執行查詢。然而保存的數據的一致性和準確性被破壞,因為隨後的資料庫改變會使得保存的數據與(在已改變的資料庫中的)當前數據不一致,而這為用戶所不知。
根據本發明的一個方面,本發明的系統和方法減輕資料庫負載(如減少查詢)、增加可伸縮性並確保數據一致性。例如,一個或多個用戶可以提交資料庫查詢並註冊該資料庫查詢以在資料庫改變更改了或會更改)已註冊的資料庫查詢的結果時接收通知。
在實踐中,查詢的結果可以被保存在資料庫之外(如在web伺服器上的高速緩存中)並由用戶使用,其中用戶可以多次使用保存的結果,而非另外進行返回類似結果的查詢。當發生的資料庫改變會使隨後的查詢的結果和保存的結果不一致時,向用戶發送通知,指示保存的結果已變得不一致。然後用戶可以例如使用通知來使保存的數據變得無效、執行查詢來刷新保存的數據,和/或忽略通知。
本發明包括註冊資料庫查詢、維護查詢註冊信息、檢測影響已註冊的資料庫查詢的資料庫改變、提供指示已註冊的資料庫查詢已受到影響的消息的系統和方法。例如,註冊接收資料庫改變通知通常包括組裝資料庫查詢註冊信息並將其提供給伺服器。當發生的資料庫改變使資料庫狀態和原先的結果不一致時,關聯的資料庫查詢註冊信息變得可由消息發送服務訪問。發送服務使用資料庫查詢註冊信息來構建和發送改變消息。改變消息被用於幫助發送改變通知到和已註冊的查詢的結果關聯的組件以通知所述組件原先的結果已變得無效。
所述系統和方法可用於各種環境,包括客戶機/伺服器環境(如,基於SQL的)和web環境。因此,本發明提供監控資料庫查詢的改變的方法並在已註冊的查詢的結果改變時得到通知。若用戶使用已保存的從資料庫檢索到的數據並希望在保存的數據變得不一致、需要刷新向用戶顯示的數據、和/或需要基於改變的結果採取動作時得到通知,上述系統和方法是有利的。另外,本發明可以用於現有的架構以發揮安全性、可靠性及可伸縮性,並提供熟悉的編程環境。
對上述和相關目標的實現,本發明包括隨後詳細說明並由權利要求特別指出的特性。下述說明和附圖詳細闡述本發明展示性的特定方面和實現。然而這些只是實現本發明原理的各種方法中的一部分。通過下面對本發明的詳細說明和附圖,本發明的其他目標、優點和新特性將變得顯而易見。


圖1根據本發明的一個方面展示典型的資料庫改變消息發送系統;圖2根據本發明的一個方面展示典型的伺服器;圖3根據本發明的一個方面展示典型的數據鑑定系統;圖4根據本發明的一個方面展示典型的註冊系統;圖5根據本發明的一個方面展示典型的通知系統;圖6根據本發明的一個方面展示典型的客戶機/伺服器系統;圖7根據本發明的一個方面展示另一個典型的客戶機/伺服器系統;圖8根據本發明的一個方面展示典型的安全技術;圖9根據本發明的一個方面展示典型的客戶機/伺服器系統;
圖10根據本發明的一個方面展示註冊和發送方法;圖11根據本發明的一個方面展示第一個註冊、發送和通知方法;圖12根據本發明的一個方面是圖10的延續;及圖13根據本發明的一個方面展示典型的作業系統。
具體實施例方式
現參考附圖對本發明進行說明,其中類似的編號在全文中被用於參考類似的元件。在下面的說明中,為了說明起見,闡明了很多特定的細節以提供對本發明的完整理解。然而,很顯然,可以不用這些特定的細節來實現本發明。在其他情況下,以方框圖的形式展示眾所周知的結構和設備以幫助說明本發明。
如在此申請中所用,術語「組件」指計算機相關的實體,或者為硬體、硬體和軟體的組合、軟體,或正在執行的軟體。例如,組件可以為,但不僅限於,在處理器上運行的進程、處理器、對象、可執行文件、執行的線程、程序和/或計算機。作為說明,運行在伺服器上的應用和伺服器都可以視為計算機組件。一個或更多組件可以駐留在進程和/或執行的線程內且組件可以位於一個計算機上和/或分布在兩個或更多計算機上。「線程」是進程內由作業系統內核調度執行的實體。如在技術中所知,每個線程有關聯的「上下文」,所述上下文是和線程的執行關聯的易變的數據。線程的上下文包括系統寄存器的內容及線程所在進程的虛擬地址。因此,包括線程上下文的實際數據隨者執行而不同。
本發明涉及在資料庫改變會影響已註冊的資料庫查詢的結果時提供通知的系統和方法。所述系統和方法通常使用幫助傳送資料庫查詢註冊信息和發送資料庫改變消息的服務代理、存儲來自服務代理的資料庫查詢註冊信息的隊列以及發送資料庫改變消息的通知發送服務。系統和方法可選地使用各種機制來接收註冊請求、組裝註冊消息、發送註冊消息、檢測資料庫改變、接收資料庫改變消息並提供資料庫改變通知。
參考圖1,根據本發明的一個方面展示典型的資料庫改變消息發送系統100(簡稱系統100)。系統100包括幫助傳輸資料庫查詢註冊信息的服務代理、存儲向服務代理110提供的資料庫查詢註冊信息的第一個隊列1201到第N個隊列120N(N為大於等於1的整數)和至少部分基於資料庫查詢註冊信息發送改變消息的通知發送服務130。第一個隊列1201到第N個隊列120N可以整體稱為隊列120。
通常,組件(如,客戶機、用戶和應用)可以用使用系統100的系統註冊(如訂閱)資料庫隊列。查詢註冊通常包括連接和/或獨立於查詢結果的請求提供資料庫查詢註冊信息。資料庫查詢註冊信息可以包括,例如,唯一的標識符、發送地址、隊列名稱、超時期間和各種通訊及安全選項。可以使用查詢註冊以在已註冊的查詢隨後的執行會返回不同的結果時接收改變消息(如鑑定消息)。會產生改變消息的典型的資料庫改變的例子包括插入、更新和刪除,以及大綱的改變。應理解,可以附加使用過期期間(如,象包含在註冊信息中的超時期間那樣的超時期間)和/或其他準則。例如,資料庫查詢的註冊可以包括提供過期期間,以使得將在註冊的「X」秒後產生改變消息。
當其中隨後的使用已註冊的查詢的請求會返回不同的結果的資料庫改變發生時,向服務代理110提供資料庫查詢註冊信息。另外,可以順序和/或同時提供其他信息,如說明通知原因的信息給服務代理110。服務代理110順序和/或同時向隊列120中的一個提供資料庫查詢註冊信息的至少部分,且服務代理110和/或隊列120調用通知發送服務130。調用通知發送服務130包括激活通知發送服務130,如果它還沒有被激活。已激活的通知發送服務130可以訪問隊列120並使用存儲在其上的資料庫查詢註冊信息來構建並發送改變消息到註冊資料庫查詢的組件。如上所述,改變消息通常指示隨後的查詢會返回不一致的結果。
應理解,一個或多個組件可以註冊一個或多個資料庫查詢,且所述一個或多個資料庫查詢可以返回類似的結果,如下所述。進一步來說,應理解,隊列120中的任何一個都可以對一個或多個組件和/或一個或多個查詢存儲資料庫查詢註冊信息。上述系統在隊列120間提供同類的存儲。例如,在本發明的一個方面,可以在類似的隊列中存儲返回類似結果的查詢的資料庫查詢註冊信息。因此,已註冊接收和返回類似結果的查詢關聯的改變消息的組件的資料庫查詢註冊信息可以由隊列來分組。在本發明的另一個方面,和類似組件關聯的資料庫查詢註冊信息(如,一個或多個查詢的)可以被存儲在類似的隊列中。因此,資料庫查詢註冊信息也可以通過組件來分組。然而,應理解,也可以使用不同類的存儲。另外,用於存儲資料庫查詢註冊信息的隊列可以是預設的,例如基於資料庫查詢註冊信息和/或通過其他技術來選擇。
再者,應理解可以激活不止一個通知發送服務。例如,在本發明的一個方面,可以激活多個通知發送服務來訪問類似的隊列來減輕隊列中資料庫查詢註冊信息的增加。在本發明的另一個方面,通知發送服務130可以訪問不止一個隊列120,並可以發送改變消息到一個或多個組件。在本發明的又一個方面,可以激活多個通知發送服務來訪問多個隊列120。
雖然圖1為展示資料庫改變消息發送系統100的組件的方框圖,應理解,服務代理110、第一個隊列1201到第N個隊列120N和通知發送服務130可以作為一個或多個計算機組件實現,如計算機組件這個術語在此的定義。因此,應理解,根據本發明,用於實現資料庫改變消息發送系統100、服務代理110、第一個隊列1201到第N個隊列120N和/或通知發送服務130的計算機可執行組件可以被存儲在計算機可讀媒體上,計算機可讀媒體包括但不僅限於,ASIC(特定用途集成電路)、CD(光碟)、DVD(數字視頻盤)、ROM(只讀存儲器)、軟盤、硬碟、EEPROM(電子可擦除只讀存儲器)和存儲器棒。
下面請見圖2,根據本發明的一個方面展示典型伺服器200。伺服器200包括幫助存儲和傳輸資料庫查詢註冊信息的服務代理210、存儲資料庫查詢註冊信息的隊列220和發送指示已註冊的資料庫查詢結果已改變的改變消息的通知發送服務230。
伺服器代理210幫助存儲和發送資料庫查詢註冊信息。如上所述,資料庫註冊信息在註冊或訂閱資料庫查詢的請求之後組裝。然後資料庫查詢註冊信息可以例如作為消息被發送到伺服器200。典型的資料庫註冊消息是作為基於XML的文件(如「cookie」)來構建的,並通常包括位移的標識符、發送地址、隊列名稱和超時期間中的至少一個。
在伺服器200通過已註冊的資料庫查詢接收會改變隨後的查詢結果的資料庫改變請求之後,向服務代理210提供資料庫查詢註冊信息。應理解,可以使用各種技術來確定是否發生了資料庫改變及改變是否將影響已註冊的資料庫查詢的結果。
服務代理210在隊列220中存儲資料庫查詢註冊信息的至少部分(如發送地址和唯一的標識符)並調用通知發送服務230。通常通過從資料庫查詢註冊信息中抽取隊列名稱來確定所用的隊列220。
在實踐中,使用預設的隊列名稱或最優選擇的隊列(如,部分基於概率、統計、學習模型(如,神經網絡)和/或自適應技術)。如果查詢註冊信息並不包括合法的隊列名稱和/或隊列不可訪問(如,不存在),那麼關聯的查詢可能會失敗、隨後對關聯數據的更新可能會失敗,且/或可能返回指示查詢註冊失敗的警告(和結果一起,如果查詢註冊信息和查詢同時提交)。
調用通知發送服務230包括激活通知發送服務230,如果它還沒有被激活。提供激活機制減少與在會影響已註冊的查詢的結果的資料庫改變之前配置和/或手動地初始化通知發送服務230關聯的開銷。然而,如果需要,可以預先配置通知發送服務230和隊列。另外,激活機制提供「握手」來校驗通訊以減少發送如果通知發送服務未被激活時可能丟失的信息。應理解通知發送服務230可以另外通過外部的刺激和/或用戶由其他組件激活,例如在系統啟動(如冷啟動和熱啟動)時。
激活的通知發送服務230可以訪問隊列220。激活期間通常由參數確定,例如通過資料庫查詢註冊信息、當通知發送服務230已被激活和/或作為預設的時候在通知發送服務230的設置(如配置)期間資料庫查詢註冊信息之前、同時和/或之後動態地發送的附加信息來提供所述參數。所述參數可以指定例如絕對時間長度(如,在激活後的「X」秒)、服務一定數量的隊列項(如,隊列220中的「Y」個項),和/或停止期間(如,在指定的時間期間內沒有新的資料庫查詢註冊信息被發送到隊列220)。在激活期間過期後,停止通知發送服務130使其進入停止狀態。
另外可以使用激活期間作為優化技術。例如,激活期間可以用來在已註冊的資料庫經常改變時維護通知發送服務230和隊列220之間的連接。維護該連接降低頻繁激活通知發送服務230的成本。進一步來說,激活期間可以設置為「一直為開」來保持通訊。再者,可以使用預設激活期間和/或部分基於啟發式方法的激活期間。
一旦被激活,通知發送服務230訪問存儲在隊列220中的資料庫查詢註冊信息。資料庫查詢註冊信息被用來構建並發送指示已註冊的查詢隨後的執行會返回不同結果的改變消息。資料庫查詢註冊信息通常包括指示發送改變消息到何處的發送地址。發送地址可以被抽取用於發送改變消息。另外,資料庫查詢註冊信息通常包括唯一的標識符,該標識符可以被用在改變消息中幫助通知運行時間服務(如下所述)發送鑑定通知(如,觸發事件並設置標誌)到註冊為接收通知的組件。
可以確認和/或收回上述的資料庫改變請求。在一個實例中,使用異步模型,其中資料庫確認改變,無論通知發送服務230是否處理了隊列220中的資料庫查詢註冊信息。異步模型的優點是通知發送服務230可以在稍後的時間訪問資料庫查詢註冊信息,並且異步模型通過允許隊列220中有一個以上的項來提供可伸縮性,其中一個或多個通知發送服務可以順序和/或同時訪問隊列220。
在另一實例中,使用同步模型,其中阻塞資料庫改變,直到關聯的資料庫查詢註冊信息由通知發送服務230訪問和/或改變消息被發送和/或接收(如由下面所述的通知運行時間服務)。同步模型通過確保改變消息在發送資料庫改變之前被發送和/或接收來提供可靠性和健壯或一致的數據。
可以使用各種技術來確定資料庫改變消息是否已被發送和/或接收。第一種技術包括來自接收設備的確認(如,ACK)。ACK可以指示成功(如未損壞的)發送改變消息並可以調用資料庫改變的確認。第二種技術包括接收來自接收設備的否定確認(NAK)和/或無確認以指示發送不成功,其中資料庫改變被收回、延期和/或推遲,直到改變消息被成功地發送到它預定的接收器和/或接收者。在第三種技術中,可以使用網際網路包探索者(Ping)來確定通知發送服務230和接收設備之間是否存在通訊。通知發送服務230可以發送數據包到接收設備(如,通知運行時間服務)並等待回復。可以在改變消息之前、同時或在其後發送數據包。來自接收設備的回覆可以校驗存在通訊。
應理解,雖然在伺服器200內展示服務代理210,服務代理210可以位於客戶機或在其他伺服器上。另外,服務代理210可以為資料庫(如,基於SQL的),並可以包括一個以上的隊列220和/或通知發送服務230。進一步來說,應理解,如上所述可以使用多個通知發送服務。例如,多個通知發送服務可以訪問隊列220。另外,多個通知發送服務可以順序和/或同時訪問多個隊列(如,隊列120),包括本質上類似的隊列(如,隊列220)。
再者,應理解在從隊列220發送資料庫查詢註冊信息到通知發送服務230的過程中可以使用中間組件(未標出)。例如,資料庫查詢註冊信息在由通知發送服務230訪問之前可以被存儲在另一個媒體上。在本發明的一個方面,資料庫查詢註冊信息可以被保存到日誌文件。隨後,通知發送服務230使用來自日誌文件中的資料庫查詢註冊信息。在本發明的另一個方面,可以使用緩衝來加快發送資料庫查詢註冊信息到通知發送服務230。在本發明的又一個方面,資料庫查詢註冊信息可以被卸載到中間組件及其類似來釋放與資料庫和/或服務代理210關聯的資源以提高性能。應理解提供中間組件提高了系統的靈活性。
現參考圖3,根據本發明展示典型數據鑑定系統300。數據鑑定系統300包括客戶機310、伺服器320、存儲器330、服務代理340、隊列350及通知發送服務350。
如在此所述,客戶機310可以包括對伺服器320註冊資料庫查詢並從通知發送服務接收關聯的改變消息的機制(未標出)。註冊通常包括構建資料庫註冊消息,資料庫註冊消息包括例如資料庫查詢註冊信息、發送地址、唯一的標識符(如全局唯一標識符,或GUID)、隊列名稱、超時期間和可選的附加信息,如通訊(如協議和埠)和安全(如加密和驗證)選項。然後可以發送資料庫註冊消息到伺服器320。應理解,根據本發明的一個方面,多個客戶機(如,多個客戶機310)和/或其他組件可以順序和/或同時註冊多個資料庫查詢。進一步來說,多個客戶機可以註冊返回本質上類似的結果的查詢。
在本發明的一個方面,可以用查詢(如和包括在資料庫註冊消息中的資料庫查詢註冊信息關聯的查詢)發送資料庫註冊消息到伺服器320。查詢結果可以被存儲在存儲器330和/或其他存儲設備中,包括web伺服器上的存儲。在存儲器330中存儲結果向客戶機310和其他客戶機提供在隨後的查詢會返回本質上類似的結果時使用存儲的結果而非執行隨後的查詢的能力。在本發明的其他方面,資料庫註冊消息可以被發送到伺服器320而不帶請求結果。例如,客戶機可以註冊本質上類似於原先執行的查詢的查詢,其中原先執行的查詢的結果被存儲到存儲器330並可以由客戶機使用。在另一個例子中,客戶機可以註冊影響和改客戶機關聯的不同查詢的結果的查詢。在另一個例子中,如果需要,客戶機可以註冊接收對資料庫的任何改變的鑑定通知。
應理解,存儲的查詢結果可以包括例如原始數據、變換後的數據和/或可查詢的數據。原始數據是靈活的,並且可以使用各種變換技術來提供原始數據的其他表示。例如,原始數據可以表示為字母數字文本、符號、圖像、表格和圖表,並使用其他已知的形式和/或格式。存儲變換的數據或對象節省變換時間並可以發揮現有的支持(如,響應高速緩存)。可以通過隨後的使用可查詢的數據集或其子集的請求來使用可查詢的數據。例如,可查詢的數據集可以包括多個分類,且隨後的請求可以對多個分類和/或多個分類的子集查詢數據集。
在伺服器320接收資料庫改變請求之後,向服務代理340提供資料庫註冊消息中的資料庫查詢註冊信息。服務代理340至少放置資料庫查詢註冊信息的部分在隊列350中,並激活通知發送服務360。如上所述,資料庫改變請求可以異步或同步進行確認。
然後通知發送服務360使用資料庫查詢註冊信息來構建並發送改變消息到客戶機310。例如,通知發送服務360可以從資料庫查詢註冊信息中抽取並使用發送地址和唯一標識符(如,DUID)。唯一標識符通常包括在改變消息內,且改變消息通常被發送到發送地址(如,和客戶機310關聯的通知運行時間服務)。
在接收改變消息之後,可以抽取唯一標識符並用它來通知客戶機310。然後,客戶機310可以確定隨後的動作。例如,在本發明的一個方面,客戶機310可以執行另一個查詢來刷新和顯示和/或存儲刷新的結果。在本發明的另一個方面,客戶機310可以確定繼續顯示或使用存儲器330中的結果,即使該結果和隨後的查詢返回的結果不一致。在本發明的另一個方面,客戶機310可以再次註冊資料庫查詢並/或使用自動重新註冊以在另一個改變(如會變更查詢結果的改變)發生時接收通知。在本發明的另一個方面,改變通知會觸發其他處理,如記錄改變信息和/或基於改變的數據採取行動。
圖4根據本發明的一個方面展示典型註冊系統400。註冊系統400用於幫助資料庫查詢的註銷(如對伺服器200和320和任何基於SQL的伺服器)。註冊系統400包括消息裝配器410、名字提供者420、時間提供者430、ID提供者440和地址提供者450。
消息裝配器410接受資料庫查詢註冊請求(如,訂閱)、協調打包資料庫查詢註冊信息並發送可以由象系統100-300那樣的系統使用的資料庫查詢註冊信息。如上所述,資料庫查詢註冊信息通常包括隊列名稱、超時期間、唯一標識符和發送地址。然而,應理解上述資料庫查詢註冊信息並不是對本發明的限制。可以根據本發明使用其他適合的信息。進一步來說,可以根據本發明的一個方面使用資料庫查詢註冊信息的各種次序。
消息裝配器410可以從一個或多個提供者420-450和/或其他組件(如,通知運行時間服務和/或通用監聽程序,如在此所述)獲取資料庫查詢註冊信息。可以使用名字提供者420來提供隊列的名稱(如,隊列120的一個的名稱),所述隊列在會使資料庫的狀態和原先返回的結果不一致的資料庫改變發生之後存儲和已註冊的資料庫查詢關聯的資料庫查詢註冊信息。例如,名字提供者420可以從一個或多個可用的隊列中隨機選取隊列名稱,向用戶提供定義的隊列名稱,並/或提供預設的隊列名稱。在本發明的另一個方面,可以在資料庫查詢註冊請求中包括隊列名稱,從而不使用名字提供者420。
時間提供者430對已註冊的資料庫查詢提供超時期間。超時期間可以指定時間長度或過期期間,其中當超時期間過去時,資料庫查詢註冊信息調用改變消息消息,即使未發生資料庫改變,來指示超時期間已經過去。這可以通知用戶任何對應於已註冊的資料庫查詢的存儲的結果不再可靠和/或準確,而伺服器不必在很長的時間段內保留用戶不再感興趣的資料庫查詢的註冊信息。
使用ID提供者440來分配唯一標識符(如,全局唯一標識符,或GUID)用於訂閱。通常,唯一標識符提供關聯正被註冊的資料庫查詢與請求訂閱的組件(如客戶機、對象實例和相關性)的機制。例如,可以和命令、視圖、表和/或資源關聯。唯一標識符可以被用來發送鑑定通知到請求組件。
使用地址提供者450來提供發送地址。發送地址在發送改變消息來響應會影響已註冊的查詢的結果的資料庫改變時由通知發送服務使用。發送地址指示改變消息的目標地址。例如,發送地址和對訂閱註冊的通知運行時間服務和/或通用監聽程序(如,HTTP.sys)關聯。應理解可以使用其他組件和系統來獲取發送地址。例如,可以使用通知運行時間服務和/或通用監聽程序來通過地址提供者450和/或通過其他技術,例如沒有任何中間組件,提供發送地址。
在獲取資料庫查詢註冊信息之後,消息裝配器410構建資料庫查詢註冊消息。通常,資料庫查詢註冊消息包括唯一標識符、發送地址、隊列名稱和超時期間。應理解,資料庫查詢註冊信息可以在消息內不同地進行定位和格式化。例如,在本發明的一個方面,資料庫查詢註冊信息是可以解析的經分隔的字符串。在本發明的另一個方面,使用資料庫查詢註冊信息的二進位表示。在本發明的又一個方面,使用資料庫查詢註冊信息的至少部分來構成「cookie」。例如,發送地址和唯一標識符可以作為「cookie」和/或基於標記語言(如XML)的消息來提供。
然後消息裝配器410發送資料庫查詢註冊消息。應理解可以在查詢之前、同時和/或之後發送該消息。另外,可以在命令(如可執行命令)中和/或用存儲過程發送該消息。當改變已註冊的資料庫查詢的結果的資料庫改變發生時,可以使用資料庫查詢註冊信息來幫助發送鑑定通知到註冊接收通知的組件。
應理解註冊系統400、消息裝配器410、名字提供者420、時間提供者430、ID提供者430和地址提供者440可以為如在此定義的計算機組件。
圖5根據本發明的一個方面展示典型的通知系統500。通知系統500包括地址分配器510、輸出組件520、消息接收器530和ID抽取器540。
通知系統500通常在接收到資料庫查詢註冊請求之後被激活。例如,在接收到資料庫查詢註冊請求之後,註冊組件(如,註冊系統400)可以激活通知系統500。
在激活後,通知系統500可以被用來獲取資料庫查詢註冊消息的發送地址和/或用於提供鑑定通知。地址分配器510可以被用來獲取發送地址。在地址分配器510接收發送地址請求(如,通過對通知運行時間服務和/或通用監聽程序註冊,如下所述)之後,獲取到發送地址並將其提供給輸出組件520。然後發送地址被發送到請求組件(如註冊系統400)。
另外通知系統500可以接受改變消息。例如,通知發送服務(如在此所述)可以被用來發送改變消息到通知系統500。消息接收器530接受改變消息。消息接收器530可以使用各種安全和鑑定技術來減少轉發出錯的改變消息。例如,根據本發明的一個方面,可以使用驗證證書和/或唯一標識符校驗。然後消息接收器530向ID抽取器540提供改變消息。ID抽取器540從資料庫註冊消息內獲取唯一標識符。
然後由輸出設備520使用唯一標識符來發送鑑定通知到註冊接收通知的組件。例如,在本發明的一個方面,和向唯一標識符分配的註冊實例關聯的任何客戶機都有通知(如,事件)。在本發明的另一個方面,使用標誌和/或其他描述符來通知試圖使用原先返回的查詢結果的的任何客戶該查詢已變得無效。
圖6根據本發明的一個方面展示典型的客戶機/伺服器系統600。應理解客戶機/伺服器系統600可以為基於SQL的客戶機/伺服器。應理解客戶機/伺服器系統600包括包含相關性實例610、可選的相關性交換機620、通知運行時間服務630和相關性關聯640的客戶機605,及包含檢測單元650、資料庫660、服務代理670、隊列680和通知發送服務690的伺服器645。
客戶機605通過資料庫查詢註冊請求發起註冊。通常,資料庫查詢註冊請求包括隊列名稱和/或超時期間。然而,應理解對上述和其他選項可以使用預設值。創建相關性實例610來表示註冊請求並提供一個或多個已註冊的查詢和要通知的客戶機605之間的關聯。在創建時,相關性組件610獲取請求的唯一標識符。應理解,單個相關性實例610可以和一個或多個已註冊的查詢關聯,其中會影響任何一個查詢的結果的改變將產生通知(如,如果對任何查詢的結果都發生改變,從幾個資料庫查詢產生的結果都被確定無效)。標識符的唯一性可以對應於已註冊的查詢的分組,其中一個或多個查詢可以在資料庫改變時使聚合的結果無效。例如,可以對由不同的一組已註冊的查詢影響的結果獲取不同的唯一標識符。
使用唯一標識符通過可選相關性交換機620對通知運行時間服務註冊,其中相關性實例610提供唯一標識符並對相關性交換機620註冊,然後相關性交換機620提供唯一標識符並對通知運行時間服務630註冊。如果相關性交換機和/或通知運行時間服務630未被激活,那麼在註冊之前啟動相關性交換機620和/或通知運行時間服務630。在註冊後,通知運行時間服務630向相關性實例610提供發送地址。應理解可選相關性交換機620被用作優化技術,且當不使用它時,相關性實例610可以對通知運行時間服務630註冊而不需要對如可選相關性交換機620這樣的中間組件預先註冊。另外,使用的通知運行時間服務可以從預設值、客戶機能力、資料庫查詢註冊信息、配置、統計和/或自適應技術中選取。
上述註冊技術可以通過向處理內的一個或多個相關性實例(如相關性實例610)提供對處理內的相關性交換機(如,相關性交換機620)註冊的方法來減少處理之間的交叉參考,其中相關性交換機和/或來自多個處理(如相關性交換機620及其類似)的其他相關性交換機可以對通知運行時間服務630註冊跨處理參考。
然後向相關性關聯640提供發送地址、唯一標識符、隊列名稱、超時期間和/或附加信息,並隨後將它們在註冊消息中發送到伺服器645。應理解,相關性實例610(及其他相關性實例)可以和一個或多個客戶機組件關聯並包括多個查詢註冊,其中對任何已註冊的查詢的結果的改變將導致本質上類似的客戶機動作。如上所述,伺服器645包括檢測單元650、資料庫660、服務代理670、隊列680和通知發送服務690。
檢測單元650可被用於維護資料庫查詢註冊信息並確定何時對已註冊的查詢調用鑑定。例如,當接收到改變資料庫660的請求時,資料庫查詢註冊信息可以被用來確定已註冊的查詢是否和該改變關聯。如果,已註冊的查詢的結果會改變,那麼至少可以向服務代理670提供資料庫查詢註冊信息。應理解檢測單元650可以發送附加的信息,如鑑定原因(如,資料庫改變(如上所述)、超時期間過期、存儲器限制、查詢複雜度、伺服器重啟和系統錯誤)和/或改變的內容(如,原始值和/或當前值)。
在發送資料庫查詢註冊信息到服務代理670之後,檢測單元650可以丟棄(如自動取消註冊)或保留資料庫查詢註冊信息。丟棄資料庫查詢註冊信息確保隨後的改變不會引起查詢的另一個鑑定(如當註冊查詢的組件不再需要接收通知)。適合的丟棄資料庫查詢註冊信息的技術包括靜態丟棄(如,在調用鑑定後丟棄)、基於資料庫查詢註冊信息的至少部分(如,丟棄欄位或參數)丟棄、基於來自通知運行時間服務的響應的至少部分丟棄(如,保留資料庫查詢註冊信息如果仍然有關聯的組件監聽鑑定,否則丟棄),及基於取代原先的註冊消息的隨後的註冊消息丟棄。保留資料庫查詢註冊信息提供接收和隨後的資料庫改變關聯的附加鑑定的能力。
在從檢測單元650接收資料庫查詢註冊信息之後,服務代理670幫助存儲並發送資料庫查詢註冊信息到通知發送服務。服務代理670放置資料庫查詢註冊信息在隊列680中,且服務代理670調用通知發送服務690,如果是這樣配置的。在激活時,通知發送服務690可以使用隊列680中的資料庫查詢註冊信息來構建指示已註冊的查詢的結果因為資料庫改變已發生改變(如隨後的結果已變得無效和/或與原先檢索的結果不一致)的改變消息。應理解檢測單元640也可以向通知發送服務690提供資料庫查詢註冊信息對已註冊的查詢調用改變消息。
通知發送服務690使用資料庫查詢註冊信息的至少部分來發送改變消息到客戶機605的通知運行時間服務630。通知運行時間服務630使用在改變消息內的相關性唯一標識符來發送通知到對應的相關性實例610(可選地通過相關性交換機620)。然後相關性實例610向客戶機605通知該改變。例如,在相關性實例610接收通知後,觸發相關性事件且/或標誌設置在隨後嘗試對該相關性實例註冊時觸發事件。應理解,多個客戶機可以註冊接收通知,且相關性實例610可以順序和/或同時通知客戶機605和位於類似的和/或不同的機器上的其他客戶機。進一步來說,客戶機605(或實例化相關性實例610的其他客戶機)在發生改變時不再存在。然而,如果有的話,註冊為接收通知的其他客戶可以由相關性實例610通知。
應理解可以使用各種技術來減少由於通知運行時間服務630和通知發送服務690之間的通訊丟失產生的不一致的查詢結果。例如,ACK/NAK通訊代碼可以被用來確認無差錯的傳輸並指示損壞的傳輸和/或無傳輸。在本發明的另一個方面,通知運行時間服務630可以輪詢通知發送服務690。如果成功,則通訊通過校驗。在另一個例子中,通知運行時間服務630可以被「關閉」。通知運行時間服務630可以在完成關閉之前提供通知(如,資料庫狀態未知)。可以用類似的方式使用通知發送服務690。例如,通知發送服務690可以輪詢通知運行時間服務640。如果成功,那麼通訊經過驗證。如果不成功,則收回資料庫改變,或不對它進行確認,直到通知發送服務690能夠發送該改變消息。
圖7根據本發明的一個方面展示另一個典型的客戶機/伺服器系統700。如客戶機/伺服器系統600那樣,客戶機/伺服器系統600包括包含相關性實例610、相關性關聯640的客戶機605,及包含檢測單元650、資料庫660、服務代理670、隊列680和通知發送服務690的伺服器645。另外,客戶機605進一步包括相關性監聽程序710,且客戶機/伺服器系統700進一步包括用於客戶機605和伺服器645的通用監聽程序700。
如上所述,客戶機605通過資料庫查詢註冊請求發起註冊,這可以包括創建相關性實例610。創建相關性實例610產生唯一標識符(如,GUID),唯一標識符被用來對相關性監聽程序710註冊。相關性監聽程序710(及其他相關性監聽程序)產生唯一的URI對通用監聽程序720進行註冊(如,HTTP.sys或發送HTTP請求到用戶模式的應用的內核模式的設備驅動器)。GUID和URI通過相關性實例610作為唯一標識符和發送地址暴露並在查詢註冊消息中被發送到伺服器645。應理解唯一的URI的產生可以通過作為相對URI的部分的第二個唯一標識符來實現。另外,所用的通用監聽程序可以從預設值、客戶機能力、資料庫查詢註冊信息、配置、統計和/或自適應技術中選擇。
查詢註冊消息由檢測單元650接收和關聯,檢測單元650檢測和已註冊的資料庫查詢關聯的資料庫改變並在資料庫改變發生,而其中已註冊的查詢隨後的執行會返回不同的結果時向服務代理670提供資料庫查詢註冊信息。如上所述,檢測單元650可以發送其他信息,並可以維護隨後的資料庫改變的資料庫查詢註冊信息,或取消查詢註冊(如,取消註冊)。
服務代理670幫助存儲和發送資料庫查詢註冊信息到通知發送服務690。服務代理670放置資料庫查詢註冊信息在隊列680中,且服務代理670調用通知發送服務690。激活的通知發送服務690可以使用資料庫查詢註冊信息來構建並發送改變消息。
通知發送服務690在改變消息中使用至少部分資料庫查詢註冊信息,並將改變消息作為例如HTTP請求提供給通用監聽程序720。通用監聽程序720使用URI內的相對路徑來發送請求到相關性監聽程序710。相關性監聽程序710可以使用資料庫查詢註冊信息(如,相關性唯一標識符)來發送改變消息到相關性實例610來通知註冊接收鑑定通知的任何客戶機,包括客戶機605。類似於客戶機/伺服器系統600,可以使用各種技術(如,ACK/NAK、Ping和自動鑑定)來減少使用由於通用監聽程序720和通知發送服務690之間的通訊丟失造成的不一致的查詢結果。
應理解使用相關性監聽程序710和通用監聽程序720使得不需要安裝和激活(如,啟動)服務,如客戶機605上的通知運行時間服務。另外,由於可以使用80埠,能夠通過防火牆發送改變消息和/或鑑定通知。然而,應理解可以配置該埠並且可以使用任何埠。
圖8根據本發明的一個方面展示典型的安全技術。系統800包括客戶機810、伺服器820、註冊請求通道830和改變消息通道840。
如上所述,客戶機發起資料庫查詢註冊或訂閱。例如,客戶機810請求資料庫查詢訂閱,它可選地包括隊列名稱和超時期間。隨後,獲取另外的資料庫查詢註冊信息,且構建資料庫查詢註冊消息。資料庫查詢註冊消息通常包括發送地址、唯一標識符、隊列名稱和超時期間,但可以包括附加的和/或其他信息。一旦被裝配出,資料庫查詢註冊信息就通過註冊通道830被發送到伺服器820。然後,在伺服器820接收資料庫改變請求之後,使用伺服器820上的檢測機制或其類似來確定資料庫改變何時會改變已註冊的查詢隨後的查許結果。然後,可以通過改變消息通道840發送改變消息到客戶機810。
包括在資料庫查詢註冊消息中的唯一標識符(如,GUID)可以對資料庫查詢註冊消息提供安全機制。例如,在本發明的一個方面,在運行時間當接收到資料庫隊列RQ時創建GUID,從而減少「猜測」或假冒GUID的機會。然後通過伺服器820傳播該唯一標識符並將其包括在改變消息中。企圖插入模擬的資料庫改變消息到改變消息通道840中的惡意的來源試圖虛假地通知客戶機如果唯一標識符並不表示合法註冊就忽略已註冊的資料庫改變。另外,根據本發明的一個方面,可以使用其他安全技術(如驗證證書)。
下面是圖9,根據本發明展示典型的客戶機/伺服器系統900。客戶機/伺服器900包括包含命令組件920、相關性930、通知運行時間服務940和可選相關性交換機50的客戶機910,以及包含服務代理970、隊列980和通知發送服務990的伺服器960。
通常,客戶機實例化產生唯一標識符的相關性930(如,對象)。客戶機通常通過構造函數和/或方法提供隊列名稱和超時期間。然而,可以使用預設的和/或其他隊列名稱和超時期間。隨後,如果使用了相關性交換機950,相關性830就通過可選相關性交換機950對通知運行時間服務940註冊。如果未使用可選相關性交換機950,那麼註冊發生在相關性930和通知運行時間服務940之間,而沒有任何中間組件。然後通知運行時間服務940向相關性930提供發送地址。然後客戶機通常實例化命令組件920(如,衍生對象)並將其與相關性930關聯。隊列名稱、超時期間、發送地址和唯一標識符被作為例如資料庫查詢註冊消息(如,標記語言(如,XML)文件)發送。應理解相關性930可以和多個命令組件920(及其他命令組件)關聯,其中命令組件可以對本質上類似的資料庫查詢註冊消息註冊類似的和/或不同的資料庫查詢。
如上所述,伺服器機器960包括服務代理970、隊列980和通知發送服務990。伺服器機器960可以使用各種技術來檢測資料庫改變。例如,當接收到資料庫改變請求時,初始化搜索已註冊的查詢來確定隨後的查詢結果是否會改變。可以向服務代理970提供和改變的資料庫關聯的資料庫查詢註冊信息。服務代理970可以在隊列980中存儲資料庫查詢註冊信息並激活通知發送服務990。
通知發送服務990使用資料庫查詢註冊信息來構建並發送改變消息到通知運行時間服務940。隨後,通知運行時間服務940抽取唯一標識符,並使用該唯一標識符來發送消息到對應的關聯性930。然後關聯性930通知和已改變的資料庫關聯的客戶機。例如,關聯性可以對和改變的數據表關聯的應用觸發事件並/或設置標誌以在應用試圖關聯已改變的數據表時觸發事件。
應理解,根據本發明的一個方面,類似於客戶機/伺服器系統700,可以對客戶機/伺服器系統900使用關聯性監聽程序(未標出)和通用監聽程序(未標出)。例如,關聯性監聽程序可以對通用監聽程序註冊唯一的URI並維護唯一標識符和關聯性實例之間的對應。唯一的標識符和URI可以包括在發送到伺服器的資料庫查詢註冊消息中。在會影響隨後的查詢結果的資料庫改變發生後,通知發送服務990可以構建並發送例如HTTP請求來發送改變消息到通用監聽程序。通用監聽程序可以使用唯一的URI來發送請求到關聯性監聽程序。關聯性監聽程序可以使用改變消息內的唯一標識符以使得對應的關聯性通知到已註冊接收鑑定通知的任何客戶機。
如上所述,使用關聯性監聽程序和通用監聽程序使得不需要安裝和激活客戶機上的服務(如,通知運行時間服務)。另外,可以配置埠,例如可以選擇埠80從而能夠通過防火牆進行傳輸。
圖10-12展示符合本發明的方法。為便於說明,所述方法在此作為一系列的工作來說明。應理解,所示的動作和/或動作的順序並不是對本發明的限制,例如,動作能夠以各種順序和/或同時發生,並且可以有其他未在此說明和展示的動作。進一步來說,並不是所有展示的動作都是實現符合本發明的方法必須的。
另外,熟悉技術的人應理解,方法可以另外表示為一系列互相關聯的狀態(如狀態圖)或事件。再者,在計算機可執行指令的通用上下文中對本發明進行說明,計算機可執行指令如由一個或多個主鍵執行的程序模塊。通常,程序模塊包括執行特殊任務或實現特殊抽象數據類型的例程、程序、對象、數據結構等等。通常程序模塊的功能可以根據需要合併或分布在各個實施例中。
圖10根據本發明的一個方面展示註冊和發送方法1000。註冊和發送方法1000可以被用來在接收到其中改變會更改已註冊的查詢的結果的資料庫改變請求之後發送改變消息。開始於1010,組件(如,客戶機、代理、應用和用戶)註冊資料庫查詢以在發生會影響以註冊的查詢的結果的資料庫改變時接收通知。註冊通常包括提供幫助發送改變通知的資料庫查詢註冊信息(如圖1-9所述)。
在1020,接收到資料庫改變請求。請求可以包括會改變已註冊的查詢的結果的改變。請求啟用機制來確定資料庫改變是否和已註冊的資料庫查詢關聯。如果已註冊的查詢的結果會受到影響,那麼向服務代理提供資料庫查詢註冊信息的至少部分。
在1030,服務代理存儲註冊信息到隊列中並激活通知發送服務。可以讓通知發送服務訪問資料庫查詢註冊信息。應理解,可以使用各種技術來提供資料庫查詢註冊信息。例如,資料庫註冊信息可以從隊列中「推出」和/或「拉出」到通知發送服務。進一步來說,可以通過例如提供臨時的存儲位置使用中間存儲區域來幫助資料庫查詢註冊信息的傳輸。
使用資料庫查詢註冊信息來獲取用於構建和發送改變消息的發送地址和唯一標識符。在1040,通知發送服務發送資料庫改變消息。該消息至少包括部分註冊信息並通常包括所述唯一標識符。例如,可以發送對象ID,其中對應用對象實例觸發事件和/或設置標誌。應理解通知發送服務可以發送改變消息到通用監聽程序和/或通知運行時間服務,如上所述。
圖11-12根據本發明的一個方面展示註冊、發送和通知方法1100。下面是圖11,在編號1110處,接收到註冊資料庫查詢的請求。可選地,該請求可以包括隊列名稱和/或超時期間。
在1120,獲取唯一標識符和發送地址(如,通過相關性監聽程序和通用監聽程序,和/或相關性交換機和/或通知運行時間服務,如上所述)。另外可以獲取其他信息,包括隊列名稱和/或超時期間。然後使用資料庫查詢註冊信息來構建資料庫查詢註冊消息,並將其發送到伺服器。
在1130,伺服器接收並存儲包括在資料庫查詢註冊消息中的資料庫查詢註冊信息。在發送器接收資料庫改變請求之後,調用某種機制,來幫助檢測改變是否會更改已註冊的查詢隨後的結果。例如,如果已註冊的資料庫查詢未和該資料庫改變關聯,那麼方法1100可以轉換到空閒狀態,並等待下一個資料庫改變。如果資料庫改變影響已註冊查詢的結果,那麼可以向服務代理提供資料庫查詢註冊信息。服務代理在隊列中(如和包括在資料庫查詢註冊信息消息中的隊列名稱關聯的隊列)存儲資料庫查詢註冊信息。服務代理還可以激活通知發送服務。
下面請見圖12,更加本發明的一個方面展示圖11的延續。在參考編號1210,向通知發送服務提供存儲在隊列中的資料庫查詢註冊信息。通常唯一標識符和發送地址都存儲在隊列中。
在1220,通知發送服務發送通常包括唯一標識符的改變消息,並將其發送到發送地址(如通知運行時間服務和/或通用監聽程序的發送地址)。接收到改變消息,並且在1230,可以抽取改變消息中的唯一標識符並將其用於通知已註冊的組件和隨後試圖對已註冊的查詢的改變註冊的組件。
為了提供本發明各方面的附加上下文。圖13和下面的說明旨在對適合的操作環境1310提供簡單的總體說明,在其中可以實現本發明的各方面。雖然本發明是在計算機可執行指令的通用上下文中說明的,計算機可執行指令如由一個或多個計算機或其他設備執行的程序模塊,熟悉技術的人應承認,本發明也可以組合其他程序模塊和/或作為硬體和軟體的組合來實現。然而,通常,程序模塊包括執行特殊任務或實現特殊數據類型的例程、程序、對象、組件、數據結構等等。操作環境1310僅為適合的操作環境的一個例子且並不對本發明的使用或功能範圍進行任何限制。適合於使用本發明的其他眾所周知的計算機系統、環境和/或配置包括但不僅限於,個人計算機、手持或膝上型設備、微處理器系統、網絡PC、小型機、大型機、包括上述系統或設備的分布式計算環境,及其類似。
參考圖13,用於實現本發明的各方面的典型環境1310包括計算機1312。計算機1312包括處理單元1314、系統存儲器1316和系統總線1318。系統總線1318連接包括但不僅限於系統存儲器1316到處理單元1314的系統組件。處理單元1314可以為各種可用的處理器中的任何一種。也可以使用雙處理器和其他多處理器架構作為處理單元1314。
系統總線1318可以為幾種類型的總線結構中的任何一種,包括存儲器總線或存儲器控制器、外圍總線或外部總線和/或使用各種可用的總線架構中的任何一種的本地總線,總線架構包括,但不僅限於,8位總線、工業標準結構(ISA)、微通道結構(MSA)、擴展的工業標準結構(EISA)、智能設備電路(IDE)、VESA本地總線(VLB)、周邊元件互連(PCI)、通用串行總線(U服務代理)、高級圖形接口(AGP)、個人計算機存儲卡國際協會總線(P改變消息CIA),及小型計算機系統接口(SCSI)。
系統存儲器1316包括易失存儲器1320和非易失存儲器1322。基本輸入/輸出系統(BIOS)存儲在非易失存儲器1322中,BIOS包括在計算機1312內的元件之間傳輸信息,如啟動的期間,的基本例程。作為例子,而非限制,非易失存儲1322包括只讀存儲器(ROM)、可編程ROM(PROM)、電子可編程ROM(EPROM)、電子可擦ROM(EEPROM)或快閃記憶體。易失存儲器1320包括隨機訪問存儲器(RAM),它作為外部高速緩存存儲器工作。作為例子而非限制,RAM有多種形式,如同步RAM(SRAM)、動態RAM(DRAM)、同步DRAM(SDRAM)、雙倍數據速率SDRAM(DDR SDRAM)、增強型SDRAM(ESDRAM)、同步連接DRAM(SLDRAM)和直接Rambus RAM(DRRAM)。
計算機1312也包括可移動/不可移動、易失/非易失計算機存儲媒體。圖13展示了,例如,磁碟存儲1324。磁碟存儲1324包括,但不僅限於,設備如磁碟驅動器、軟盤驅動器、磁帶驅動器、Jaz驅動器、Zip驅動器、LS-100驅動器、快閃記憶體卡、或存儲器棒。另外,磁碟存儲1324可以包括和其他存儲媒體分離或合併的存儲媒體,其他存儲媒體包括但不僅限於,光碟驅動器,如光碟ROM驅動器(CD-ROM)、可寫光碟驅動器(CD-R驅動器)、可重寫光碟驅動器(CD-RW驅動器)或數字多用途盤ROM驅動器(DVD-ROM)。為了幫助連接磁碟存儲設備1324到系統總線1318,通常使用如接口1326這樣的可移動或不可移動接口。
應理解圖13說明了作為用戶和適合的操作環境1310中的基本計算機資源之間的中介的軟體。這樣的軟體包括作業系統1328。作業系統1328可以被存儲在磁碟存儲1324上,用於控制和分配計算機系統1312的資源。系統應用1330利用作業系統1328通過存儲在系統存儲器1316或磁碟存儲1324中的程序模塊1332和程序數據1334對資源的管理。應理解,可以用各種作業系統或作業系統的組合實現本發明。
用戶通過輸入設備1336輸入命令或信息到計算機1312。輸入設備1336包括,但不僅限於,如滑鼠、軌跡球、觸針這樣的定點設備、觸摸墊、鍵盤、麥克風、操縱杆、遊戲墊、圓盤式衛星天線、掃描儀、電視卡、數位相機、數碼攝像機、攝像頭等等等。這些和其他輸入設備經接口埠1338通過系統總線1318連接到處理單元1314。接口埠1338包括,例如,串行埠、並行埠、遊戲埠和通用串行總線(U服務代理)。輸出設備1340使用一些和輸入設備1336所用埠類型相同的埠。因此,例如U服務代理埠可以用於向計算機1312提供輸入,並從計算機1312輸出信息到輸出設備1340。提供輸出適配器1342來展示在其他輸入設備1340中有一些需要特殊適配器的輸出設備,如顯示器、揚聲器和印表機。輸出適配器1342包括,作為例子而非限制,視頻和音頻卡,它們提供在輸出設備1340和系統總線1318之間進行連接的方法。應注意,其他設備和/或設備的系統提供輸入和輸出能力兩者,如遠程計算機1344。
計算機1312可以工作在使用到一個或多個如遠程計算機1344這樣的遠程計算機的邏輯連接的聯網環境中。遠程計算機1344可以為個人計算機、伺服器、路由器、網絡PC、工作站、基於微處理器的設備、對等設備或其他普通網絡節點及其類似,並通常包括很多或所有相對於計算機1312說明的元件。為簡單起見,對遠程計算機1344隻展示了存儲器存儲設備1346。遠程計算機1344邏輯上通過網絡接口1348連接到計算機1312且物理上通過通訊連接1350連接。網絡接口1348包括通訊網絡,如區域網(LAN)和廣域網(WAN)。LAN技術包括,光纖分布式數據接口(FDDI)、銅線分布式數據接口(CDDI)、乙太網/IEEE 802.3、令牌環網/IEEE 802.5及其類似。WAN技術包括,但不以僅限於,點對點連接、迴路交換網絡,如集成服務數字網絡(ISDN)和其變體、分組交換網絡和數字用戶線(DSL)。
通訊連接1350指用於連接網絡接口1348到總線1318的硬體/軟體。雖然為便於說明所示的通訊連接1350在計算機1312內部,它也可以在計算機1312外部。連接到網絡接口1348所需的硬體/軟體包括(僅作為例子)內部的和外部的技術,如包括常規電話升級數據機、有線數據機和DSL數據機的數據機、ISDN適配器和乙太網卡。
上述已說明包括本發明的例子。當然,為了說明本發明不可能說明組件或方法的每一個可能的組合,但熟悉技術的人應承認,可以對本發明進行很多進一步的組合及變換。因此,本發明應包括所有落在後附的權利要求的精神和範圍中的更改、修改和變體。進一步來說,對在說明書和權利要求中的使用的術語「包括」的範圍,這樣的術語是包含性的,類似於術語「包括」,如「包括」當在權利要求中作為常規的詞使用時對其解釋的方式。
權利要求
1.一種資料庫改變通知系統,其特徵在於,所述系統包括接收資料庫查詢註冊信息的服務代理;一個或多個存儲資料庫查詢註冊信息的至少部分的隊列;及一個或多個發送改變消息的通知發送服務。
2.如權利要求1所述的系統,其特徵在於,在SQL環境中使用。
3.如權利要求1所述的系統,其特徵在於,所述服務代理位於客戶機和伺服器中的一個上面。
4.如權利要求1所述的系統,其特徵在於,所述資料庫註冊信息至少包括唯一標識符、發送地址、隊列名稱、超時期間、通訊選項、協議、埠、驗證信息、安全選項和加密信息之一。
5.如權利要求1所述的系統,其特徵在於,所述一個或多個隊列位於服務代理中。
6.如權利要求1所述的系統,其特徵在於,所述服務代理為資料庫。
7.如權利要求1所述的系統,其特徵在於,所述存儲在一個或多個隊列中的資料庫查詢註冊信息的至少部分包括唯一標識符和發送地址。
8.如權利要求1所述的系統,其特徵在於,所述通知發送服務由服務代理、系統啟動、檢測機制和用戶之一激活。
9.如權利要求4所述的系統,其特徵在於,所述超時期間被用於確定查詢註冊過期期間。
10.如權利要求4所述的系統,其特徵在於,基於預設值、資料庫查詢註冊信息、概率、統計、神經網絡和自適應技術之一選擇所述存儲資料庫查詢註冊信息的至少部分的隊列。
11.如權利要求4所述的系統,其特徵在於,所述發送地址被用於確定改變消息的目的地。
12.如權利要求4所述的系統,其特徵在於,所述唯一標識符被用於發送資料庫改變通知到關聯的客戶機組件。
13.如權利要求12所述的系統,其特徵在於,所述所述資料庫改變通知至少包括事件和觸發事件的標準之一。
14.如權利要求1所述的系統,其特徵在於,所述改變消息包括唯一標識符。
15.如權利要求4所述的系統,其特徵在於,所述資料庫查詢註冊信息與原始的、變換的和可查詢的結果關聯。
16.如權利要求1所述的系統,其特徵在於,所述一個或多個存儲資料庫查詢註冊信息的隊列與來自位於一個或多個目的地的一個或多個組件的一個或多個查詢關聯。
17.如權利要求1所述的系統,其特徵在於,通過在類似的隊列中存儲返回類似的結果的已註冊的查詢的資料庫查詢註冊信息,及在類似的隊列中存儲和類似的組件或目的地關聯的已註冊的查詢的資料庫查詢註冊信息兩者之一對同類的存儲使用所述一個或多個隊列。
18.如權利要求1所述的系統,其特徵在於,所述一個或多個通知發送服務訪問類似的隊列。
19.如權利要求1所述的系統,其特徵在於,至少一個通知發送服務訪問一個或多個有來自多個客戶機的資料庫查詢註冊信息隊列,其中至少一個通知發送服務可以發送改變消息到多個客戶機。
20.一種資料庫查詢註冊和消息發送系統,其特徵在於,所述系統包括接收資料庫查詢註冊消息和資料庫改變請求的伺服器;幫助使用資料庫查詢註冊信息的服務代理;存儲資料庫查詢註冊信息的至少部分的隊列;及對服務代理操作並且能夠訪問存儲在隊列中的資料庫查詢註冊信息的至少部分以構建改變消息的通知發送服務。
21.如權利要求20所述的系統,其特徵在於,所述伺服器為基於SQL的伺服器。
22.如權利要求21所述的系統,其特徵在於,所述一個或多個資料庫查詢註冊消息包括基於標記語言的文件。
23.如權利要求20所述的系統,其特徵在於,所述資料庫查詢註冊信息至少包括唯一標識符和發送地址。
24.如權利要求20所述的系統,其特徵在於,所述資料庫查詢註冊信息包括隊列名稱、超時期間、驗證信息、加密選項、發送服務保持激活的時間長度、一旦發生改變是否保留或去除註冊的選項,及同步還是異步發送改變的消息的選項中的一個或多個。
25.如權利要求20所述的系統,其特徵在於,進一步包括資料庫改變檢測機制。
26.如權利要求20所述的系統,其特徵在於,通過使用從資料庫查詢註冊信息中抽取的隊列名稱、預設的隊列名稱、用戶定義的隊列名稱和最優選擇的隊列名稱之一來確定所述隊列。
27.如權利要求20所述的系統,其特徵在於,進一步包括存儲來自隊列的資料庫查詢註冊信息的至少部分,並隨後向通知發送服務提供資料庫查詢註冊信息的至少部分的中間組件。
28.如權利要求27所述的系統,其特徵在於,所述中間組件包括日誌文件和緩衝。
29.如權利要求20所述的系統,其特徵在於,進一步包括伺服器外部的對查詢結果的存儲。
30.如權利要求29所述的系統,其特徵在於,所述外部存儲包括高速緩存。
31.如權利要求20所述的系統,其特徵在於,進一步包括和一個或多個已註冊的資料庫關聯並可以訪問一個或多個隊列的多個通知發送服務。
32.如權利要求20所述的系統,其特徵在於,所述通知發送服務可以在確認資料庫改變請求之前、與確認資料庫改變請求同時或在確認資料庫改變請求之後發送改變消息,其中所選擇的發送技術基於預設值、資料庫查詢註冊信息和使用信息之一。
33.如權利要求20所述的系統,其特徵在於,所述通知發送服務基於時間絕對長度、一些要服務的隊列項和一段停止的時間保持激活一段時間。
34.如權利要求33所述的系統,其特徵在於,所述一段時間基於預設值、資料庫查詢註冊信息、伺服器負載和自適應技術之一。
35.一種資料庫查詢註冊和通知系統,其特徵在於,所述系統包括通過提供資料庫查詢註冊信息幫助資料庫查詢的註冊的註冊組件;及接收一個或多個改變消息並幫助發送資料庫改變通知的通知運行時間服務。
36.如權利要求35所述的系統,其特徵在於,所述註冊組件使用資料庫查詢註冊信息來構建基於XML的消息。
37.如權利要求35所述的系統,其特徵在於,所述通知運行時間服務從改變消息中抽取唯一標識符並使用該唯一標識符來發送資料庫改變通知到關聯的組件。
38.如權利要求35所述的系統,其特徵在於,所述一個或多個資料庫改變通知至少包括事件和表面發生了改變的標誌之一。
39.一種資料庫查詢註冊、改變消息和通知系統,其特徵在於,所述系統包括幫助註冊資料庫查詢的相關性組件;發送資料庫查詢註冊信息的服務代理;存儲資料庫查詢註冊信息的部分的隊列;及在資料庫改變會影響隨後的查詢的結果時提供改變消息的通知發送服務。
40.如權利要求39所述的系統,其特徵在於,所述相關性組件進一步提供註冊標識符,所述註冊標識符至少包括和一個已註冊的查詢關聯的全局唯一標識符(GUID),其中關聯的鑑定結果導致本質上類似的客戶機動作。
41.如權利要求39所述的系統,其特徵在於,進一步包括向所述相關性組件提供發送地址的通知運行時間服務。
42.如權利要求41所述的系統,其特徵在於,進一步包括向所述相關性組件提供發送地址的通用監聽程序。
43.如權利要求39所述的系統,其特徵在於,所述資料庫查詢註冊信息包括隊列名稱、發送地址、超時期間和唯一標識符。
44.如權利要求42所述的系統,其特徵在於,所述選擇通用監聽程序和通知運行時間服務之一是部分基於預設值、客戶機能力、資料庫查詢註冊信息、配置、統計和自適應技術的。
45.如權利要求41所述的系統,其特徵在於,所述通知運行時間服務在操作上通過通訊協議連接到通知發送服務。
46.如權利要求42所述的系統,其特徵在於,所述通用監聽程序在操作上通過通訊協議連接到通知發送服務。
47.如權利要求39所述的系統,其特徵在於,進一步包括使用驗證證書來提供安全消息發送。
48.如權利要求41所述的系統,其特徵在於,進一步包括幫助相關性組件對通知運行時間服務註冊的相關性交換機。
49.如權利要求42所述的系統,其特徵在於,進一步包括幫助相關性組件對通用監聽程序註冊的相關性監聽程序。
50.如權利要求48所述的系統,其特徵在於,如果相關性交換機還未激活並且接收到註冊資料庫查詢的請求,則所述相關性組件啟動相關性交換機以對通知運行時間服務註冊。
51.如權利要求39所述的系統,其特徵在於,使用包括異步和同步資料庫改變確認和資料庫改變消息發送的技術來提高可伸縮性和數據一致性之一。
52.一種在資料庫改變時接收通知的方法,其特徵在於,所述方法包括向伺服器提供資料庫查詢註冊信息;在隊列中存儲資料庫查詢註冊信息的至少部分;及使用資料庫查詢註冊信息的至少部分來構建並發送改變消息。
53.如權利要求52所述的方法,其特徵在於,所述資料庫查詢註冊信息包括隊列名稱、發送地址、超時期間和唯一標識符。
54.如權利要求52所述的方法,其特徵在於,進一步包括檢測將改變已註冊的查詢的結果的資料庫改變。
55.如權利要求52所述的方法,其特徵在於,進一步包括使用服務代理來幫助在隊列中存儲資料庫查詢註冊信息並激活通知發送組件來處理隊列中的消息。
56.如權利要求52所述的方法,其特徵在於,進一步包括使用通知發送服務,所述通知發送服務在改變消息中使用資料庫查詢註冊信息的至少部分,並使用資料庫查詢註冊信息的至少部分來發送所述改變消息。
57.一種在兩個或多個計算機組件間傳送的數據包,便於資料庫查詢註冊、資料庫改變檢測及資料庫改變通知,包括資料庫查詢註冊信息,它與註冊的資料庫查詢關聯、存儲在隊列中、並用於構建並傳送用於發送資料庫改變通知的改變信息。
58.一種計算機可讀媒體,存儲資料庫查詢註冊、檢測和通知系統的計算機可執行組件,包括存儲資料庫查詢註冊信息的隊列;傳送用來通知已註冊接收通知用戶的改變信息的通知發送服務;及連接到隊列和通知發送服務以向隊列提供資料庫查詢註冊信息並激活通知發送服務的服務代理器。
59.一種註冊資料庫查詢的系統,其特徵在於,包括註冊資料庫查詢的裝置;檢測改變已註冊查詢結果的資料庫改變的裝置;提供表示後次查詢結果可以與前次查詢結果不同的信息改變的裝置。
全文摘要
本發明涉及提供這樣的系統和方法,所述系統和方法在已註冊的資料庫查詢隨後的查詢結果由於資料庫改變而發生改變時進行通知。所述系統和方法使用服務代理來幫助在隊列中存儲和已註冊的資料庫查詢關聯的資料庫查詢註冊信息並激活通知發送服務。在激活期間,通知發送服務可以訪問隊列來獲取資料庫查詢註冊信息。然後通知發送服務可以構建並發送改變消息。改變消息可以被用來幫助通知已註冊為在查詢結果改變和/或已存儲的查詢結果變得無效時接收通知的組件。可以用各種資料庫註冊、資料庫改變檢測和資料庫改變消息接收機制來實現本發明。進一步來說,本發明可以用在客戶機/伺服器環境中,如基於SQL的環境。
文檔編號G06F12/00GK1534519SQ20041003224
公開日2004年10月6日 申請日期2004年3月26日 優先權日2003年3月28日
發明者M·J·皮索, S·桑達雷杉, R·P·帕姆拉帕蒂, C·克萊納曼, P·卡斯楚, M J 皮索, 固羋, 帕姆拉帕蒂, 襯陝, 錮諮 申請人:微軟公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀