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

用于識別數(shù)據(jù)庫更改對應用的影響的方法和系統(tǒng)的制作方法

文檔序號:6582852閱讀:125來源:國知局
專利名稱:用于識別數(shù)據(jù)庫更改對應用的影響的方法和系統(tǒng)的制作方法
技術(shù)領域
本發(fā)明的實施例涉及應用(application)開發(fā),并且特別地,涉及用于識別數(shù)據(jù) 庫更改對應用的影響的應用開發(fā)工具。
背景技術(shù)
數(shù)據(jù)庫是計算機化的信息存儲和檢索系統(tǒng)。關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)是 使用用于存儲和檢索數(shù)據(jù)的關(guān)系技術(shù)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)。關(guān)系數(shù)據(jù)庫被組織成 (organize)由行和列的數(shù)據(jù)組成的表。所述行被正式稱為元組(tuple)。數(shù)據(jù)庫將典型地 具有多個表,并且每個表將典型地具有多個元組和多個列。所述表典型地被存儲在用于半 永久存儲的諸如磁或光盤驅(qū)動器的隨機存取存儲設備(RASD)上。 使用結(jié)構(gòu)化查詢語言(SQL)接口的RDBMS在本領域內(nèi)是眾所周知的。SQL接口已 經(jīng)演進為用于RDBMS軟件的標準語言,并且已經(jīng)同樣地被美國國家標準協(xié)會(ANSI)和國際 標準組織(ISO)兩者所采用。SQL接口允許用戶以批處理文件的方式交互地、或內(nèi)嵌在諸 如C或COBOL的宿主語言中,來制定(formulate)關(guān)于表的關(guān)系操作。SQL允許用戶操縱 數(shù)據(jù)。SQL的定義規(guī)定RDBMS應當以被賦予指定的數(shù)據(jù)庫內(nèi)容的特定數(shù)據(jù)集來響應特定查 詢。 應用(即,應用程序)使用結(jié)構(gòu)化查詢語言(SQL)與關(guān)系數(shù)據(jù)庫通信。SQL語句 (statement)被發(fā)出到RDBMS, RDBMS執(zhí)行所述SQL語句,以訪問關(guān)系數(shù)據(jù)庫。在作為相關(guān) 的SQL語句的集合(collection)的"工作單元"內(nèi)執(zhí)行從應用接收的SQL語句。 一旦SQL 語句被執(zhí)行,則它們或者被"確認(commit)"(即,使得由所執(zhí)行的SQL語句所進行的更改 在關(guān)系數(shù)據(jù)庫中為永久的)、或者被"退回(rolled back)"(即,去除(remove)由所執(zhí)行的 SQL語句進行的更改,使得關(guān)系數(shù)據(jù)庫返回到在執(zhí)行這些語句之前其所處的狀態(tài))。
牽涉修改數(shù)據(jù)(例如,插入、更新或刪除行)的SQL語句被稱作數(shù)據(jù)操縱語言 (匿L)語句。牽涉定義數(shù)據(jù)庫元素(element)(例如,定義數(shù)據(jù)表、視圖或索引)的SQL語句 被稱作數(shù)據(jù)定義語言(DDL)語句。 用于更改數(shù)據(jù)庫模式(schemas)的工具(例如,用于生成DDL語句的工具)是可得 到的。然而,這樣的工具與訪問它們的各種人工產(chǎn)物(artifact)的工具(例如,應用、包含 數(shù)據(jù)庫訪問的程序、例程、以及數(shù)據(jù)庫web服務)是不連接的。當計劃(propose)經(jīng)由DDL 而更改數(shù)據(jù)庫模式時,數(shù)據(jù)庫管理員(DBA)和開發(fā)者不能預測其訪問的應用和人工產(chǎn)物將 如何被該更改所影響。

