專利名稱:用于數(shù)據(jù)庫跟蹤的計劃性檢索和重放的api的制作方法
技術(shù)領域:
本發(fā)明涉及計算,尤其涉及數(shù)據(jù)庫行動和性能的分析,以及允許數(shù)據(jù)庫發(fā)出的跟蹤數(shù)據(jù)的可訂制的、自動化的檢索和重放的應用程序編程接口。
背景技術(shù):
數(shù)據(jù)庫包含數(shù)據(jù)集合,一般描述一個或多個相關組織的活動。例如,大學數(shù)據(jù)庫可以包括關于諸如學生、教師、課程和教室等實體的信息,以及關于諸如參加課程的學生、授課教師和上課所用教室等實體之間的關系的信息。數(shù)據(jù)庫管理系統(tǒng)或DBMS是被設計成幫助維護和利用大數(shù)據(jù)集合的軟件。然而,出于說明本文獻的目的,術(shù)語“數(shù)據(jù)庫”或“數(shù)據(jù)庫服務器”是指數(shù)據(jù)集合和/或DBMS軟件的任一個或兩者。因此,圖1中的數(shù)據(jù)庫100可以視作數(shù)據(jù)集合和DBMS兩者。
使用許多種類型的數(shù)據(jù)庫。第一個數(shù)據(jù)庫模型被很大程度上歸功于20世紀60年代初期通用電氣公司的查爾斯·巴赫曼(Charles Bachman)。這被稱為集成數(shù)據(jù)存儲(Integrated Data Store),并遵循網(wǎng)絡數(shù)據(jù)模型。20世紀60年代后期,IBM開發(fā)了信息管理系統(tǒng)(Information Management System),該系統(tǒng)構(gòu)成了分層數(shù)據(jù)模型的基礎。1970年,IBM的埃德加·考特(Edgar Codd)提出了一種關系型數(shù)據(jù)模型,該模型被證明是數(shù)據(jù)庫系統(tǒng)發(fā)展史上的分水嶺。關系型數(shù)據(jù)庫的流行改變了商業(yè)前景。人們廣泛地認識到它們的好處,并且用于管理企業(yè)數(shù)據(jù)的數(shù)據(jù)庫的使用成為一種標準操作。關系型數(shù)據(jù)庫是目前使用的主要模型。
各種DBMS產(chǎn)品,如MICROSOFT SQL SERVER、IBM DB2、ORACLEDATABASE以及SYBASEIQ,已經(jīng)大大擴展了數(shù)據(jù)庫的性能。數(shù)據(jù)庫可以存儲許多種數(shù)據(jù)類型,如圖像和文本,并且可以對所存儲數(shù)據(jù)執(zhí)行復雜查詢。許多廠商已經(jīng)開發(fā)出專用系統(tǒng),用于創(chuàng)建數(shù)據(jù)倉庫、合并來自多個數(shù)據(jù)庫的數(shù)據(jù)以及進行專門的分析。
數(shù)據(jù)庫已經(jīng)進入因特網(wǎng)時代。普遍使用數(shù)據(jù)庫來存儲通過Web瀏覽器訪問的數(shù)據(jù)。通過Web可訪問的形式生成查詢,并且使用諸如超文本標記語言(HTML)或可擴充標記語言(XML)等可以在瀏覽器中顯示的標記語言來格式化應答。目前激動人心的前景,如多媒體數(shù)據(jù)庫、交互式視頻、流數(shù)據(jù)、數(shù)字圖書館、大量科研項目以及企業(yè)數(shù)據(jù)整合和數(shù)據(jù)挖掘,正推動著該領域的發(fā)展。通過全球計算機網(wǎng)絡訪問數(shù)據(jù)庫已是普遍現(xiàn)象。
參見圖1,多個客戶機101、102和103可以向數(shù)據(jù)庫100請求服務。一般地,服務請求101a、102a和103a是向數(shù)據(jù)庫要求符合特定標準的結(jié)構(gòu)化查詢語言(SQL)查詢。例如,可以通過服務請求101a請求以上所介紹的數(shù)據(jù)庫,以返回其姓為“Smith”的所有學生的列表。數(shù)據(jù)庫100可確定處理服務請求101a、收集合適的數(shù)據(jù)、格式化所收集的數(shù)據(jù)以及將數(shù)據(jù)發(fā)回給客戶機101的最佳方法??赡芤蟋F(xiàn)代數(shù)據(jù)庫100同時執(zhí)行數(shù)以百計或數(shù)以千計的這類操作。
除了檢索數(shù)據(jù)之外,也可以請求數(shù)據(jù)庫更新數(shù)據(jù)。例如,如果數(shù)據(jù)庫100是一個具有賬戶信息的銀行數(shù)據(jù)庫,每當有該特定賬戶的存款或取款時,都需要更新數(shù)據(jù)。數(shù)據(jù)庫的另一個功能是組織對數(shù)據(jù)的訪問,以確保以有序的方式更新數(shù)據(jù),并為所作出的多個請求提供數(shù)據(jù)的最新版本。
沒有存儲、更新和管理對數(shù)據(jù)的訪問的單一的最好方法。存儲數(shù)據(jù)的方式的改變可以大大提高數(shù)據(jù)庫的性能。同樣,管理數(shù)據(jù)請求和數(shù)據(jù)更新的技術(shù)的改變也可以提高性能。另一方面,數(shù)據(jù)布局和訪問技術(shù)的改變可以引起數(shù)據(jù)庫的正確運行方面的問題。這種改變可能導致差的性能、不能處理某些請求、所收集和所返回的數(shù)據(jù)的錯誤以及數(shù)據(jù)庫的不穩(wěn)定。
結(jié)果,需要監(jiān)視和分析現(xiàn)代數(shù)據(jù)庫的性能。通過理解促使數(shù)據(jù)庫良好運行或反之遇到問題的條件,可以改進數(shù)據(jù)庫。作為對這種需求的響應,許多現(xiàn)代數(shù)據(jù)庫都具備發(fā)出跟蹤數(shù)據(jù)流104b的能力。
跟蹤數(shù)據(jù)流104b包含關于數(shù)據(jù)庫100的各種操作的信息。這種流104b可以包含被認為與分析有關的任何信息。一般而言,跟蹤數(shù)據(jù)流104b包含描述對數(shù)據(jù)庫所作出的各種服務請求101a、102a和103a的信息。這類描述可以包括所作出的請求、請求時間以及發(fā)出請求的客戶機。跟蹤數(shù)據(jù)流104b中也可以包含由數(shù)據(jù)庫所返回的任何輸出。在現(xiàn)代數(shù)據(jù)庫增加其所提供的服務量的同時,跟蹤數(shù)據(jù)流104b可以包括的數(shù)據(jù)種類也在增加。
一般地,對跟蹤數(shù)據(jù)流104b的訪問是通過客戶機計算機104進行的。客戶機計算機104可以向數(shù)據(jù)庫100發(fā)送跟蹤數(shù)據(jù)請求104a,從而打開到跟蹤數(shù)據(jù)流104b的連接。傳統(tǒng)上,分析器(profiler)應用程序105安裝在客戶機計算機104上。分析器105允許用戶通過圖形用戶界面(GUI)啟動會話。分析器可以在窗口108里顯示所累積的跟蹤數(shù)據(jù)。分析器可以提供允許訪問和操作跟蹤數(shù)據(jù)104a的多個功能110的項目菜單。這些功能110中的一些在圖1中的示例性分析器GUI 105中示出,如保存、打開、打印、重放等。使用這種分析器應用程序105,用戶可以指定待分析的數(shù)據(jù)庫100、打開到對應的跟蹤數(shù)據(jù)流104b的連接、以及保存任意數(shù)量的位置中收集的跟蹤數(shù)據(jù),如在文件中、表中或服務器上。
而且,用戶可以指示分析器105重放跟蹤數(shù)據(jù)。跟蹤重放允許生成一系列跟蹤數(shù)據(jù)中所表示的查詢并在數(shù)據(jù)庫上運行。因此,例如如果對經(jīng)歷問題的數(shù)據(jù)庫進行改變或改進,用戶可以對所改進的數(shù)據(jù)庫運行一組查詢,以判定其是否被適當?shù)卣{(diào)整。
在數(shù)據(jù)庫激增時,分析和改進數(shù)據(jù)庫的成本也增加。為單個數(shù)據(jù)庫保持所有跟蹤數(shù)據(jù)的連續(xù)存儲,成本是非常高的,費用隨著多個數(shù)據(jù)庫一起增加。因此必須在策略上選擇何時訪問和存儲跟蹤數(shù)據(jù)。如果第一數(shù)據(jù)庫經(jīng)歷一個特定的問題,可以要求它針對多個其它數(shù)據(jù)庫重放與該問題相對應的跟蹤。有時在重放之前修改跟蹤數(shù)據(jù),以收集其它信息并潛在地減少數(shù)據(jù)庫問題的可能原因。也可以針對大量數(shù)據(jù)庫重放這些被修改的跟蹤。因此,收集、修改和重放會變成昂貴和麻煩的任務。數(shù)據(jù)庫跟蹤數(shù)據(jù)累積、分析和重放的傳統(tǒng)方式在操作分析器應用程序時需要太多的用戶時間。
鑒于以上所述的本行業(yè)中迄今為止無法預料的困難,需要改進收集和重放跟蹤數(shù)據(jù)的系統(tǒng)和方法,這種需求未經(jīng)確認且未能得到滿足。
發(fā)明內(nèi)容
考慮到本領域的上述缺點,本發(fā)明提供用于數(shù)據(jù)庫跟蹤數(shù)據(jù)的計劃性檢索和重放的系統(tǒng)和方法。多個對象——跟蹤和重放對象——可以被設計成在被用戶計算機進程調(diào)用時自動地執(zhí)行操作。跟蹤數(shù)據(jù)可以被保存到多個位置中的任何一個。它可以用于存儲或重放的目的??梢允褂枚喾N重放配置選項針對任何數(shù)據(jù)庫服務器來重放跟蹤數(shù)據(jù)。重放通知允許數(shù)據(jù)在被提交給數(shù)據(jù)庫執(zhí)行之前被改變,并允許即時檢查重放結(jié)果以及確認播放正確性。
跟蹤和重放對象從幾個方面大大簡化了跟蹤數(shù)據(jù)的可管理性。用戶進程的設計者現(xiàn)在可以使所跟蹤的數(shù)據(jù)庫服務器的安全審計和健康監(jiān)視完全自動化。也可以執(zhí)行新服務器發(fā)布和安全包的自動驗證。用戶進程可以使用所提供的對象靈活地訪問并操作數(shù)據(jù)庫跟蹤數(shù)據(jù)的檢索、存儲和重放。這類用戶進程可以被設計成以適合給定組織的特定需求的方式來使用本發(fā)明。
本發(fā)明的其它優(yōu)點和特征在下面描述。
參照附圖,進一步描述依照本發(fā)明的用于數(shù)據(jù)庫跟蹤的計劃性檢索和重放的API,附圖中圖1例示一個現(xiàn)有技術(shù)系統(tǒng),其中,分析器應用程序可以檢索、查看、存儲和重放反映數(shù)據(jù)庫的各種服務請求和/或數(shù)據(jù)庫執(zhí)行的其它操作的數(shù)據(jù)庫跟蹤;圖2a是一個方框圖,概括地表現(xiàn)適于結(jié)合本發(fā)明的各個方面使用的示例性計算設備的基本特征;圖2b是一個方框圖,表現(xiàn)適于結(jié)合本發(fā)明的各個方面使用的更詳細的示例性計算設備;圖2c例示一個示例性網(wǎng)絡化計算環(huán)境,其中可以實現(xiàn)計算機化的進程,包括本發(fā)明的那些進程;
圖3例示一個用于數(shù)據(jù)庫跟蹤數(shù)據(jù)的計劃性檢索和重放的API,其中,用戶對象可以被設計成使數(shù)據(jù)庫跟蹤數(shù)據(jù)的檢索、查看、存儲和重放自動化;圖4例示與數(shù)據(jù)庫跟蹤數(shù)據(jù)的檢索和存儲相關聯(lián)的各種功能,以及存儲、修改和重放跟蹤數(shù)據(jù)的請求,其中存儲包括文件、表和服務器中的存儲;圖5為實現(xiàn)本發(fā)明的API的各種對象的方案的優(yōu)選實施例提供一個UML(統(tǒng)一建模語言)圖表;圖6例示與數(shù)據(jù)庫跟蹤數(shù)據(jù)的重放相關聯(lián)的各種函數(shù),包括從文件、表或服務器進行的重放,以及開始、停止和暫停重放,另外還包括在重放期間提供多個通知選項,以及最后提供任何附加選項,如指定跟蹤源、重放模式和其它選項。
圖7例示用于示例性重放對象的類定義;圖8例示用于回調(diào)通知事件的示例性聲明;圖9例示用于IDataRecordChanger接口的示例性定義,其中該接口可以從IDataRecord接口繼承,如在本領域中所知道的IDataRecord接口;圖10例示用于跟蹤重放選項對象的示例性類定義;圖11顯示在重放數(shù)據(jù)庫跟蹤數(shù)據(jù)時可以選擇的兩種示例性重放模式;圖12例示與打算用于本發(fā)明的面向?qū)ο缶幋a技術(shù)結(jié)合使用的示例性對象。
具體實施例方式
在下面的描述和附圖中,闡明某些具體細節(jié)以提供對本發(fā)明的各種實施例的徹底理解。然而,為避免不必要地模糊本發(fā)明的各種實施例,通常與計算和軟件技術(shù)相關聯(lián)的某些眾所周知的細節(jié)在下文不再闡明。此外,相關領域內(nèi)的普通技術(shù)人員應當理解,他們可以實踐本發(fā)明的其它實施例而不需要下面所述的一個或多個細節(jié)。最后,盡管參照下文中的步驟和順序描述了各種方法,但本描述同樣是為了提供本發(fā)明的清楚的實施例,并且這些步驟和順序不應當被認為是實踐本發(fā)明所必需的。
本發(fā)明的各個方面涉及用于數(shù)據(jù)庫跟蹤數(shù)據(jù)的計劃性檢索和重放的API。為了完全揭示這些方面,將從定義API、數(shù)據(jù)庫和跟蹤數(shù)據(jù)開始本描述。然后描述跟蹤數(shù)據(jù)的檢索和重放。然后將討論計劃性檢索和重放的各個方面和實現(xiàn)。最后,提供對適于與發(fā)明的各種實施例一起使用的通用計算和網(wǎng)絡環(huán)境的描述。
應用程序編程接口(“API”)是允許其它進程一起工作的計算機進程或機制。在運行操作系統(tǒng)和諸如MICROSOFT WORD和ADOBE ACROBAT READER等各種應用程序的個人計算機的常用設置中,API允許應用程序與操作系統(tǒng)通信。應用程序向操作系統(tǒng)API發(fā)出調(diào)用以調(diào)用操作系統(tǒng)服務。操作系統(tǒng)API的實際代碼位于動態(tài)鏈接庫(“DLL”)的集合。
數(shù)據(jù)庫軟件也可以提供API。數(shù)據(jù)庫API允許進程向數(shù)據(jù)庫發(fā)出調(diào)用以調(diào)用數(shù)據(jù)庫服務。現(xiàn)代數(shù)據(jù)庫軟件如MICROSOFT SQL SERVER、IBM DB2、ORACLE DATABASE和SYBASE IQ全都提供API。目前大多數(shù)企業(yè)應用程序都使用數(shù)據(jù)庫,因此也使用允許應用程序訪問和操作那些數(shù)據(jù)庫的API。需要向那些應用程序,無論是客戶機端、中間層還是服務器端應用程序,盡可能地提供反應最迅速的、伸縮性最好的數(shù)據(jù)庫API。這對于數(shù)據(jù)訪問密集型應用程序來說尤為真實。此處提供的API可以合并到操作系統(tǒng)API、數(shù)據(jù)庫API、其它應用程序或服務的API中,或者可以是獨立的。此處提供的功能不受特定設備或主機軟件環(huán)境的限制。
可以用計算機可執(zhí)行指令的形式實現(xiàn)API,就像實現(xiàn)操作系統(tǒng)、應用程序或其服務被調(diào)用的其它軟件那樣。這些指令可以具體表現(xiàn)為許多不同的形式。最后,指令被簡化為計算機可讀的比特,供計算機處理器處理。然而,在生成計算機可讀比特之前,可能還有將API實現(xiàn)轉(zhuǎn)換為各種形式的多層功能。例如,在C++中實現(xiàn)的API將首先表現(xiàn)為一系列人可讀的代碼行。然后由編譯軟件將API編譯為機器可讀的代碼,供在處理器上執(zhí)行。
最近,諸如C++等編程語言的激增,以及諸如個人計算機環(huán)境、由APPLE電腦、手持式計算設備、蜂窩式移動電話等等提供的環(huán)境等執(zhí)行環(huán)境的激增,已經(jīng)帶來了對諸如API實現(xiàn)等編程代碼的原始實現(xiàn)與簡化為比特以供在設備上處理之間的其它功能層的需求。目前,最初用諸如C++等高級語言創(chuàng)建的計算機程序,可能首先被轉(zhuǎn)換為諸如微軟中間語言(MICROSOFTIntermediate Language,MSIL)或JAVA等中間語言。然后,在特定環(huán)境中執(zhí)行之前,即時(Just-in-Time,JIT)編譯器編譯中間語言。這允許代碼在許多種處理環(huán)境中運行而不需要分發(fā)多個已編譯版本。鑒于可以實現(xiàn)API的許多級別,以及用于創(chuàng)建、管理和處理代碼的連續(xù)進化技術(shù),本發(fā)明不限于任何特定編程語言或執(zhí)行環(huán)境。為描述本發(fā)明的各個方面而選擇的實現(xiàn)是受管的MICROSOFTNET類庫。這種選擇為實踐和描述本發(fā)明提供便利的環(huán)境,但并不意味著將本發(fā)明限制為這種實現(xiàn)。
此處所闡明的API特征為自動化數(shù)據(jù)庫跟蹤數(shù)據(jù)的檢索和重放提供了一種工具。圖3中提供構(gòu)想的系統(tǒng)和方法的各種實施例。那些對分析數(shù)據(jù)庫性能感興趣的人可以創(chuàng)建用戶對象330、331、332,這些對象可以根據(jù)他們各自的需要使用API309來收集、操作和重放跟蹤數(shù)據(jù)304b。不能夠預見由用戶對象330、331、332執(zhí)行的潛在操作,因為它們將會隨大量程序設計者的技術(shù)和需求而改變。然而,所提供的API 309為可能被創(chuàng)建的各種對象330、331、332提供穩(wěn)健的支持。盡管本發(fā)明不限于本文獻中所揭示的諸功能310的集合,但是不管是單獨的還是作為一個組,所提供的諸功能310都被認為是新穎的和有用的。這些功能310將在下面結(jié)合跟蹤數(shù)據(jù)304b的檢索和重放的自動化時進一步詳細解釋。
用戶對象330、331、332以及例示中任何其它被標識為對象的元素是軟件的分立單元,它們一般使用面向?qū)ο缶幊碳夹g(shù)來生成。此外,API 309本身可以被實現(xiàn)為一個或多個對象。圖12例示了一個這樣的示例性對象,它圖示了典型COM對象1200的特征。本行業(yè)中可以獲得并廣泛使用其它對象類型,此處所述的對象1200被指定為用于說明目的的非限制的例子。諸對象如1200通常支持一個或多個接口1202、1203、1204,其中的每一個都包括方法1205。方法1205一般是執(zhí)行特定動作并可以被軟件調(diào)用的函數(shù)或過程,例如,被另一個對象如330、331和332調(diào)用。這類發(fā)出調(diào)用的軟件被稱作“服務器”對象1200的“客戶機”。構(gòu)成接口1203的諸方法1205通常在某些方面相互關聯(lián)。一般而言,通過調(diào)用對象接口1202、1203、1204中的諸方法1205,客戶機可以訪問由對象1200提供的服務。通常禁止客戶機訪問對象的數(shù)據(jù)。應當注意,此處和權(quán)利要求書中所述的由對象實現(xiàn)的功能也可以通過被設計成相互接口的多個對象來實現(xiàn)。
一般地,對象1200是特定類的一個實例。例如,一個類可能包含提供用于打開到數(shù)據(jù)庫服務器的連接的服務的對象,而另一個類可能包含用于將數(shù)據(jù)寫入文件的對象。一般地,程序設計者在運行該對象的實例之前知道該對象的類。對象的類可以在類庫中查到。這種庫可以訪問所有可用的對象類的目錄。客戶機可以調(diào)用庫中的函數(shù),該函數(shù)指定它所要的對象的類,以及對其它需要指針的第一個所支持的接口。然后,該庫促使實現(xiàn)該類的對象的服務器開始運行。該庫也將指向新例示的對象上的所請求接口的指針回傳給作出啟動的客戶機。然后該客戶機可以直接向該對象要求指向該對象支持的任何其它接口的指針。
諸對象所支持的接口一般被認為是在對象及其客戶機之間的一個合同。在接口定義接口的方法時,對象保證支持接口的方法,并且諸客戶機保證正確地調(diào)用這些方法。因此,對象和諸客戶機必須在明確地標識每個接口、描述或定義的公共方法、接口的諸方法以及如何實現(xiàn)接口的具體定義方面達成一致。
因此,諸對象可以根據(jù)它們繼承的接口參數(shù)和它們繼承的類參數(shù)來描述。例如,當對象的類具有用于將數(shù)據(jù)寫入文件的函數(shù),繼承該類的實例也可以將寫數(shù)據(jù)入文件,并且具有該實例中所提供的任何其它特征。當類支持特定接口,該類的實例繼承“合同”并因此也支持該接口。本發(fā)明的諸方面通過對象來實現(xiàn),對象通常符合對象、類、繼承和接口的定義的編程原理和理解。然而,應當清楚,面向?qū)ο蟮木幊碳夹g(shù)的修改和改進不斷發(fā)生,本發(fā)明不限于特定類型或具有任何特定特征的對象。所提供的API可以通過目前使用或?qū)黹_發(fā)的任何類型的對象來實現(xiàn)。
數(shù)據(jù)庫是數(shù)據(jù)的集合,一般描述一個或多個相關組織的活動。例如,大學數(shù)據(jù)庫可能包括關于諸如學生、教師、課程和教室等實體的信息,以及關于諸如參加課程的學生、授課教師和上課所用教室等實體之間的關系的信息。數(shù)據(jù)庫管理系統(tǒng)或DBMS是被設計成幫助維護和利用大量數(shù)據(jù)集合的軟件。然而,出于說明本文獻的目的,術(shù)語“數(shù)據(jù)庫”或“數(shù)據(jù)庫服務器”是指數(shù)據(jù)集合和/或DBMS軟件兩者。因此,圖1中的數(shù)據(jù)庫100、圖3中的數(shù)據(jù)庫300和圖6中的數(shù)據(jù)庫640示出包括數(shù)據(jù)集合和DBMS兩者的數(shù)據(jù)庫服務器。需要的時候再作進一步的區(qū)別。
使用許多種類型的數(shù)據(jù)庫。第一個數(shù)據(jù)庫模型被廣泛地歸功于20世紀60年代初期通用電氣公司的查爾斯·巴赫曼(Charles Bachman)。這被稱為集成數(shù)據(jù)存儲(Integrated Data Store),它采用網(wǎng)絡數(shù)據(jù)模型。20世紀60年代后期,IBM開發(fā)了信息管理系統(tǒng)(Information Management System),該系統(tǒng)構(gòu)成了分層數(shù)據(jù)模型的基礎。1970年,IBM的埃德加·考特(Edgar Codd)提出了關系型數(shù)據(jù)模型,該模型被證明是數(shù)據(jù)庫系統(tǒng)發(fā)展史上的分水嶺。關系數(shù)據(jù)庫的流行改變了商業(yè)前景。人們廣泛地認識到它們的好處,用于管理企業(yè)數(shù)據(jù)的數(shù)據(jù)庫的使用成為一種標準操作。盡管關系型數(shù)據(jù)庫是目前使用的主要模型,本發(fā)明的各個方面適用于與當前使用或?qū)黹_發(fā)的能夠發(fā)出數(shù)據(jù)的任何數(shù)據(jù)庫。
各種DBMS產(chǎn)品,如MICROSOFT SQL SERVER、IBM DB2、ORACLEDATABASE以及SYBASE IQ,已經(jīng)大大擴展了數(shù)據(jù)庫的性能。數(shù)據(jù)庫可以存儲許多種數(shù)據(jù)類型,如圖像和文本,并且可以對所存儲數(shù)據(jù)執(zhí)行復雜查詢。許多廠商已經(jīng)開發(fā)出專用系統(tǒng),用于創(chuàng)建數(shù)據(jù)庫、合并來自多個數(shù)據(jù)庫的數(shù)據(jù)以及進行專用分析。所有這些產(chǎn)品和數(shù)據(jù)庫配置適于與此處的系統(tǒng)和方法結(jié)合使用。
數(shù)據(jù)庫已經(jīng)進入因特網(wǎng)時代。普遍使用數(shù)據(jù)庫存儲通過Web瀏覽器訪問的數(shù)據(jù)。通過Web可訪問的形式生成查詢,并且使用可以在瀏覽器中顯示的標記語言,如超文本標記語言(HTML)或可擴充標記語言(XML)來格式化應答。由于越來越多的數(shù)據(jù)可以在線獲得并更容易通過計算機網(wǎng)絡來訪問,數(shù)據(jù)庫的重要性不斷增加。目前激動人心的前景,如多媒體數(shù)據(jù)庫、交互視頻、流數(shù)據(jù)、數(shù)字圖書館、大量科研項目以及企業(yè)數(shù)據(jù)整合和數(shù)據(jù)庫挖掘,正推動著該領域的發(fā)展。在全球計算機網(wǎng)絡上訪問數(shù)據(jù)庫已是普遍現(xiàn)象,因此應當清楚,可以使用此處提供的系統(tǒng)和方法而不考慮客戶機和數(shù)據(jù)庫之間的距離或連接類型。
提供了一種用于數(shù)據(jù)庫跟蹤數(shù)據(jù)的計劃性檢索和重放的API。以上一般地描述了API和數(shù)據(jù)庫。然后將討論跟蹤數(shù)據(jù),接著討論跟蹤數(shù)據(jù)的檢索和重放,再討論計劃性檢索和重放,這些討論將用來特別指出以上一般地描述的API的特征。
跟蹤數(shù)據(jù)是指示數(shù)據(jù)庫操作的數(shù)據(jù)。典型的數(shù)據(jù)庫,如圖3中的300,將被請求為任意數(shù)量的客戶機,如301、302、303執(zhí)行服務。這類請求通常是用結(jié)構(gòu)化查詢語言(SQL)表示的查詢,盡管隨著諸如300等數(shù)據(jù)庫變得更復雜并提供更大范圍的服務,請求的類型和數(shù)量也在增加?,F(xiàn)代數(shù)據(jù)庫能夠發(fā)出包含關于請求和對應數(shù)據(jù)庫操作的信息的跟蹤數(shù)據(jù)流304b。跟蹤數(shù)據(jù)可以用于分析請求數(shù)據(jù)庫300做什么以及數(shù)據(jù)庫300如何滿足請求。通過這種分析,可以根據(jù)如何存儲數(shù)據(jù)、如何管理查詢以及現(xiàn)代數(shù)據(jù)庫提供的許多其它服務來改進數(shù)據(jù)庫。
跟蹤數(shù)據(jù)可以用任何格式從數(shù)據(jù)庫發(fā)出。一般地,因為數(shù)據(jù)庫提供連續(xù)的服務,跟蹤數(shù)據(jù)作為根據(jù)數(shù)據(jù)傳輸協(xié)議組織的持續(xù)數(shù)據(jù)流304b發(fā)出。通過打開到跟蹤數(shù)據(jù)流304b的連接,客戶機304可以分析并記錄數(shù)據(jù)庫300的操作。在這點上,跟蹤數(shù)據(jù)304b一般被存儲在如圖4所表示的三個位置之一。這些位置包括文件403、表404和服務器405。因為本行業(yè)內(nèi)都理解數(shù)據(jù)庫跟蹤數(shù)據(jù)304b,此處就沒有必要詳細解釋用于記錄跟蹤數(shù)據(jù)304的精確格式。應當明白,跟蹤數(shù)據(jù)304b可以用任何格式記錄。然而,一般而言,跟蹤數(shù)據(jù)的格式,不論是被存儲在文件403、表404或服務器405,可以包含多個記錄或傳達某種獨立含義的分立數(shù)據(jù)單元。
作為跟蹤數(shù)據(jù)304b如何一般地被劃分成諸記錄的例子,考慮存儲跟蹤數(shù)據(jù)的典型文件403。這一文件403可以包括下列記錄頭部2字節(jié)——頭部長度48字節(jié)——提供者名字2字節(jié)——提供者版本48字節(jié)——定義類型4字節(jié)——文件選項48字節(jié)——所跟蹤的服務名稱數(shù)據(jù)段每個新的數(shù)據(jù)庫事件通常以TRACE_BEGIN_RECORD特定列開始,其后跟隨一個字節(jié),代表后面跟隨著一個事件標識符以及事件的全部長度的列的長度。然后描述事件的任何其它的列。每個事件列記錄可以包含對應于列標識符、數(shù)據(jù)長度和數(shù)據(jù)本身的信息。數(shù)據(jù)長度通常是一個單字節(jié)字段。
以上提供跟蹤數(shù)據(jù)如何被劃分成跟蹤數(shù)據(jù)文件403中的諸記錄的例子。此處不提供存儲在表中和存儲在服務器中的跟蹤數(shù)據(jù)的示例性記錄劃分,因為這些格式的跟蹤數(shù)據(jù)的存儲是常見的,并且一般而言包含將數(shù)據(jù)分割成類似于以上的記錄,盡管改變一些參數(shù)以用所需要的布局格式化跟蹤數(shù)據(jù)。上述例子足以示出,跟蹤數(shù)據(jù)可以被劃分成若干記錄,而且可以用多種方式來組織諸記錄。本發(fā)明不限于跟蹤數(shù)據(jù)文件、跟蹤數(shù)據(jù)表或跟蹤數(shù)據(jù)服務器中的記錄的特定數(shù)量或布局。
跟蹤數(shù)據(jù)的檢索是指電子地獲得跟蹤數(shù)據(jù)。在本發(fā)明的各種實施例中,檢索可能發(fā)生在像圖3中的那樣的情形中,其中客戶機304將對跟蹤數(shù)據(jù)的請求304發(fā)送給數(shù)據(jù)庫300。請求304促使數(shù)據(jù)庫300或某些其它中間進程(未示出)將跟蹤數(shù)據(jù)流304b發(fā)送到客戶機304。盡管圖3代表跟蹤數(shù)據(jù)的典型檢索,應當明白,任何進程或進程的部分可以在未示出的任何數(shù)量的設備上或在它們之間運行,正如下面參照示例性計算和網(wǎng)絡化環(huán)境所解釋的那樣。
跟蹤數(shù)據(jù)的檢索可以伴隨存儲所檢索的數(shù)據(jù),如圖4所示。跟蹤數(shù)據(jù)可以存儲在文件403、表404或服務器405中。注意,存儲跟蹤數(shù)據(jù)的進程可以包括來自數(shù)據(jù)庫300的初始信號的跟蹤數(shù)據(jù)流的某種轉(zhuǎn)換。正如以上所解釋的那樣,跟蹤數(shù)據(jù)可以根據(jù)存儲中所需要的數(shù)據(jù)的特定布局和呈現(xiàn)被格式化為多個記錄。正如圖4中所表示的那樣,所提供的API 401允許示例性用戶對象400請求跟蹤數(shù)據(jù)的檢索以及指定文件403、表404或服務器405中的跟蹤數(shù)據(jù)的存儲。提交給API 401的示例性請求410、411和412可以指定跟蹤數(shù)據(jù)的檢索。API的實現(xiàn)可以連接到合適的數(shù)據(jù)庫、檢索跟蹤數(shù)據(jù)流、并將合適的輸出寫入403、404或405。在各種實施例中,API可以被配置成自動地選擇默認存儲位置,如403、404或405,以供在示例性用戶對象400沒有指示任何存儲位置時使用。
跟蹤數(shù)據(jù)的重放是指促使數(shù)據(jù)庫執(zhí)行一系列操作,這些操作與在一組跟蹤數(shù)據(jù)中所表現(xiàn)的一系列操作相同或相關。例如,考慮存儲在文件403中的一組跟蹤數(shù)據(jù)。設想所述的跟蹤數(shù)據(jù)組導致數(shù)據(jù)庫300反常地執(zhí)行,例如將不正確的、反常的或不及時的結(jié)果返回給客戶機301,或者致使數(shù)據(jù)庫300不穩(wěn)定或崩潰。為研究導致反常的一系列事件,需要使數(shù)據(jù)庫300服從與導致反常的條件相同的條件。這種情況下,文件403中的合適的跟蹤數(shù)據(jù)組可以用于表示服務請求序列以復制以前的請求,如301a。提交這一請求序列相當于跟蹤數(shù)據(jù)的重放。注意,可能有許多重放跟蹤數(shù)據(jù)的理由,而研究反常只是一個例子。此處的系統(tǒng)和方法可以用于重放跟蹤數(shù)據(jù)而不考慮啟動這種重放的目的或意圖。
跟蹤數(shù)據(jù)的重放不需要針對與最初發(fā)出跟蹤的數(shù)據(jù)庫相同的數(shù)據(jù)庫。正如可以為跟蹤數(shù)據(jù)的檢索而選擇任何數(shù)據(jù)庫那樣,可以為重放選擇任何數(shù)據(jù)庫。這允許數(shù)據(jù)庫用于與擔負實際責任的數(shù)據(jù)庫相分離的測試目的。也允許根據(jù)需要針對多種數(shù)據(jù)庫平臺和產(chǎn)品重放跟蹤數(shù)據(jù)。
正如可以將文件403中的跟蹤數(shù)據(jù)重放到數(shù)據(jù)庫300那樣,可以重放表404或服務器405中的跟蹤數(shù)據(jù)。以這些不同格式儲存的數(shù)據(jù)需要合適的處理以適當?shù)馗袷交⑻峤挥糜谥胤诺母?,然而以任何格?03、404、405存儲的相同的跟蹤數(shù)據(jù)可以用于為數(shù)據(jù)庫300生成相同的重放序列。如圖4所示,示例性用戶對象400可以通過所提供的API 401請求跟蹤數(shù)據(jù)的重放。請求可以指定要重放的跟蹤數(shù)據(jù)——也可以通過生成請求410、411、412指示數(shù)據(jù)被存儲在文件403、表404或服務器405中,然后API實現(xiàn)430可以從跟蹤數(shù)據(jù)所在的文件403、表404或服務器405中檢索跟蹤數(shù)據(jù),并針對所指定的數(shù)據(jù)庫重放跟蹤數(shù)據(jù)。
有時在重放之前需要修改跟蹤數(shù)據(jù)。例如,可能懷疑某一類型的查詢是引起故障的原因。可疑類型的多個其它查詢可以在重放之前添加到所存儲的跟蹤數(shù)據(jù)組以測試這一推測?;蛘撸薷默F(xiàn)有跟蹤數(shù)據(jù)組各自的記錄可能是有利的。再次,可能還有一些在重放之前改變跟蹤數(shù)據(jù)的理由,本發(fā)明不限于使用此處的API的任何特定意圖。因為需要在重放之前改變跟蹤數(shù)據(jù),此處使用的術(shù)語重放所指的不僅是提交與所記錄的跟蹤數(shù)據(jù)的請求相同的一組請求,也是指提交與所記錄的跟蹤數(shù)據(jù)的請求相關的一組請求。正如圖4所表示的那樣,所提供的API允許示例性用戶對象400諸如在請求410、411和412中請求修改跟蹤數(shù)據(jù)。于是API 401的實現(xiàn)430可以修改所指定的跟蹤數(shù)據(jù),無論它位于文件403、表404還是服務器405。
提供一種用于數(shù)據(jù)庫跟蹤數(shù)據(jù)的計劃性檢索和重放的API。以上一般地描述API、數(shù)據(jù)庫、跟蹤數(shù)據(jù)以及跟蹤數(shù)據(jù)的檢索和重放。然后討論用于計劃性檢索和重放的系統(tǒng)和方法,這將用于特別地指出以上所一般地描述的API的其它特征。
對于這一文獻,術(shù)語計劃性是指可以由自動化的功能訪問。換言之,可以書寫觸發(fā)計劃性功能,而不需要或減少了人的干預的計算機化的指令。例如,考慮具有存儲在MICROSOFT WORD文檔中的一組數(shù)字的計算機用戶。用戶希望添加這些數(shù)字。這樣做的一種方法是使用計算器應用程序。計算機用戶可以打開計算器應用程序,并使用用于選擇合適數(shù)字的鼠標設備添加任何數(shù)字。但是計算器功能一般不具備編寫計劃性地檢索并添加數(shù)字的計算機程序的能力。要添加大量數(shù)字或許多數(shù)字組的用戶會發(fā)現(xiàn)將計算器應用程序用于這種任務是繁重的。
同樣,需要檢索和/或重放大量數(shù)據(jù)庫跟蹤數(shù)據(jù)或許多這類跟蹤數(shù)據(jù)的組的用戶,會發(fā)現(xiàn)使用分析器應用程序來“手工”完成這類任務是繁重的。相反,這類用戶可能傾向于編寫計劃性地檢索、存儲和重放跟蹤數(shù)據(jù)的程序。用戶可以指定什么時候檢索跟蹤數(shù)據(jù)、從哪里檢索它、如何存儲它、如何修改它、什么時候重放它,等等,正如此處結(jié)合各個方面和實施例所述的那樣。所有這些操作都可以按照用戶的指定計劃性地執(zhí)行。使用此處所述的系統(tǒng)和方法,可以大大促進這類程序的創(chuàng)建。
圖4和圖5中例示了依照本發(fā)明的各種實施例的跟蹤數(shù)據(jù)的檢索。圖4指出用于跟蹤數(shù)據(jù)的檢索的進程和上下文,而圖5例示用于提供計劃性檢索功能的對象和接口的實現(xiàn)。以上結(jié)合圖4討論了檢索,下面討論圖5中的示例性實現(xiàn)。
參照圖5,提供一個闡明用于依照此處的系統(tǒng)和方法的API實現(xiàn)的統(tǒng)一建模語言(UML)圖表。在圖5頂端,元素500提供給出連接信息,如用于連接到的服務器或數(shù)據(jù)庫、到圖5的其它對象的連接信息的功能。元素501提供用于可以由其它各種對象訪問的錯誤報告的函數(shù)。元素502是用于數(shù)據(jù)記錄的接口,元素504是用于檢索數(shù)據(jù)的接口。它是在隨MICROSOFTNET框架一起發(fā)布的System.Data名字控件中定義的受管接口。圖5中的這一接口504所包含的內(nèi)容是用于明確地標識示例性API的潛在功能的目的,并不意味著特別將本發(fā)明限制為IDataReader 504接口。
對象506、507、508、509和510從IDataReader 504接口繼承。對象508、509和510分別向服務器、表、文件提供檢索跟蹤數(shù)據(jù)的功能。用于這些功能的單獨對象是有利的,因為在讀取數(shù)據(jù)和將數(shù)據(jù)寫入文件、表或服務器時需要不同的操作組。對于服務器的情況,一般不能訪問用于修改記錄的跟蹤數(shù)據(jù),因此對象508直接從對象506繼承,而沒有像對象509和510那樣也從507繼承。由對象508提供的用于檢索跟蹤數(shù)據(jù)并將其存儲到文件的函數(shù)包括TraceServer(),它格式化跟蹤數(shù)據(jù)以存儲到服務器中;Start(),它啟動來自指定服務器的跟蹤數(shù)據(jù)的檢索;Pause(),它暫停來自指定服務器的正在運行的跟蹤數(shù)據(jù)的檢索;以及Stop(),它停止來自指定服務器的正在運行的跟蹤數(shù)據(jù)的檢索。因為對象508從對象506繼承,所以508也提供用于讀取輸入數(shù)據(jù)的函數(shù)Read()以及用于關閉數(shù)據(jù)所存儲的位置的函數(shù)Close()。此外,對象508提供在IDataReader接口504中指定的函數(shù)。通過提供這些函數(shù),對象508允許用戶計劃性地訪問這些函數(shù),并因此自動化了跟蹤數(shù)據(jù)的計劃性檢索和重放。
對象509和510被例示為從對象507和對象506繼承。這是由于以上所述的原因,即,在優(yōu)選的實施例中,當跟蹤數(shù)據(jù)被保存到表,如在509中,或文件,如在510中時,支持記錄修改功能是有利的。為了達到這個目的,對象507從506繼承并提供可以改變所存儲的跟蹤數(shù)據(jù)的記錄的另一寫函數(shù)。如圖5所例示,寫函數(shù)符合ITraceDataWriter接口505,它提出對寫數(shù)據(jù)以及適當?shù)赝ㄖ@類寫操作的合適對象的要求。接口505進而利用從所建立的IDataRecord接口502繼承的IDataRecordChanger接口503。圖9以另一種形式示出了IDataRecordChanger接口503。
在圖9的實施例中,為IDataRecordChanger接口指定兩種方法。本領域中的技術(shù)人員將會明白,在這類接口中可以指定不同的或其它的方法而不需要改變本發(fā)明的基本操作。圖9所例示的接口的目的在于提供一種在寫或重放數(shù)據(jù)時改變數(shù)據(jù)的方法。在這點上,方法SetValue()可以獲取所要代替的列的索引(inti),并將新的值(object value)置于該位置。另一方面,方法AddColumn()將一個新列添加到跟蹤數(shù)據(jù)。在這點上,給這類方法提供列標識符(int columnid)作為自變量,并且可以返回新生成的列的索引。
因此,使用接口503來指定最終改變根據(jù)另一個接口502傳輸?shù)母檾?shù)據(jù)記錄允許對象509和510執(zhí)行記錄修改操作。這類記錄修改對重放目的來說是有用的。當結(jié)合此處所提供的自動化重放技術(shù)一起使用時,它允許快速修改和重放跟蹤數(shù)據(jù)以提供以前從未獲得的高性能數(shù)據(jù)庫分析。
被對象509和510繼承的所有函數(shù)可以由諸如示例性的用戶對象400等用戶計劃性地訪問。因此,盡管對象509和510可以將來自數(shù)據(jù)庫流的跟蹤數(shù)據(jù)分別寫入表或文件,如UML圖表中的TraceTable()和TraceFile()標記所指示的,,但由于它們從對象507繼承,它們也支持存儲在表和文件中的記錄的修改。此外,由于從對象506繼承,對象509和510也支持讀取數(shù)據(jù)庫跟蹤流并關閉到數(shù)據(jù)庫跟蹤流的連接的函數(shù)。那些了解UML圖表的人將會明白這一點,并將會更進一步認識IDataReader接口504和從該接口繼承的對應的示例性函數(shù)。
現(xiàn)在考慮支持數(shù)據(jù)庫跟蹤數(shù)據(jù)的計劃性重放的本發(fā)明的實施例,參見圖6、圖7、圖8、圖9、圖10和圖11。圖6提供示意性地示出各種操作的圖表,這些操作可以通過允許跟蹤數(shù)據(jù)的計劃性重放的API執(zhí)行。圖7至圖11提供關于各種調(diào)用的信息,這些調(diào)用可以被展現(xiàn)以訪問重放函數(shù)。注意,此處不提供UML圖表,因為這種圖表既不是感興趣的也不能提供信息。這是因為,在優(yōu)選的實施例中,重放函數(shù)對象不需要從任何以前存在的對象繼承。即,肯定可以設計利用繼承的本發(fā)明的實現(xiàn)。
參見圖6,再次提供可以向API 601發(fā)出各種函數(shù)調(diào)用610、611、612的示例性用戶對象600。API 601可以由API 601的實現(xiàn)630支持,該實現(xiàn)603用于執(zhí)行所請求的各種操作。實現(xiàn)630可以利用此處所討論的各種面向?qū)ο蟮脑O計原理,如此處參照圖12所討論的。在執(zhí)行所請求的功能時,API實現(xiàn)630可以訪問和/或修改存儲在文件603中的跟蹤數(shù)據(jù)、存儲在表604中的跟蹤數(shù)據(jù)以及存儲在服務器605中的跟蹤數(shù)據(jù)。實現(xiàn)630也可以表示涉及602、604和605中的跟蹤數(shù)據(jù)的一系列查詢或其它通信并將其發(fā)送給數(shù)據(jù)庫640。該實現(xiàn)可以同時檢索跟蹤數(shù)據(jù)流返回642,以便再次將這類數(shù)據(jù)存儲到603、604或605中,供進一步分析。
API可以具備開始、暫?;蛲V垢檾?shù)據(jù)610的重放的能力。圖7中也演示這些特征,提供跟蹤重放對象類的偽代碼定義。諸如圖7中提供的作出調(diào)用的用戶對象600可以指定用于開始重放的開始操作,以及多個開始參數(shù)。這些參數(shù)可以指定要重放的跟蹤的位置、重放的時間、重放的數(shù)據(jù)庫等等。同樣,示例性用戶對象600可以訪問如圖7所示的暫停和停止函數(shù)。
API也可以具備在任意數(shù)量的事件發(fā)生時請求通知611的能力。這類通知可以被用戶對象600在重放跟蹤數(shù)據(jù)時用于進一步的有用優(yōu)勢。圖7中也例示了這些用戶通知。例如,用戶對象600可以在開始重放之前請求通知。這也由圖7中“event ReplayNotifyDelegate”那一行示出。這一特征允許用戶對象600,例如,在重放之前調(diào)查跟蹤數(shù)據(jù),并根據(jù)需要對各種記錄做出任何改變。同樣,當重放暫停時,正如圖7“event ReplayPauseDelegate ReplayPauseNotify”那一行所指出的那樣,可以請求通知。當重放重新開始時,正如圖7 “eventReplayPauseDelegate ReplayStartNotify”那一行所指出的那樣,可以請求通知,或者當跟蹤數(shù)據(jù)重放停止時,正如圖7“event ReplayStopDelegateReplayStopNotify”那一行所指出的那樣,可以請求通知。相反,用戶對象600不能作出對通知611的請求,只能選擇忽略這些事件。
用戶對象600將這些通知611用于協(xié)調(diào)跟蹤數(shù)據(jù)的修改和重放的這些方法是沒有限制的。本專利的范圍延及所揭示的API的使用,以及利用API的對象,而不考慮那些對象是否也包括超出本發(fā)明范圍的其它特征。通過此處所述的用于重放跟蹤數(shù)據(jù)的API提供通知的想法實質(zhì)上是一個進步,將支持使用所提供的API的用戶對象的靈活、強大的設計。
圖6的通知611a代表從API 601到用戶對象的通知信號。應當明白,可以利用本領域中所知道的任何形式的通知,如事件對象或.NET代理,正如圖7中的語言所表示的那樣。在各種優(yōu)選的實施例中,.NET代理被用于回調(diào)通知,可以聲明通知事件,正如圖8所例示的那樣。此處的例子可以延及其它實施例,只有較小的實現(xiàn)差異。如圖8所示,ReplayNotifyDelegate可以聲明屬于主題通知的數(shù)據(jù)。這也適用于其它示例性通知事件。
圖8中所例示的通知事件被設計成攜帶足夠的信息以允許事件處理程序響應于通知智能地選擇合適的行動。這些通知也可以包含影響重放執(zhí)行的機制。在這點上,下面的示例性信息可以和通知事件,如圖8的那些通知事件一起包括在內(nèi)RecordNumber——可以指定要重放的跟蹤記錄的行號。
currentRecord——可以是當前正在重放的跟蹤記錄。用戶對象可以檢查該記錄的列,并直接修改它。
skipRecord——通過將跳過記錄標志設定為“真”,用戶對象處理程序可以命令API不要重放特定跟蹤記錄。
圖7中所例示的其它特征,首先是此處被表示為“TraceReaderWriterOutput”函數(shù)的函數(shù)。正如所使用的語言所暗示的那樣,這允許用戶對象600檢索由數(shù)據(jù)庫發(fā)出的作為重放結(jié)果的跟蹤數(shù)據(jù)輸出??梢栽诖鎯χ靶薷倪@類輸出數(shù)據(jù)?!癈onnectionlnfoBase Connection”函數(shù)允許用戶對象指定涉及連接到數(shù)據(jù)庫或其它合適的服務器的信息。例如,可以指定特定的數(shù)據(jù)庫地址和通信協(xié)議。然后API可以在用戶對象600所要求的時刻計劃性地打開到所指定的數(shù)據(jù)庫的連接。
最后參見圖7,“TraceReplayOptions”函數(shù)允許用戶對象600指定任意數(shù)量的附加選項。圖10中例示在優(yōu)選的API中可用的示例性選項,為跟蹤數(shù)據(jù)API提供選項的對象可以提供所例示的5個選項中的任何一個,以及被設計為或被發(fā)現(xiàn)是有用的任何其它選項。可以控制重放線程池的大小。這個選項可以用于防止重放打開太多的線程并使系統(tǒng)資源過載??梢灾付ㄔ凇叭∠被蚪K止掛起的進程之前的等待時間。例如,如果到數(shù)據(jù)庫的連接運行不正常,則可以給那個進程指定終止之前的一定量的時間??梢栽O置掛起的進程的輪詢頻率。這允許用戶指定應當將多少系統(tǒng)資源用于輪詢。在非常穩(wěn)定的環(huán)境中,可能需要不太頻繁的輪詢??梢灾付ㄖ胤拍J?。圖11中進一步例示這個選項。此處考慮兩種模式。第一,順序重放模式,其中跟蹤數(shù)據(jù)以與跟蹤數(shù)據(jù)被收集到跟蹤數(shù)據(jù)存儲區(qū)域時的順序相同的順序被重放到數(shù)據(jù)庫。第二,“連接級同步”模式,其中涉及特定客戶機的所有事件都被順序重放,但不保持事件的全局順序,即,假定客戶機請求相互獨立。例如,如果單個客戶機生成了對特定數(shù)據(jù)庫的請求中的十分之一,本發(fā)明的一個方面允許針對數(shù)據(jù)庫順序重放數(shù)據(jù)庫請求中相同的十分之一。如同可以被計劃性地訪問的其它功能那樣,這考慮到重放細節(jié)的靈活控制。
最后,參見圖10,對象可以指定是否應當返回實際數(shù)據(jù)庫查詢結(jié)果,或者只返回產(chǎn)生了錯誤的操作的結(jié)果。這個選項突出了本發(fā)明的一個有用的方面,即除了追蹤數(shù)據(jù)之外,實際結(jié)果——查詢結(jié)果或錯誤——可以在重放過程中收集,而且,這個特征可以由提供重放選項控制的對象控制。
因此,此處所揭示的API和各種支持對象從幾個方面大大簡化了跟蹤數(shù)據(jù)的管理。首先,它們使得用戶可以完全自動化被跟蹤的服務器的安全審計和健康監(jiān)控。其次,它們考慮到新服務器發(fā)布和安全包的自動功能驗證。
示例性計算和網(wǎng)絡環(huán)境參見圖2a,概括地描述適用于本發(fā)明的系統(tǒng)和方法的示例性計算設備200。在它最基本的配置中,設備200一般包括處理單元202和存儲器203。取決于計算設備的確切配置和類型,存儲器203可以是易失性存儲器(如隨機存取存儲器)、非易失性存儲器(如只讀存儲器、閃存等)或這兩種存儲器的某種組合。另外,設備200也可以有大容量存儲(可移動存儲204和/或不可移動存儲205),如磁盤、光盤或磁帶。同樣地,設備200也可以有輸入設備207,如鍵盤和鼠標,和/或輸出設備206,如呈現(xiàn)GUI作為訪問計算設備200的功能的圖形幫助的顯示器。設備200的其它方面可以包括使用有線或無線介質(zhì)到其它設備、計算機、網(wǎng)絡、服務器等等的通信連接208。所有這些設備在本領域中廣為人知,不需要在此詳細討論。
圖2b例示來自圖2a的適用的計算設備和外圍系統(tǒng)的稍微更詳細的例子。計算系統(tǒng)環(huán)境220僅僅是一個合適的計算環(huán)境的例子,并非意味著對本發(fā)明的使用范圍或功能的任何限制。計算環(huán)境220也不應當被解釋為對在示例性操作環(huán)境220中例示的任何一個組件或其組合有任何依賴或要求。
本發(fā)明可在許多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置中操作。適用于實現(xiàn)本發(fā)明的眾所周知的計算系統(tǒng)、環(huán)境和/或配置的例子包含但不限于個人計算機、服務器計算機、手持式或膝上型設備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機頂盒、可編程的消費性電子產(chǎn)品、網(wǎng)絡PC、微型計算機、大型計算機以及包括任何以上系統(tǒng)或設備的分布式計算環(huán)境,等等。
本發(fā)明可以在由一個或多個組件執(zhí)行的計算機可執(zhí)行指令的一般上下文中如程序模塊中實現(xiàn)。通常,程序模塊包括完成特定的任務或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型的例程、程序、對象、數(shù)據(jù)結(jié)構(gòu)等等。本發(fā)明還可以在分布式計算環(huán)境中實踐,其中任務由通過通信網(wǎng)絡連接的遠程處理設備執(zhí)行。在分布式計算環(huán)境中,程序模塊可以位于包括存儲器存儲設備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。
參見圖2b,用于實現(xiàn)本發(fā)明中的示例性客戶機系統(tǒng)包括計算機241形式的通用計算設備。計算機241的組件包含但不限于處理單元259、系統(tǒng)存儲器222以及將包括系統(tǒng)存儲器221在內(nèi)的各個系統(tǒng)組件連接到處理器259的系統(tǒng)總線221。系統(tǒng)總線221可以是包括存儲器總線或存儲器控制器、外圍總線以及使用多種總線體系結(jié)構(gòu)的局部總線在內(nèi)的若干總線結(jié)構(gòu)類型中的任一種。作為例子而非限制,此類體系結(jié)構(gòu)包括工業(yè)標準體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強型ISA(EISA)總線、視頻電子技術(shù)標準協(xié)會(VESA)局部總線以及外圍部件互連(PCI)總線(也稱為Mezzanine總線)。
計算機241一般包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是能由計算機241訪問的任何可用介質(zhì),并且包括易失性和非易失性介質(zhì)以及可移動和不可移動介質(zhì)。作為例子而非限制,計算機可讀介質(zhì)可以包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以任何方法和技術(shù)實現(xiàn)的用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的易失性和非易失性介質(zhì)以及可移動和不可移動介質(zhì)。計算機存儲介質(zhì)包括但不局限于RAM、ROM、EEPROM、閃存或者其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(“DVD”)或其它光學存儲器、磁帶盒、磁帶、磁盤存儲器或者其它磁存儲設備或者任何其它可以用于存儲或者傳遞所需信息并可由計算機241訪問的介質(zhì)。通信介質(zhì)一般以諸如載波或者其它傳輸機制等已調(diào)制數(shù)據(jù)信號的形式表現(xiàn)計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任意信息傳遞介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”是指以以在該信號中編碼信息的方式來設置或改變其一個或多個特性的信號。作為例子而非限制,通信介質(zhì)包括有線介質(zhì)如有線網(wǎng)絡或有線直接連接,以及無線介質(zhì)如聲學、射頻、紅外和其它無線介質(zhì)。以上任何一個的組合也應當被包括在計算機可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲器222包括易失性和/或非易失性存儲器形式的計算機存儲介質(zhì),如只讀存儲器(ROM)223以及隨機存取存儲器(RAM)260。基本輸入/輸出系統(tǒng)224(BIOS)一般存儲在ROM 223內(nèi),它包括比如在啟動時幫助在計算機241內(nèi)的元件之間傳輸信息的基本例程。RAM 260一般包含可由處理單元259即時訪問的和/或目前在操作的數(shù)據(jù)和/或程序模塊。作為例子而非限制,圖2b例示了操作系統(tǒng)225、應用程序226、其它程序模塊227以及程序數(shù)據(jù)228。
計算機241還包括其它可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)。僅僅作為例子,圖2b例示從不可移動的非易失磁性介質(zhì)讀取或向其中寫入的硬盤驅(qū)動器238、從可移動的非易失性磁盤254讀取或向其中寫入的磁盤驅(qū)動器239以及從如CD-ROM或其它光學介質(zhì)等可移動的非易失性光介質(zhì)253讀取或向其中寫入的光盤驅(qū)動器240。其它可以用于示例性操作環(huán)境的可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)包括但不限于盒式磁帶、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動器238一般通過不可移動存儲器接口,如接口234連接到系統(tǒng)總線221,而磁盤驅(qū)動器239和光盤驅(qū)動器240一般通過可移動存儲器接口,如接口235連接到系統(tǒng)總線221。
以上討論且例示于圖2b中的驅(qū)動器及其相關計算機存儲介質(zhì)為計算機241提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊以及其它數(shù)據(jù)的存儲。例如,在圖2b中,將硬盤驅(qū)動器238例示為存儲操作系統(tǒng)258、應用程序257、其它程序模塊256和程序數(shù)據(jù)255。注意,這些組件可以與操作系統(tǒng)225、應用程序226、其它程序模塊227和程序數(shù)據(jù)228相同,也可以與它們不同。這里對操作系統(tǒng)258、應用程序257、其它程序模塊256和程序數(shù)據(jù)255給予不同的標號,以說明至少它們是不同的副本。用戶可以通過輸入設備,如鍵盤25 1和定位設備252(通常指鼠標、跟蹤球或觸摸板)向計算機241輸入命令和信息。其它輸入設備(未示出)可包括麥克風、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設備往往通過耦合至系統(tǒng)總線的用戶輸入接口236連接至處理單元259,但也可以通過其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器242或其它類型的顯示設備也通過接口,如視頻接口232連接至系統(tǒng)總線221。除了監(jiān)視器之外,計算機也可包括其它外圍輸出設備,如揚聲器244和打印機243,它們可以通過輸出外圍接口233連接。
計算機241可工作在使用到一個或多個遠程計算機,如遠程計算機246的邏輯連接的網(wǎng)絡化環(huán)境內(nèi)。遠程計算機246可以是個人計算機、服務器、路由器、網(wǎng)絡PC、對等設備或其它公共網(wǎng)絡節(jié)點,并且一般包括與計算機241相關的許多或所有上述元件,盡管圖2b中僅例示了存儲器存儲設備247。圖2b所述的邏輯連接包括局域網(wǎng)(LAN)245以及廣域網(wǎng)(WAN)249。這些網(wǎng)絡環(huán)境常見于辦公室、企業(yè)范圍內(nèi)的計算機網(wǎng)絡、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)。
當用于LAN網(wǎng)絡環(huán)境時,計算機241通過網(wǎng)絡接口或適配器237連到局域網(wǎng)245。當用于WAN網(wǎng)絡環(huán)境時,計算機241一般包括調(diào)制解調(diào)器250或用于通過廣域網(wǎng)249,如因特網(wǎng)建立通信的其它裝置??梢詢?nèi)置或者外置的調(diào)制解調(diào)器250可通過用戶輸入接口236或者其它合適的機制連接到系統(tǒng)總線221。在網(wǎng)絡化環(huán)境中,所述的與個人計算機241相關的程序模塊或其部分可存儲在遠程存儲器設備內(nèi)。作為例子而非限制,圖2b例示遠程應用程序248駐留在存儲器設備247上??梢岳斫猓揪W(wǎng)絡連接是示例性的,并且可以使用在計算機之間建立通信鏈路的其它裝置。
應當理解,此處所述的各種技術(shù)可以結(jié)合硬件或軟件,或者,如果合適,也可以結(jié)合兩者的組合實現(xiàn)。因此,本發(fā)明的方法和裝置或其特定方面或部分,可以采取包含在諸如軟盤、CD-ROM、硬盤驅(qū)動器或任何其它機器可讀存儲介質(zhì)等有形介質(zhì)中的程序代碼的形式(即指令),其中,當諸如計算機等機器載入并執(zhí)行程序代碼時,機器就變成用于實踐本發(fā)明的裝置。在可編程計算機上執(zhí)行程序代碼的情況下,計算設備通常包括處理器、處理器可讀存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設備和至少一個輸出設備。一個或多個程序可以實現(xiàn)或利用此處所描述與發(fā)明相關的進程,如通過使用API、可重用的控制等。這些程序較佳地用高級過程語言或面向?qū)ο缶幊陶Z言來實現(xiàn),以與計算機系統(tǒng)通信。然而,如果需要的話,程序可以用匯編語言或機器語言實現(xiàn)。無論如何,語言可以是編譯語言或解釋語言,并和硬件實現(xiàn)相結(jié)合。
盡管示例性實施例是在一個或多個獨立計算機系統(tǒng)的環(huán)境中利用本發(fā)明,但是本發(fā)明不受這樣的限制,相反也可以結(jié)合任何計算環(huán)境來實現(xiàn),如網(wǎng)絡或分布式計算環(huán)境。此外,本發(fā)明可以在多個處理芯片或設備內(nèi)跨多個處理芯片或設備來實現(xiàn),并且存儲同樣可以跨多個設備來實現(xiàn)。這些設備可以包括個人計算機、網(wǎng)絡服務器、手持式設備、超級計算機或集成到諸如汽車和飛機等其它系統(tǒng)內(nèi)的計算機。
圖2c中提供了示例性的網(wǎng)絡化計算環(huán)境。本領域內(nèi)的普通技術(shù)人員可以理解,網(wǎng)絡可以連接任何計算機或其它客戶機或服務器設備,或者在分布式計算環(huán)境中。在這點上,任何具有任意數(shù)量的處理、存儲器或存儲單元的計算機系統(tǒng)或環(huán)境,以及同時發(fā)生的多個應用程序和進程被認為適于與所提供的系統(tǒng)和方法結(jié)合使用。
分布式計算通過計算設備和系統(tǒng)之間的交換來提供計算機資源和服務的共享。這些資源和服務包括信息的交換、文件的高速緩存和磁盤存儲。分布式計算利用網(wǎng)絡連接,允許客戶機充分利用其集體能力使整個企業(yè)受益。在這點上,多種設備可以具有包含此處所述的進程的應用程序、對象或資源。
圖2c提供示例性網(wǎng)絡化或分布式計算環(huán)境的示意圖。該環(huán)境包括計算設備271、272、276和277以及對象273、274和275,還有數(shù)據(jù)庫278。這些組件271、272、273、274、275、276、277和278的每一個可以包括或利用程序、方法、數(shù)據(jù)存儲、可編程邏輯等等。組件271、272、273、274、275、276、277和278可以跨越相同或不同的設備的諸部分,如PDA、音頻/視頻設備、MP3播放器、個人計算機等等。組件271、272、273、274、275、276、277和278中的每一個可以通過通信網(wǎng)絡270與其它組件271、272、273、274、275、276、277和278通信。在這點上,任何實體都可以負責數(shù)據(jù)庫278或其它存儲元件的維護和更新。
網(wǎng)絡270本身可以包括向圖2c的系統(tǒng)提供服務的其它計算實體,并且本身可以代表多個互相連接的網(wǎng)絡。依照發(fā)明的一個方面,組件271、272、273、274、275、276、277和278中的每一個可以包含能利用API或其它對象、軟件、固件和/或硬件的分立的功能程序模塊,以請求其它組件271、272、273、274、275、276、277和278中的一個或多個的服務。
也應當明白,可以在另一個計算設備276上主存對象,如275。因此,盡管所述的物理環(huán)境可以示出所連接的設備為計算機,這種例示只是示例性的,并且可選擇地,物理環(huán)境可以被描繪或描述為包括各種數(shù)字設備,如PDA、電視機、MP3播放器等等,以及軟件對象,如接口、COM對象等等。
有多種支持分布式計算環(huán)境的系統(tǒng)、組件和網(wǎng)絡配置。例如,計算系統(tǒng)可以通過有線或無線系統(tǒng)、本地網(wǎng)絡或廣泛的分布式網(wǎng)絡連接在一起。目前,許多網(wǎng)絡被耦合到因特網(wǎng),提供用于廣泛的分布式計算的基礎結(jié)構(gòu),并且包含許多不同的網(wǎng)絡。無論是否耦合到因特網(wǎng)上,任何這些基礎結(jié)構(gòu)都可以與所提供的系統(tǒng)和方法一起使用。
網(wǎng)絡基礎結(jié)構(gòu)使得可以實現(xiàn)許多網(wǎng)絡拓撲結(jié)構(gòu),如客戶機/服務器、對等或混合體系結(jié)構(gòu)。“客戶機”是使用它所不涉及的另一個類或組的服務的類或組的成員。在計算中,客戶機是一個進程,即,一般說來是請求由另一個程序提供的服務的一組指令或任務。客戶機進程利用所請求的服務,不需要“知道”任何關于其它程序或該服務本身的工作細節(jié)。在客戶機/服務器體系結(jié)構(gòu),尤其是網(wǎng)絡化系統(tǒng)中,客戶機通常是訪問由另一臺計算機,如服務器提供的共享網(wǎng)絡資源的計算機。在圖2c的例子中,取決于環(huán)境,任何組件271、272、273、274、275、276、277和278都可以被看作客戶機、服務器或兩者兼有。
一般地,盡管不是必然地,服務器是可以通過遠程或本地網(wǎng)絡,如因特網(wǎng)訪問的遠程計算機系統(tǒng)??蛻魴C進程在第一計算機系統(tǒng)中可以是活動的,服務器進程在第二計算機系統(tǒng)中可以是活動的,通過通信介質(zhì)相互通信,因此提供分布式功能并允許多個客戶機利用服務器的信息收集能力。任何軟件對象可以跨過多個計算設備或?qū)ο蠓植肌?br>
客戶機和服務器利用協(xié)議層提供的功能相互通信。例如,超文本傳輸協(xié)議(HTTP)是用于萬維網(wǎng)(WWW)或“Web”的公共協(xié)議。一般地,計算機網(wǎng)絡地址,如互聯(lián)網(wǎng)協(xié)議(IP)地址或其它引用,如統(tǒng)一資源定位符(URL),可以用于相互識別服務器或客戶機計算機。網(wǎng)絡地址可以稱為URL地址??梢酝ㄟ^通信介質(zhì)提供通信,例如,客戶機和服務器可以通過用于高容量通信的TCP/IP連接相互耦合。
鑒于可以根據(jù)圖2a和圖2b中所提供的通用框架構(gòu)造的種種計算環(huán)境,以及可以在如圖2c的網(wǎng)絡環(huán)境等網(wǎng)絡環(huán)境中的計算過程中發(fā)生的其它多樣化,此處所提供的系統(tǒng)和方法不能被解釋為以任何方式受限于特定計算體系結(jié)構(gòu)。相反,本發(fā)明不應當限于任何單個實施例,而應當依照所附權(quán)利要求書的廣度和范圍來解釋。
權(quán)利要求
1.一種用于支持數(shù)據(jù)庫跟蹤數(shù)據(jù)的計劃性檢索和重放的系統(tǒng),包括第一功能元件,包括用于檢索數(shù)據(jù)庫跟蹤數(shù)據(jù)的多個計算機可讀指令;第一展示的功能調(diào)用,由此諸用戶計算機進程可以計劃性地啟動所述第一功能元件的操作;第二功能元件,包括用于存儲數(shù)據(jù)庫跟蹤數(shù)據(jù)的多個計算機可讀指令;第三功能元件,包括重放數(shù)據(jù)庫跟蹤數(shù)據(jù)的多個計算機可讀指令;第三展示的功能調(diào)用,由此用戶計算機進程可以計劃性地啟動所述第三功能元件的操作。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第二功能元件包括用于將數(shù)據(jù)庫跟蹤數(shù)據(jù)存儲到文件、表和服務器中的一個或多個的多個計算機可讀指令。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括第四功能元件,包括用于修改所存儲的數(shù)據(jù)庫跟蹤數(shù)據(jù)的多個計算機可讀指令。
4.如權(quán)利要求3所述的系統(tǒng),其特征在于,還包括第四展示的功能調(diào)用,由此用戶計算機進程可以計劃性地調(diào)用所述第四功能元件的操作。
5.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第一功能元件包括從一IDataReader接口繼承的一個或多個對象。
6.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第三功能元件包括用于在重放跟蹤數(shù)據(jù)之前通知用戶計算機進程的多個計算機可讀指令。
7.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第三功能元件包括用于當來自重放的數(shù)據(jù)庫輸出對用戶計算機進程可用時通知用戶計算機進程的多個計算機可讀指令。
8.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第三功能元件包括用于在重放被停止時通知用戶計算機進程的多個計算機可讀指令。
9.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第三功能元件包括用于順序重放模式的多個計算機可讀指令,其中,對特定數(shù)據(jù)庫的所有數(shù)據(jù)庫服務請求實質(zhì)上都以所述連續(xù)重放模式重放。
10.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第三功能元件包括用于連接級重放模式的多個計算機可讀指令,其中,從被表示的客戶機或客戶機組發(fā)送給數(shù)據(jù)庫的所有數(shù)據(jù)庫服務請求實質(zhì)上都以所述連接級重放模式重放。
11.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第三功能元件包括用于實質(zhì)上收集與重放相關聯(lián)的所有數(shù)據(jù)庫輸出的多個計算機可讀指令。
12.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第三功能元件包括用于實質(zhì)上只收集與重放相關聯(lián)的所報告的數(shù)據(jù)庫錯誤的多個計算機可讀指令。
13.一種允許計算機化進程計劃性地檢索和重放數(shù)據(jù)庫跟蹤數(shù)據(jù)的方法,包括展示用于檢索數(shù)據(jù)庫跟蹤數(shù)據(jù)的第一功能調(diào)用,其中,所述第一功能調(diào)用被展示給用戶計算機化進程;響應于調(diào)用所述第一功能調(diào)用,檢索數(shù)據(jù)庫跟蹤數(shù)據(jù);將數(shù)據(jù)庫跟蹤數(shù)據(jù)存儲到由所述用戶計算機化進程的一個或多個指定的位置或指定為默認位置的位置中;展示用于重放數(shù)據(jù)庫跟蹤數(shù)據(jù)的第二功能調(diào)用,其中,所述第二功能調(diào)用被展示給用戶計算機化進程;以及響應于調(diào)用所述第二功能調(diào)用,重放數(shù)據(jù)庫跟蹤數(shù)據(jù)。
14.如權(quán)利要求13所述的方法,其特征在于,所述存儲包括將數(shù)據(jù)庫跟蹤數(shù)據(jù)寫入文件、表和服務器中的一個或多個。
15.如權(quán)利要求13所述的方法,其特征在于,用于檢索的所述功能調(diào)用包括用于將數(shù)據(jù)庫跟蹤數(shù)據(jù)存儲到多個位置的多個功能調(diào)用,由此,通過調(diào)用所述多個函數(shù)調(diào)用中的一個或多個,存儲位置可以由用戶計算機化進程指定。
16.如權(quán)利要求13所述的方法,其特征在于,還包括揭示用于修改數(shù)據(jù)庫跟蹤數(shù)據(jù)的第四功能調(diào)用,其中,所述第四功能調(diào)用被展示給用戶計算機化進程。
17.如權(quán)利要求16所述的方法,其特征在于,還包括響應于調(diào)用所述第四功能調(diào)用,修改數(shù)據(jù)庫跟蹤數(shù)據(jù)。
18.如權(quán)利要求13所述的方法,其特征在于,所述檢索數(shù)據(jù)庫跟蹤數(shù)據(jù)包括從一IDataReader接口繼承的一個或多個對象。
19.如權(quán)利要求13所述的方法,其特征在于,還包括在重放跟蹤數(shù)據(jù)之前通知用戶計算機進程。
20.如權(quán)利要求19所述的方法,其特征在于,所述通知包括將一事件對象返回給用戶計算機進程。
21.如權(quán)利要求19所述的方法,其特征在于,所述通知包括將一代理返回用戶計算機進程。
22.如權(quán)利要求19所述的方法,其特征在于,所述通知包括將一接口返回用戶計算機進程,其中,所述接口定義了用于修改跟蹤數(shù)據(jù)記錄的參數(shù)。
23.如權(quán)利要求19所述的方法,其特征在于,所述通知包括將一接口返回用戶計算機進程,其中,所述接口定義了用于在所述重放期間跳過跟蹤數(shù)據(jù)的參數(shù)。
24.如權(quán)利要求13所述的方法,其特征在于,還包括當來自重放的數(shù)據(jù)庫輸出對用戶計算機進程可用時通知用戶計算機進程。
25.如權(quán)利要求24所述的方法,其特征在于,所述通知包括將一事件對象返回給用戶計算機進程。
26.如權(quán)利要求24所述的方法,其特征在于,所述通知包括將一代理返回給用戶計算機進程。
27.如權(quán)利要求13所述的方法,其特征在于,所述重放包括在重放被停止時通知用戶計算機進程。
28.如權(quán)利要求13所述的方法,其特征在于,所述重放包括連接到一數(shù)據(jù)庫,其中,所述數(shù)據(jù)庫由用戶計算機進程指定。
29.如權(quán)利要求13所述的方法,其特征在于,所述重放包括控制線程池的大小,其中,所述線程池的大小由用戶計算機進程指定。
30.如權(quán)利要求13所述的方法,其特征在于,所述重放包括控制時間間隔,其中,在終止不是正在進行中的進程之前,所述系統(tǒng)中用于支持數(shù)據(jù)庫跟蹤數(shù)據(jù)的計劃性檢索和重放的一個或多個元件將等待所述時間間隔。
31.如權(quán)利要求13所述的方法,其特征在于,所述重放包括控制用于發(fā)現(xiàn)不是正在進行中的進程的輪詢頻率。
32.如權(quán)利要求13所述的方法,其特征在于,所述重放包括利用一順序重放模式,其中,對特定數(shù)據(jù)庫的所有數(shù)據(jù)庫服務請求實質(zhì)上都以所述連續(xù)重放模式重放。
33.如權(quán)利要求13所述的方法,其特征在于,所述重放包括利用一連接級重放模式,其中,從被表示的客戶機或客戶機組發(fā)送給數(shù)據(jù)庫的所有數(shù)據(jù)庫服務請求實質(zhì)上都以所述連接級重放模式重放。
34.如權(quán)利要求13所述的方法,其特征在于,所述重放包括實質(zhì)上收集與重放相關聯(lián)的所有數(shù)據(jù)庫輸出。
35.如權(quán)利要求13所述的方法,其特征在于,所述重放包括實質(zhì)上只收集與重放相關聯(lián)的所報告的數(shù)據(jù)庫錯誤。
36.一種存儲用于允許計算機化進程計劃性地檢索和重放數(shù)據(jù)庫跟蹤數(shù)據(jù)的指令的計算機可讀介質(zhì),包括用于展示用于檢索數(shù)據(jù)庫跟蹤數(shù)據(jù)的第一功能調(diào)用的指令,所述第一功能調(diào)用被展示給用戶計算機化進程;用于響應于調(diào)用所述第一功能調(diào)用檢索數(shù)據(jù)庫跟蹤數(shù)據(jù)的指令;用于將數(shù)據(jù)庫跟蹤數(shù)據(jù)存儲到由所述用戶計算機化進程的一個或多個指定的位置或被指定為默認位置的位置的指令;用于展示用于重放數(shù)據(jù)庫跟蹤數(shù)據(jù)的第二功能調(diào)用的指令,所述第二功能調(diào)用被暴露給用戶計算機化進程;以及用于響應于調(diào)用所述第二功能調(diào)用重放數(shù)據(jù)庫跟蹤數(shù)據(jù)的指令。
37.如權(quán)利要求36所述的計算機可讀介質(zhì),其特征在于,用于存儲的所述指令包括用于將數(shù)據(jù)庫跟蹤數(shù)據(jù)寫入文件、表和服務器中的一個或多個的指令。
38.如權(quán)利要求36所述的計算機可讀介質(zhì),其特征在于,用于展示用于檢索的第一功能調(diào)用的所述指令包括用于將數(shù)據(jù)庫跟蹤數(shù)據(jù)存儲到多個位置的多個功能調(diào)用的指令,由此,通過調(diào)用所述多個函數(shù)調(diào)用中的一個或多個,存儲位置可以由用戶計算機化進程指定。
39.如權(quán)利要求36所述的計算機可讀介質(zhì),其特征在于,還包括用于展示用于修改數(shù)據(jù)庫跟蹤數(shù)據(jù)的第四功能調(diào)用的指令,所述第四功能調(diào)用被展示給用戶計算機化進程。
40.如權(quán)利要求39所述的計算機可讀介質(zhì),其特征在于,還包括用于響應于調(diào)用所述第四功能調(diào)用修改數(shù)據(jù)庫跟蹤數(shù)據(jù)的指令。
41.如權(quán)利要求36所述的計算機可讀的介質(zhì),其特征在于,用于檢索數(shù)據(jù)庫跟蹤數(shù)據(jù)的所述指令包括從一IDataReader接口繼承的一個或多個對象。
42.如權(quán)利要求36所述的計算機可讀介質(zhì),其特征在于,還包括用于在重放跟蹤數(shù)據(jù)之前通知用戶計算機進程的指令。
43.如權(quán)利要求42所述的計算機可讀介質(zhì),其特征在于,用于通知的所述指令包括用于將一事件對象返回給用戶計算機進程的指令。
44.如權(quán)利要求42所述的計算機可讀介質(zhì),其特征在于,用于通知的所述指令包括用于將一接口返回給用戶計算機進程的指令,其中,所述接口定義了用于修改跟蹤數(shù)據(jù)的參數(shù)。
45.如權(quán)利要求42所述的計算機可讀介質(zhì),其特征在于,用于通知的所述指令包括用于將一接口返回給用戶計算機進程的指令,其中,所述接口定義了用于在所述重放期間跳過跟蹤數(shù)據(jù)的參數(shù)。
46.如權(quán)利要求42所述的計算機可讀介質(zhì),其特征在于,用于通知的所述指令包括用于將一代理返回給用戶計算機進程的指令。
47.如權(quán)利要求42所述的計算機可讀介質(zhì),其特征在于,還包括用于當來自重放的數(shù)據(jù)庫輸出對用戶計算機進程可用時通知用戶計算機進程的指令。
48.如權(quán)利要求47所述的計算機可讀介質(zhì),其特征在于,用于通知的所述指令包括用于將一事件對象返回給用戶計算機進程的指令。
49.如權(quán)利要求47所述的計算機可讀介質(zhì),其特征在于,用于通知的所述指令包括用于將一代理返回給用戶計算機進程的指令。
50.如權(quán)利要求36所述的計算機可讀的介質(zhì),其特征在于,用于重放的所述指令包括用于在重放被停止時通知用戶計算機進程的指令。
51.如權(quán)利要求36所述的計算機可讀介質(zhì),其特征在于,用于重放的所述指令包括用于連接到一數(shù)據(jù)庫的指令,其中,所述數(shù)據(jù)庫由用戶計算機進程指定。
52.如權(quán)利要求36所述的計算機可讀介質(zhì),其特征在于,用于重放的所述指令包括用于利用一順序重放模式的指令,其中,對特定數(shù)據(jù)庫的所有數(shù)據(jù)庫服務請求實質(zhì)上都以所述順序重放模式重放。
53.如權(quán)利要求36所述的計算機可讀介質(zhì),其特征在于,用于重放的所述指令包括用于利用一連接級重放模式的指令,其中,從被標識的客戶機或客戶機組發(fā)送給數(shù)據(jù)庫的所有數(shù)據(jù)庫服務請求實質(zhì)上都以所述連接級重放模式重放。
54.如權(quán)利要求36所述的計算機可讀介質(zhì),其特征在于,用于重放的所述指令包括用于實質(zhì)上收集與重放相關聯(lián)的所有數(shù)據(jù)庫輸出的指令。
55.如權(quán)利要求36所述的計算機可讀的介質(zhì),其特征在于,用于重放的所述指令包括用于實質(zhì)上只收集與重放相關聯(lián)的所報告的數(shù)據(jù)庫錯誤的指令。
全文摘要
跟蹤和重放對象可被設計成在用戶計算機進程調(diào)用時自動地執(zhí)行涉及數(shù)據(jù)庫跟蹤數(shù)據(jù)的操作。跟蹤數(shù)據(jù)可以被保存到各種位置中的任何一種。它可以用于存儲或重放的目的。可以使用多個重放配置選項針對任何數(shù)據(jù)庫服務器重放跟蹤數(shù)據(jù)。重放通知允許數(shù)據(jù)在被提交到數(shù)據(jù)庫以供執(zhí)行之前被改變,而且允許即時檢查重放結(jié)果和確認重放正確性。因此,跟蹤和重放對象大大簡化了跟蹤數(shù)據(jù)的可管理性。用戶進程現(xiàn)在可以完全自動化所跟蹤的數(shù)據(jù)庫服務器的安全審計和健康監(jiān)控。也可以執(zhí)行新服務器發(fā)布和安全包的自動驗證。用戶進程可以使用所提供的對象來靈活地訪問和操作數(shù)據(jù)庫跟蹤數(shù)據(jù)的檢索、存儲和重放。
文檔編號G06F17/30GK1722086SQ200510075888
公開日2006年1月18日 申請日期2005年5月20日 優(yōu)先權(quán)日2004年6月21日
發(fā)明者A·G·巴利科夫, D·松金, V·克拉索夫斯基 申請人:微軟公司