發(fā)明內(nèi)容
本發(fā)明的一個實施例包括一種用于評估對由應用所訪問的數(shù)據(jù)庫的更改所導致 的對該應用的影響的方法。該方法一般可以包括接收提出的數(shù)據(jù)庫更改;識別由所提出 的數(shù)據(jù)庫更改修改的數(shù)據(jù)庫的一個或多個數(shù)據(jù)庫對象;對于每個識別的數(shù)據(jù)庫對象,分析 該應用的源代碼,以識別訪問相應數(shù)據(jù)庫對象的源代碼的一個或多個部分;生成對訪問所識別的數(shù)據(jù)庫對象之一的源代碼的每個部分的引用(reference),其中,每個引用將源代碼 的所識別的部分之一鏈接到由所提出的數(shù)據(jù)庫更改修改的相應的數(shù)據(jù)庫對象;將所述引用 組織到層級結(jié)構(gòu)中;以及生成引用的層級結(jié)構(gòu)的顯示,其中,該顯示允許用戶通過選擇引用 之一來訪問源代碼的相應部分。 本發(fā)明的另一實施例包括一種計算機程序產(chǎn)品,用于評估對由應用訪問的數(shù)據(jù)庫 的更改所導致的對該應用的影響。該計算機程序產(chǎn)品可以提供具有計算機可用程序代碼的 計算機可用介質(zhì)。該計算機程序代碼可以被配置為接收提出的數(shù)據(jù)庫更改;識別由所提 出的數(shù)據(jù)庫更改修改的數(shù)據(jù)庫的一個或多個數(shù)據(jù)庫對象;以及,對于每個識別的數(shù)據(jù)庫對 象,分析該應用的源代碼,以識別訪問各個數(shù)據(jù)庫對象的源代碼的一個或多個部分。該程序 代碼還可以被配置為生成對訪問所識別的數(shù)據(jù)庫對象之一的源代碼的每個部分的引用。 每個引用將源代碼的所識別的部分之一鏈接到由所提出的數(shù)據(jù)庫更改修改的相應數(shù)據(jù)庫 對象。該程序代碼還可以被配置為將所述引用組織到層級結(jié)構(gòu)中,并且生成引用的層級結(jié) 構(gòu)的顯示。該顯示允許用戶通過選擇所述引用之一來訪問源代碼的相應部分。
本發(fā)明的又一個實施例包括具有處理器和包含程序的存儲器的系統(tǒng),當該程序被 該處理器執(zhí)行時,該程序被配置為執(zhí)行用于評估由應用訪問的數(shù)據(jù)庫的更改所導致的對該 應用的影響的操作。該操作一般可以包括接收提出的數(shù)據(jù)庫更改;識別由所提出的數(shù)據(jù) 庫更改修改的數(shù)據(jù)庫的一個或多個數(shù)據(jù)庫對象;對于每個識別的數(shù)據(jù)庫對象,分析該應用 的源代碼,以識別訪問各個數(shù)據(jù)庫對象的源代碼的一個或多個部分;生成對訪問所識別的 數(shù)據(jù)庫對象之一的源代碼的每個部分的引用,其中,每個引用將源代碼的所識別的部分之 一鏈接到由所提出的數(shù)據(jù)庫更改修改的相應的數(shù)據(jù)庫對象;將所述引用組織到層級結(jié)構(gòu) 中;以及生成引用的層級結(jié)構(gòu)的顯示,其中,該顯示允許用戶通過選擇引用之一來訪問源代 碼的相應部分。


因此,可以詳細理解實現(xiàn)上面陳述的本發(fā)明的特征、優(yōu)勢和目標的方式,通過參照
在附圖中圖示的本發(fā)明的實施例,可以對上面簡要概括的本發(fā)明進行更加具體的描述。 然而,要注意,附圖僅圖示此發(fā)明的典型實施例,并且因此不被考慮為其范圍的限
制,因為本發(fā)明可以承認其它同等效果的實施例。 圖1是圖示根據(jù)本發(fā)明的一個實施例的、在數(shù)據(jù)庫服務器與應用和web服務的集 合之間的依賴性的框圖。 圖2是圖示根據(jù)本發(fā)明的一個實施例的、數(shù)據(jù)庫服務器和依賴的應用和web服務 的集合的硬件環(huán)境的框圖。 圖3是圖示根據(jù)本發(fā)明的一個實施例的、影響分析器的輸入和輸出的框圖。
圖4是圖示根據(jù)本發(fā)明的一個實施例的、用于識別數(shù)據(jù)庫更改對應用和web服務 的集合的影響的流程圖。 圖5圖示了根據(jù)本發(fā)明的一個實施例的、表定義和用于更改表的列的DDL語句兩 者的示例。 圖6圖示了根據(jù)本發(fā)明的實施例的顯示DDL語句的影響分析結(jié)果的圖形用戶界
面,其中突顯(highlight)訪問受影響的列的Java⑧應用的變量和方法。
圖7圖示了根據(jù)本發(fā)明的實施例的顯示DDL語句的影響分析結(jié)果的另一圖形用戶 界面,其中突顯訪問受影響的列的Java應用的對象和位置。 圖8圖示了根據(jù)本發(fā)明的一個實施例的顯示所提出的列更改的影響分析結(jié)果的 DDL查詢構(gòu)建器(builder)的圖形用戶界面。 圖9圖示了根據(jù)本發(fā)明的一個實施例的、顯示提出的列更改的影響分析結(jié)果的數(shù) 據(jù)建模工具的圖形用戶界面。
具體實施例方式
本發(fā)明的實施例提供用于識別提出的數(shù)據(jù)庫更改可能對被配置為訪問該數(shù)據(jù)庫 的應用的影響的技術(shù)。在一個實施例中,假定提出的數(shù)據(jù)庫更改,識別由該更改所影響的源 代碼。此技術(shù)可以包括訪問與提出的(proposed)DDL語句關(guān)聯(lián)的SQL模型,以及將該SQL 模型與給定應用的SQL模型比較。創(chuàng)建對受影響的源代碼的引用,并且將所述引用組織到 層級結(jié)構(gòu)中。創(chuàng)建從該層級結(jié)構(gòu)到該受影響的源代碼的鏈接。通過查看該層級結(jié)構(gòu),用戶 可以識別到提出的更改會如何影響該應用。此外,該用戶可以快速地訪問源代碼的有關(guān)部 分。 通過瀏覽受影響的源代碼,開發(fā)者可以在DBA確認數(shù)據(jù)庫模式中的更改之前,確 定所需要的更改范圍。此外,開發(fā)者可以更好地確保敏感信息不會作為模式更改的非預期 結(jié)果而錯誤地流至未經(jīng)授權(quán)的源。另外,開發(fā)者可以獲得相關(guān)的應用上下文(context)(諸 如應用架構(gòu)和web服務)的類似領會。 在團隊開發(fā)中,假定來自同伴開發(fā)者的提出的更改,開發(fā)者可以確知在其應用中 所需的更改范圍。團隊可以開會并調(diào)整DDL語句,并且查看每個DDL語句可能具有的對應 用的影響,從而使得團隊便于關(guān)于特定模式更改的回顧和協(xié)議。 下面,參考本發(fā)明的實施例。然而,應當理解,本發(fā)明不限于具體描述的實施例。相 反,下列特征和元素的任何組合(不論是否涉及不同的實施例)預期為實施并實踐本發(fā)明。 此外,在各個實施例中,本發(fā)明提供了勝于現(xiàn)有技術(shù)的大量優(yōu)勢。然而,雖然本發(fā)明的實施 例可以實現(xiàn)勝于其它可能的解決方案和/或勝于現(xiàn)有技術(shù)的優(yōu)勢,但是是否由給定實施例 實現(xiàn)特定優(yōu)勢不是本發(fā)明的限制。因此,下面的方面、特征、實施例和優(yōu)勢僅僅是舉例說明 的,并且不被考慮為所附權(quán)利要求書的元素或限制(除了在一個(多個)權(quán)利要求中明確 陳述的之外)。同樣地,對"本發(fā)明"的引用不應被解釋為對這里公開的任何創(chuàng)造性主題的 概括,并且不應被考慮為所附權(quán)利要求的元素或限制(除了在一個(多個)權(quán)利要求中明 確陳述的之外)。 將本發(fā)明的一個實施例實施為用于計算機系統(tǒng)的程序產(chǎn)品。該程序產(chǎn)品的(多 個)程序定義實施例(包括這里描述的方法)的功能,并且可以包含在多種計算機可讀存 儲介質(zhì)上。舉例說明的計算機可讀存儲介質(zhì)包括、但不限于(i)信息在其上永久存儲的不 可寫存儲介質(zhì)(例如,計算機內(nèi)的只讀存儲設備,諸如由CD-ROM驅(qū)動器可讀的CD-ROM盤); (ii)在其上存儲可變的信息的可寫存儲介質(zhì)(例如,軟驅(qū)中的軟盤或硬盤驅(qū)動器)。當攜帶 指示本發(fā)明的功能的計算機可讀指令時,這樣的計算機可讀存儲介質(zhì)時本發(fā)明的實施例。 其它介質(zhì)包括通信介質(zhì),通過該通信介質(zhì)而將信息傳遞到計算機,例如,通過計算機或電話 網(wǎng)絡(包括無線通信網(wǎng)絡)。后面的實施例具體地包括將信息傳送至因特網(wǎng)和其它網(wǎng)絡/從因特網(wǎng)和其它網(wǎng)絡傳送信息。當攜帶指示本發(fā)明的功能的計算機可讀指令時,這樣的通 信介質(zhì)時本發(fā)明的實施例。廣義上,計算機可讀存儲介質(zhì)和通信介質(zhì)可以在這里成為計算 機可讀介質(zhì)。 —般而言,被執(zhí)行用以實施本發(fā)明的實施例的例程可以是操作系統(tǒng)或具體應用的 一部分、組件、程序、模塊、對象或指令序列。本發(fā)明的計算機程序典型地由大量指令組成, 所述指令將被本地計算機解譯為機器可讀格式并且此后為可執(zhí)行指令。此外,程序由或者 本地地存在于程序中、或者發(fā)現(xiàn)于存儲器中或存儲設備上的變量和數(shù)據(jù)結(jié)構(gòu)組成。另外,可 以基于在本發(fā)明的具體實施例中實施下文中描述的各種程序所針對的應用,來識別所述程 序。然而,應當理解,接著的任何特定程序術(shù)語僅僅為了方便而使用,并且因此不應將本發(fā) 明限制為僅僅用在由這樣的術(shù)語識別的和/或暗示的任何具體應用。 圖1是圖示根據(jù)本發(fā)明的一個實施例的、在數(shù)據(jù)庫服務器與應用和web服務的集 合之間的依賴性的框圖。如所示的,示例計算環(huán)境100包括應用140和數(shù)據(jù)庫web服務150, 其各自與數(shù)據(jù)庫服務器120連接,以訪問數(shù)據(jù)庫130。如果用戶經(jīng)由數(shù)據(jù)庫服務器120而 針對于數(shù)據(jù)庫130執(zhí)行DDL語句110,則應用140或數(shù)據(jù)庫web服務150會被通過執(zhí)行DDL 語句110而導致的數(shù)據(jù)庫更改所影響。通常,web服務150代表可經(jīng)由軟件協(xié)議訪問的任 何程序或軟件組件,例如,web服務、WSDL、 REST、 TCP/IP、網(wǎng)絡、(企業(yè))服務總線、面向服務 的架構(gòu)、WSDL、 URI、 URL、 RSH、 RLogin、或遠程進程調(diào)用。此外,數(shù)據(jù)庫修改還可以包括對數(shù) 據(jù)庫例程、所存儲的過程、用戶定義的功能、用戶定義的數(shù)據(jù)類型、約束(constraint)和數(shù) 據(jù)庫觸發(fā)器的更改。可以被修改的其它數(shù)據(jù)庫組件包括被生成用于對象關(guān)系映射系統(tǒng)的 人工產(chǎn)物,如EJB⑧(企業(yè)Java⑧Beans應用)、JPA (Java⑧持久性架構(gòu))、JDO (Java⑧數(shù) 據(jù)對象)、JAX-RPC和JAX-WS (Java⑧遠程進程調(diào)用禾卩Java⑧Web服務)、以及Hibemate⑧.
對象/關(guān)系持久性和查詢服務;以及其它數(shù)據(jù)庫模型,例如,實體關(guān)系圖和UML (統(tǒng)一建模語 言)模型。 圖2是圖示根據(jù)本發(fā)明的一個實施例的、數(shù)據(jù)庫服務器和依賴的應用和web服務 的集合的硬件環(huán)境200的框圖。如所示出的,硬件環(huán)境200包括客戶端計算機220、260、280 和數(shù)據(jù)庫服務器系統(tǒng)240。在一個實施例中,在硬件環(huán)境200中圖示的計算機系統(tǒng)可以包括 現(xiàn)有的計算機系統(tǒng),例如,桌面型計算機、服務器計算機、膝上型計算機、平板型計算機等。 然而,圖2中圖示的計算環(huán)境200僅僅是一個計算環(huán)境的示例??梢允褂闷渌h(huán)境來實施 本發(fā)明的實施例,而不用考慮計算機系統(tǒng)是復雜多用戶計算系統(tǒng)(例如,通過高速網(wǎng)絡連 接的單獨計算機的集群)、單用戶工作站、還是無非易失性存儲裝置的網(wǎng)絡設備。此外,圖 2中圖示的和這里描述的軟件應用可以通過使用在現(xiàn)有計算機系統(tǒng)(例如,桌上型計算機、 服務器計算機、膝上型計算機、平板型計算機等)上執(zhí)行的計算機軟件應用來實施。然而, 這里描述的軟件應用不限于任何當前現(xiàn)有的計算環(huán)境或編程語言,并且可以被適配為隨著 新的計算系統(tǒng)變?yōu)榭捎枚盟鼈兊膬?yōu)勢。 如所示的,數(shù)據(jù)庫服務器系統(tǒng)220包括處理器221,其從存儲器222和存儲裝置 225獲得指令和數(shù)據(jù)。處理器221可以是被適配為支持本發(fā)明的方法的任何處理器。存儲 器222是大到足以保存必要的程序和數(shù)據(jù)結(jié)構(gòu)的任何存儲器。存儲器222可以是包括隨機 存取存儲裝置、非易失性或備份存儲器的存儲器件(例如,可編程或快閃存儲裝器、只讀存 儲裝器等)之一或組合。另外,存儲器222和存儲裝置225可以被考慮為包括物理上位于服務器中的其它位置(例如,在耦接至數(shù)據(jù)庫服務器220的另一計算機上)的存儲器。數(shù) 據(jù)庫服務器系統(tǒng)220可以被可操作地連接至網(wǎng)絡(未示出),該網(wǎng)絡通常代表任何種類的數(shù) 據(jù)通信網(wǎng)絡。從而,該網(wǎng)絡可以表示本地網(wǎng)絡和廣域網(wǎng)(包括因特網(wǎng))兩者。在數(shù)據(jù)庫服 務器系統(tǒng)220上,數(shù)據(jù)庫服務器223駐留于存儲器222中,并且其關(guān)聯(lián)的數(shù)據(jù)庫226駐留于 存儲裝置225中。說明性地,數(shù)據(jù)庫226包括一個或多個模式227和數(shù)據(jù)228。每個模式 227定義對于數(shù)據(jù)228的相應集的組織布置。 如所示的,客戶端計算機240、260、280各自包括處理器241、261、281,其經(jīng)由總線 從存儲器222、262、282和客戶端存儲裝置獲得指令和數(shù)據(jù)。處理器241、261、281是在計算 機中執(zhí)行所有的指令、邏輯和數(shù)學處理的可編程邏輯器件??蛻舳舜鎯ρb置存儲用于由客 戶端計算機240、260、280使用的應用程序和數(shù)據(jù)。客戶端存儲裝置包括硬盤驅(qū)動器、閃存 器件、光介質(zhì)等??蛻舳擞嬎銠C240、260、280被可操作地連接至網(wǎng)絡??蛻舳舜鎯ζ?42、 262、282包括操作系統(tǒng)。該操作系統(tǒng)是用于管理客戶端計算機240、260、280的操作的軟件。 操作系統(tǒng)的示例包括UNIX⑧操作系統(tǒng)、Microsoft Windows⑧操作系統(tǒng)的一個版本、以 及LimiX⑧操作系統(tǒng)的發(fā)布版。(注意Li皿x是美國和其它國家中的Li皿s Torvlds的商
標) 如所示的,客戶端計算機240包括經(jīng)由數(shù)據(jù)庫服務器223而訪問數(shù)據(jù)庫226的存 儲器242中的應用243。類似地,客戶端計算機260包括經(jīng)由數(shù)據(jù)庫服務器223而訪問數(shù)據(jù) 庫226的存儲器262中的數(shù)據(jù)庫web服務263。此外,客戶端計算機280包括要經(jīng)由數(shù)據(jù) 庫服務器223而針對于數(shù)據(jù)庫226而被執(zhí)行的、存儲器282中的DDL語句283。然而,針對 于數(shù)據(jù)庫226而執(zhí)行DDL語句283會以不利地影響應用243和/或數(shù)據(jù)庫web服務263的 方式更改數(shù)據(jù)庫模式227。例如,DDL語句可重命名或丟棄(drop)列、或者更改列的數(shù)據(jù)類 型。DDL語句還可以重命名或丟棄表。 圖3是圖示根據(jù)本發(fā)明的一個實施例的、影響分析器350的輸入和輸出的集合的 框圖。如所示的,該影響分析器被集成到集成開發(fā)環(huán)境(IDE)340中。在IDE中,計算機用 戶和程序員使用程序編輯器,以便以源代碼的形式寫計算機程序并且開發(fā)軟件應用?;蛘撸?可以通過諸如反編譯現(xiàn)有應用的其它技術(shù)來獲得源代碼。在一個實施例中,該影響分析器 接收DDL語句330,并且確定(不實際執(zhí)行該DDL語句330) DDL語句330會如何影響任何 應用或web服務。該影響分析器350輸出影響分析結(jié)果380,其詳細示出受影響的應用和 數(shù)據(jù)庫web服務。這樣的細節(jié)可以是受影響的工作空間、項目和模塊,或者更具體地,例如 源代碼文件中的位置、方法、對象和變量。例如,影響分析結(jié)果380可以列出將受DDL語句 330影響的應用源代碼360或web服務源代碼370的具體行。該分析結(jié)果380使得用戶能 夠確知該DDL語句330對該應用或web服務的影響的程度。 圖4是圖示根據(jù)本發(fā)明的一個實施例的、用于識別數(shù)據(jù)庫更改對應用和web服務 的集合的影響的流程圖。為了舉例說明,與圖3的系統(tǒng)結(jié)合描述方法400。然而,本領域的 技術(shù)人員將理解,被配置為以任何順序執(zhí)行方法400的步驟的任何系統(tǒng)處于本發(fā)明的范圍 內(nèi)。 如所示的,方法400在步驟410開始,其中,由影響分析器350接收提出的DDL語 句330。例如,假設接收到用于重命名表列的名稱的DDL語句。在步驟420,影響分析器350 連接至數(shù)據(jù)庫320。 一旦連接,則該影響分析器350可以從數(shù)據(jù)庫請求描述特定數(shù)據(jù)庫的結(jié)構(gòu)或模式的信息?;蛘撸梢詮哪P突驍?shù)據(jù)庫狀態(tài)的其它表示來確定此信息。在這樣的 情況下,該影響分析器350可以訪問描述數(shù)據(jù)庫的模型,而不連接至實際數(shù)據(jù)庫或DBMS系 統(tǒng)。在步驟430,影響分析器350識別被所提出的DDL語句影響的每個數(shù)據(jù)庫對象。數(shù)據(jù)庫 對象的示例包括數(shù)據(jù)庫、模式、表、表空間、視圖、列、約束、特權(quán)(privilege)、主鍵(primary key)、外鍵(foreign key)、以及進程。例如,影響分析器350可以識別由DDL語句重命名的 列。 在步驟440,影響分析器識別訪問數(shù)據(jù)庫對象的所有應用/web服務對象和方法。 例如,對于Java應用,影響分析器440識別訪問由DDL語句重命名的數(shù)據(jù)庫列的源代碼。在 步驟450,影響分析器350創(chuàng)建對受影響的源代碼的引用,并且,將所述引用組織到層級結(jié) 構(gòu)中。引用包括源代碼文件名和行號。例如,可以通過源代碼文件名來分組該層級結(jié)構(gòu),并 且,每個文件名與對應于受影響的源代碼的行號的列表關(guān)聯(lián)。 在步驟460,影響分析器350生成分析結(jié)果380,其顯示該層級結(jié)構(gòu),并且允許用戶 以視覺上區(qū)分(例如,突顯的)方式來訪問并查看受影響的源代碼。此外,可以生成來自影 響分析器350的額外輸出,例如,用以使得代碼和/或SQL適配于更改的所提出的動作。例 如,假設列的數(shù)據(jù)類型從字符更改為整數(shù),以及應用程序中的函數(shù)調(diào)用可包括用于存儲來 自該列的值的字符(或字符串)變量。在這樣的情況下,影響分析器350可以建議將字符 更改為整數(shù)數(shù)據(jù)類型的、對功能定義的修改。 例如,用戶可以雙擊層級結(jié)構(gòu)中的條目,以訪問以視覺上區(qū)分的方式(例如,突顯 的)為格式的源代碼。因此,用戶可以通過查看分析結(jié)果380,確知DDL語句對web應用或 web服務的預期影響。在一個實施例中,影響分析器350可以支持編輯模式(其中,用戶可 以讀取并修改受影響的源代碼)以及只讀模式(其中,用戶可以讀取但不能修改受影響的 源代碼)。此外,影響分析器350可以是獨立工具、或IDE工具(例如,Eclipse IDE)的一 部分。在步驟450之后,方法400終止。 層級結(jié)構(gòu)可以在用戶界面中被顯示為樹型控件。在這樣的情況下,該樹可以包括 代表源代碼文件的節(jié)點。樹中的節(jié)點可以顯示源代碼文件的名稱,并且,可以被展開以示出 (或者折疊以隱藏)對受影響的源代碼的引用(例如,行號)。 —旦用戶使用例如鼠標的輸入設備而選擇引用,則影響分析器可以在新的用戶界 面窗口中顯示關(guān)聯(lián)的源代碼文件。另外,影響分析器350可以滾動至源代碼文件的所引用 的位置,移動光標至所引用的對象或方法,并且以視覺上區(qū)分的方式(例如,突顯、下劃線、 粗體等)格式化適當?shù)脑创a。 圖5圖示了根據(jù)本發(fā)明的一個實施例的、表定義510和用于更改表的列的DDL語 句520兩者的示例。說明性地,表定義510創(chuàng)建表"ACT",其具有三個字段類型SMALLINT 的"ACTNO"、類型CHAR(6)的"ACTKWD"、以及類型的VARCHAR(20)的"ACTDESC"。 DDL語句 520將ACTN0列從類型SMALLINT更改為類型VARCHAR(5)。即,該表定義包括三列,其中,兩 列存儲文本字符, 一列存儲數(shù)值。 圖6圖示了根據(jù)本發(fā)明的實施例的、顯示DDL語句520的影響分析結(jié)果380的圖 形用戶界面。影響分析結(jié)果380還顯示受影響的源代碼位置的層級結(jié)構(gòu)620,其中,該層級 結(jié)構(gòu)620被無縫地集成到IDE中,允許用戶經(jīng)由該層級結(jié)構(gòu)620而訪問特定的受影響的源 代碼。此外,影響分析結(jié)果還突顯(610)訪問受影響的列的變量和方法。
圖7圖示了根據(jù)本發(fā)明的實施例的、顯示DDL語句520的影響分析結(jié)果380的IDE 的另一圖形用戶界面。根據(jù)本發(fā)明的一個實施例,影響分析結(jié)果380還顯示受影響的對象 和它們的源代碼位置的層級結(jié)構(gòu)720,其中,該層級結(jié)構(gòu)720被無縫地集成到IDE中,從而允 許用戶經(jīng)由該層級結(jié)構(gòu)720而訪問特定源代碼位置。此外,影響分析結(jié)果還突顯(710)訪 問受影響的列的對象和位置。 圖8圖示了根據(jù)本發(fā)明的一個實施例的、顯示對于將ACTNO列類型從SMALLINT更 改為VARCHAR的影響分析結(jié)果380的、數(shù)據(jù)庫管理應用的DDL查詢構(gòu)建器810窗口的圖形 用戶界面。根據(jù)本發(fā)明的一個實施例,影響分析結(jié)果380還顯示受影響的源代碼位置的層 級結(jié)構(gòu)820,其中,層級結(jié)構(gòu)820被無縫地集成到IDE中,從而允許用戶經(jīng)由層級結(jié)構(gòu)820而 訪問特定源代碼位置。 圖9圖示了根據(jù)本發(fā)明的一個實施例的、顯示對于將ACTNO列類型從SMALLINT更 改為VARCHAR的影響分析結(jié)果380的、數(shù)據(jù)建模工具的圖形用戶界面。影響分析結(jié)果380 顯示(910)受影響的數(shù)據(jù)庫對象、Java應用和數(shù)據(jù)庫服務。受影響的數(shù)據(jù)庫對象可以包括 表、列、列定義等。受影響的數(shù)據(jù)庫對象還可以包括對象關(guān)系映射系統(tǒng)的組件,如EJB(企 業(yè)Java Beans) 、 JPA (Java持久性架構(gòu))、JDO (Java數(shù)據(jù)對象)、JAX-RPC和JAX-WS (Java 遠程進程調(diào)用和Java Web服務)、以及Hibernate ;以及數(shù)據(jù)庫模型,例如,實體關(guān)系圖和 UML(統(tǒng)一建模語言)模型。 對于Java應用和數(shù)據(jù)庫web服務,影響分析結(jié)果包括對Java源代碼及其行號的 引用,以提供列更改的影響的更清楚的視圖。 當然,這里描述的實施例意在說明性的,并且并非本發(fā)明的限制,以及,其它實施 例是廣義上預期的。例如,本領域的技術(shù)人員將認識到,影響分析器350可以是獨立的或 被集成到IDE中的應用、數(shù)據(jù)庫管理應用、或數(shù)據(jù)建模工具。此外,所提出的數(shù)據(jù)庫更改可 以是以SQL DDL語句形式的,或者是經(jīng)由查詢構(gòu)建器界面而指定的。另外,應用130可以 以具有數(shù)據(jù)庫訪問能力(經(jīng)由庫、擴展、模塊、封裝(package)等)的任何編程語言(例如 Java⑧或C/C++編程語言)寫入。此外,可以通過變量和方法名稱來進一步組織該層級結(jié) 構(gòu);受影響的源代碼可以來自于指定的工作空間、項目、應用或數(shù)據(jù)庫web服務;以及,作為 所提出的數(shù)據(jù)庫更改的目標的數(shù)據(jù)庫對象可以是數(shù)據(jù)庫、模式、表、表空間、視圖、列、約束、 特權(quán)、主鍵、外鍵、進程等。 雖然前文針對于本發(fā)明的實施例,但是可以設計本發(fā)明的其它和進一步的實施 例,而不脫離其基本范圍,并且,其范圍由所附的權(quán)利要求確定。
權(quán)利要求
一種用于評估對由應用訪問的數(shù)據(jù)庫的更改所導致的對所述應用的影響的方法,包括接收所提出的數(shù)據(jù)庫更改;識別由所提出的數(shù)據(jù)庫更改所修改的數(shù)據(jù)庫的一個或多個數(shù)據(jù)庫對象;對于每個識別的數(shù)據(jù)庫對象,分析所述應用的源代碼,以識別訪問相應數(shù)據(jù)庫對象的所述源代碼的一個或多個部分;生成對訪問所識別的數(shù)據(jù)庫對象之一的源代碼的每個部分的引用,其中,每個引用將源代碼的所識別的部分之一鏈接到由所提出的數(shù)據(jù)庫更改所修改的相應的數(shù)據(jù)庫對象;將所述引用組織到層級結(jié)構(gòu)中;以及生成引用的層級結(jié)構(gòu)的顯示,其中,所述顯示允許用戶通過選擇所述引用之一來訪問源代碼的相應部分。
2. 如權(quán)利要求1所述的方法,還包括生成對應于引用的層級結(jié)構(gòu)中的所選擇的一個引用的源代碼的顯示,其中,對應于所 選擇的引用的所述源代碼被格式化為在視覺上不同于所述應用的其它源代碼。
3. 如權(quán)利要求l所述的方法,其中,所提出的數(shù)據(jù)庫更改是以結(jié)構(gòu)化查詢語言(SQL)數(shù) 據(jù)定義語言(DDL)語句的形式。
4. 如權(quán)利要求1所述的方法,還包括基于由所提出的數(shù)據(jù)庫更改指定的對相應數(shù)據(jù) 庫對象的修改,生成對源代碼的所述部分中的至少一個部分的建議的修改。
5. 如權(quán)利要求1所述的方法,其中,通過項目名稱和源代碼文件名來組織所述層級結(jié)構(gòu)。
6. 如權(quán)利要求5所述的方法,其中,還通過變量名稱和方法名稱來組織所述層級結(jié)構(gòu)。
7. 如權(quán)利要求1所述的方法,其中,所述源代碼的所識別的部分中的每個來自于指定 的工作空間、項目、應用、或數(shù)據(jù)庫web服務。
8. 如權(quán)利要求1所述的方法,其中,每個識別的數(shù)據(jù)庫對象是數(shù)據(jù)庫、模式、表、表空 間、視圖、列、約束、特權(quán)、主鍵、外鍵和進程中的一個。
9. 一種用于評估對由應用訪問的數(shù)據(jù)庫的更改所導致的對所述應用的影響的計算機 程序產(chǎn)品,所述計算機程序產(chǎn)品包括具有被配置為實施權(quán)利要求1至8中的任何方法的計 算機可用程序代碼的計算機可用介質(zhì)。
10. —種系統(tǒng),包括 處理器;包含程序的存儲器,當由所述處理器執(zhí)行所述程序時,所述程序被配置為執(zhí)行用于評 估對由應用訪問的數(shù)據(jù)庫的更改所導致的對所述應用的影響的操作,所述操作包括 接收所提出的數(shù)據(jù)庫更改;識別由所提出的數(shù)據(jù)庫更改所修改的數(shù)據(jù)庫的一個或多個數(shù)據(jù)庫對象;對于每個識別的數(shù)據(jù)庫對象,分析所述應用的源代碼,以識別訪問各個數(shù)據(jù)庫對象的 所述源代碼的一個或多個部分;生成對訪問所識別的數(shù)據(jù)庫對象之一的源代碼的每個部分的引用,其中,每個引用將 源代碼的所識別的部分之一鏈接到由所提出的數(shù)據(jù)庫更改所修改的相應的數(shù)據(jù)庫對象;將所述引用組織到層級結(jié)構(gòu)中;以及生成引用的層級結(jié)構(gòu)的顯示,其中,所述顯示允許用戶通過選擇所述引用之一來訪問 源代碼的相應部分。
11. 如權(quán)利要求10所述的系統(tǒng),其中,所述操作還包括生成對應于引用的層級結(jié)構(gòu)中的所選擇的一個引用的源代碼的顯示,其中,對應于所 選擇的引用的所述源代碼被格式化為在視覺上不同于所述應用的其它源代碼。
12. 如權(quán)利要求10所述的系統(tǒng),其中,所提出的數(shù)據(jù)庫更改是以結(jié)構(gòu)化查詢語言(SQL) 數(shù)據(jù)定義語言(DDL)語句的格式。
13. 如權(quán)利要求IO所述的系統(tǒng),其中,所述操作還包括基于由所提出的數(shù)據(jù)庫更改指定的對相應數(shù)據(jù)庫對象的修改,生成對源代碼的所述部 分中的至少一個的建議的修改。
14. 如權(quán)利要求IO所述的系統(tǒng),其中,通過項目名稱和源代碼文件名來組織所述層級結(jié)構(gòu)。
15. 如權(quán)利要求14所述的系統(tǒng),其中,還通過變量和方法名稱來組織所述層級結(jié)構(gòu)。
16. 如權(quán)利要求IO所述的系統(tǒng),其中,所述源代碼的所識別的部分中的每一個來自于 指定的工作空間、項目、應用、或數(shù)據(jù)庫恥b服務。
17. 如權(quán)利要求10所述的系統(tǒng),其中,每個識別的數(shù)據(jù)庫對象是數(shù)據(jù)庫、模式、表、表空 間、視圖、列、約束、特權(quán)、主鍵、外鍵和進程中的一個。
全文摘要
公開了一種用于識別數(shù)據(jù)庫更改對應用的影響的方法和系統(tǒng)。在提出的數(shù)據(jù)庫更改的情況下,識別到被所提出的數(shù)據(jù)庫更改影響的受影響的源代碼。創(chuàng)建對受影響的源代碼的引用,并且將所述引用組織到層級結(jié)構(gòu)中。用戶可以通過查看該層級結(jié)構(gòu)來確知影響的程度,并且通過使用該層級結(jié)構(gòu)來以視覺上區(qū)分的方式訪問和查看受影響的源代碼。
文檔編號G06F17/30GK101727320SQ20091020773
公開日2010年6月9日 申請日期2009年10月22日 優(yōu)先權(quán)日2008年10月22日
發(fā)明者伊戈爾·佩尚斯基, 佐斯·O·考特伊斯, 托尼·K·勒昂, 斯蒂芬·A·布羅德斯基, 瑞貝卡·B·尼恩, 索納里·蘇蘭格, 邁克爾·G·伯克, 阿扎德·阿哈迪安 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
胶州市| 屯昌县| 同德县| 东辽县| 体育| 三台县| 西城区| 驻马店市| 区。| 锡林郭勒盟| 宁津县| 寿宁县| 中牟县| 济阳县| 山西省| 中卫市| 阳城县| 望江县| 西峡县| 喜德县| 介休市| 克拉玛依市| 高密市| 汶川县| 瑞丽市| 淮阳县| 邹平县| 云阳县| 洛川县| 东方市| 泽州县| 安阳县| 普格县| 塔城市| 嘉黎县| 紫金县| 张家港市| 河池市| 青冈县| 麦盖提县| 克拉玛依市|