專利名稱:數(shù)據(jù)庫(kù)主動(dòng)掃描系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)庫(kù)主動(dòng)掃描系統(tǒng)及方法。
背景技術(shù):
在辦公自動(dòng)化高速發(fā)展的今天,數(shù)據(jù)庫(kù)系統(tǒng)可以說是被應(yīng)用最多的一種軟件了。我們?cè)?工作與生活中所應(yīng)用的系統(tǒng)中幾乎90%以上的系統(tǒng)都可以被稱之為數(shù)據(jù)庫(kù)系統(tǒng)。這些系統(tǒng)不 管是Web類型的還是桌面應(yīng)用程序,它們都有個(gè)共同的特點(diǎn)涉及數(shù)據(jù)庫(kù)技術(shù)。
目前,Web系統(tǒng)和應(yīng)用系統(tǒng)中對(duì)數(shù)據(jù)庫(kù)訪問的方法都是被動(dòng)及全局訪問的,即一旦有數(shù) 據(jù)變更,數(shù)據(jù)庫(kù)被動(dòng)的接收到消息,然后對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行全局的掃描找到被修改的數(shù)據(jù), 最后再將改變的數(shù)據(jù)呈現(xiàn)在客戶端上,這樣一來,即使客戶端修改了很簡(jiǎn)單的一條數(shù)據(jù),數(shù) 據(jù)庫(kù)都要對(duì)所有的數(shù)據(jù)進(jìn)行掃描,這些數(shù)據(jù)中絕大多數(shù)是沒有必要進(jìn)行掃描的數(shù)據(jù)。每次數(shù) 據(jù)庫(kù)訪問的時(shí)候,很大一部分資源及時(shí)間都浪費(fèi)在對(duì)沒有發(fā)生改變的數(shù)據(jù)的掃描上,而且過 于頻繁的訪問數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)庫(kù)會(huì)造成很大的壓力,有可能導(dǎo)致數(shù)據(jù)庫(kù)的崩漬及數(shù)據(jù)的丟失。
發(fā)明內(nèi)容
鑒于以上內(nèi)容,有必要提供一種有效的數(shù)據(jù)庫(kù)主動(dòng)掃描的計(jì)算機(jī)系統(tǒng)。 還有必要提供一種有效的數(shù)據(jù)庫(kù)主動(dòng)掃描方法。
所述數(shù)據(jù)庫(kù)主動(dòng)掃描的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括獲取模塊,用于獲取數(shù)據(jù)庫(kù) 中所有數(shù)據(jù)表的ID,并將所獲取的ID存儲(chǔ)于一種數(shù)據(jù)結(jié)構(gòu)中;設(shè)置模塊,用于設(shè)置所述數(shù)據(jù) 結(jié)構(gòu)中每個(gè)ID的屬性值,每個(gè)ID包括兩種屬性值第一屬性值和第二屬性值,且所述ID的屬 性初始值為第二屬性值,該設(shè)置模塊,還用于將所述數(shù)據(jù)結(jié)構(gòu)中被修改的數(shù)據(jù)表的ID的屬性 由第二屬性值改為第一屬性值;接收模塊,用于當(dāng)應(yīng)用系統(tǒng)修改數(shù)據(jù)庫(kù)時(shí),接收所述應(yīng)用系 統(tǒng)所發(fā)送的數(shù)據(jù)庫(kù)中被修改的數(shù)據(jù)表的ID;控制模塊,用于控制所述應(yīng)用系統(tǒng)獲取所述數(shù)據(jù) 結(jié)構(gòu)中所有屬性為第一屬性值的ID,還用于根據(jù)屬性為第一屬性值的ID,控制所述應(yīng)用系統(tǒng) 獲取數(shù)據(jù)庫(kù)中所述ID所對(duì)應(yīng)的數(shù)據(jù)表中的數(shù)據(jù);及所述設(shè)置模塊,還用于當(dāng)所述應(yīng)用系統(tǒng)獲 取了所述數(shù)據(jù)結(jié)構(gòu)中所有屬性為第一屬性值的ID后,將所述數(shù)據(jù)結(jié)構(gòu)中所述屬性為第一屬性 值的ID的屬性重新設(shè)置為第二屬性值。
所述數(shù)據(jù)庫(kù)主動(dòng)掃描方法,該方法包括如下步驟獲取數(shù)據(jù)庫(kù)中所有數(shù)據(jù)表的ID,并將 所獲取的ID存儲(chǔ)于一種數(shù)據(jù)結(jié)構(gòu)中;設(shè)置所述數(shù)據(jù)結(jié)構(gòu)中每個(gè)ID的屬性值,每個(gè)ID包括兩種屬性值第一屬性值和第二屬性值,且所述ID的屬性初始值為第二屬性值;接收應(yīng)用系統(tǒng)所 發(fā)送的數(shù)據(jù)庫(kù)中被修改的數(shù)據(jù)表的ID;將所述數(shù)據(jù)結(jié)構(gòu)中被修改的數(shù)據(jù)表的ID的屬性由第二 屬性值改為第一屬性值;所述應(yīng)用系統(tǒng)獲取所述數(shù)據(jù)結(jié)構(gòu)中所有屬性為第一屬性值的ID;將 所述數(shù)據(jù)結(jié)構(gòu)中所述屬性為第一屬性值的ID的屬性重新設(shè)置為第二屬性值;及所述應(yīng)用系統(tǒng)
根據(jù)屬性為第一屬性值的ID獲取數(shù)據(jù)庫(kù)中所述ID所對(duì)應(yīng)的數(shù)據(jù)表中的數(shù)據(jù)。
相較于現(xiàn)有技術(shù),所述數(shù)據(jù)庫(kù)主動(dòng)掃描系統(tǒng)及方法,使得數(shù)據(jù)庫(kù)能夠主動(dòng)觀測(cè)及掃描, 減少了對(duì)數(shù)據(jù)庫(kù)的無效訪問,減輕數(shù)據(jù)訪問對(duì)數(shù)據(jù)庫(kù)產(chǎn)生的負(fù)擔(dān),提高數(shù)據(jù)庫(kù)訪問的效率。
圖l是本發(fā)明數(shù)據(jù)庫(kù)主動(dòng)掃描的計(jì)算機(jī)系統(tǒng)較佳實(shí)施例的硬件架構(gòu)圖。
圖2是圖1中計(jì)算機(jī)系統(tǒng)1較佳實(shí)施例的功能模塊圖。 圖3是本發(fā)明數(shù)據(jù)庫(kù)主動(dòng)掃描方法較佳實(shí)施例的作業(yè)流程圖。
具體實(shí)施例方式
如圖1所示,是本發(fā)明數(shù)據(jù)庫(kù)主動(dòng)掃描的計(jì)算機(jī)系統(tǒng)較佳實(shí)施例的硬件架構(gòu)圖。該計(jì)算
機(jī)系統(tǒng)1上運(yùn)行了多個(gè)應(yīng)用系統(tǒng)2,所述應(yīng)用系統(tǒng)2連接一個(gè)數(shù)據(jù)庫(kù)3,該數(shù)據(jù)庫(kù)3可以在計(jì)算 機(jī)內(nèi),也可以置于計(jì)算機(jī)之外。該數(shù)據(jù)庫(kù)3用于存儲(chǔ)所述應(yīng)用系統(tǒng)2的所有數(shù)據(jù)。所述應(yīng)用系 統(tǒng)2還提供了一個(gè)用戶界面,用于供用戶査看數(shù)據(jù)庫(kù)中數(shù)據(jù)及數(shù)據(jù)更新情況。所述數(shù)據(jù)庫(kù)3中 有多個(gè)數(shù)據(jù)表4,每個(gè)數(shù)據(jù)表4中有多條數(shù)據(jù),每個(gè)數(shù)據(jù)表4對(duì)應(yīng)一個(gè)ID。本實(shí)施例中,以一 個(gè)應(yīng)用系統(tǒng)2為例進(jìn)行說明本發(fā)明。該應(yīng)用系統(tǒng)2在對(duì)數(shù)據(jù)庫(kù)3提出修改數(shù)據(jù)的命令時(shí),同時(shí) 發(fā)送數(shù)據(jù)庫(kù)3被修改的通知給計(jì)算機(jī)系統(tǒng)1 。
如圖2所示,是本發(fā)明數(shù)據(jù)庫(kù)主動(dòng)掃描的計(jì)算機(jī)系統(tǒng)較佳實(shí)施例的功能模塊圖。該計(jì)算 機(jī)系統(tǒng)包括獲取模塊IO、設(shè)置模塊12、接收模塊14、控制模塊16及顯示模塊18。
獲取模塊10用于獲取數(shù)據(jù)庫(kù)3中的所有數(shù)據(jù)表4的ID及獲取所述應(yīng)用系統(tǒng)2所發(fā)送的數(shù)據(jù) 庫(kù)3被修改的通知,并將所獲取的ID存儲(chǔ)于一種數(shù)據(jù)結(jié)構(gòu)中,該數(shù)據(jù)結(jié)構(gòu)可以為二維數(shù)組、 鏈表等。
設(shè)置模塊12用于將所述數(shù)據(jù)結(jié)構(gòu)中的每個(gè)ID設(shè)置兩個(gè)屬性值change和original。屬性 值change表示該ID所對(duì)應(yīng)的數(shù)據(jù)表4中的數(shù)據(jù)已經(jīng)被修改,屬性值original表示該ID所對(duì)應(yīng) 的數(shù)據(jù)表4中的數(shù)據(jù)沒有被修改。所有數(shù)據(jù)表4的ID的屬性初始值設(shè)置為original。該設(shè)置模 塊12還用于將所述數(shù)據(jù)結(jié)構(gòu)中對(duì)應(yīng)的被修改的數(shù)據(jù)表4的ID的屬性由original改為change。 接收模塊14用于接收應(yīng)用系統(tǒng)2所發(fā)送的數(shù)據(jù)庫(kù)3中被修改的數(shù)據(jù)表4的ID。 控制模塊16用于控制所述應(yīng)用系統(tǒng)2獲取所述數(shù)據(jù)結(jié)構(gòu)中所有屬性為change的ID。該控制模塊16還用于控制所述應(yīng)用系統(tǒng)2訪問數(shù)據(jù)庫(kù)3中的數(shù)據(jù)表,該數(shù)據(jù)表的ID為所獲取的屬性 為change的ID,所述應(yīng)用系統(tǒng)2訪問所述數(shù)據(jù)表,并獲取該數(shù)據(jù)表中的所有數(shù)據(jù)。
所述設(shè)置模塊12還用于當(dāng)應(yīng)用系統(tǒng)2獲取了數(shù)據(jù)結(jié)構(gòu)中所有屬性為change的ID后,將所 述數(shù)據(jù)結(jié)構(gòu)中屬性為change的ID重新設(shè)置為original,便于下次訪問數(shù)據(jù)結(jié)構(gòu)時(shí)辨別修改的 數(shù)據(jù)表的ID。
顯示模塊18用于于應(yīng)用系統(tǒng)2的界面上更新顯示所述應(yīng)用系統(tǒng)2所獲取的數(shù)據(jù)。
如圖3所示,是本發(fā)明數(shù)據(jù)庫(kù)主動(dòng)掃描方法較佳實(shí)施例的作業(yè)流程圖。
步驟S30,獲取模塊10獲取數(shù)據(jù)庫(kù)3中的所有數(shù)據(jù)表4的ID,并將所獲取的ID存儲(chǔ)于一種
數(shù)據(jù)結(jié)構(gòu)中,該數(shù)據(jù)結(jié)構(gòu)可以為二維數(shù)組、鏈表等。
步驟S32,設(shè)置模塊12將所述數(shù)據(jù)結(jié)構(gòu)中的每個(gè)ID設(shè)置兩個(gè)屬性值change和original
。屬性值change表示該ID所對(duì)應(yīng)的數(shù)據(jù)表4中的數(shù)據(jù)已經(jīng)被修改,屬性值original表示該ID
所對(duì)應(yīng)的數(shù)據(jù)表4中的數(shù)據(jù)沒有被修改。所有數(shù)據(jù)表4的ID的屬性初始值設(shè)置為original。
步驟S34,當(dāng)應(yīng)用系統(tǒng)2發(fā)出修改數(shù)據(jù)庫(kù)3中數(shù)據(jù)的命令時(shí),也同時(shí)向計(jì)算機(jī)系統(tǒng)l發(fā)出數(shù)
據(jù)庫(kù)3被修改的通知,所述獲取模塊10獲取數(shù)據(jù)庫(kù)3被修改的通知。
步驟S36,接收模塊14接收應(yīng)用系統(tǒng)2所發(fā)送的數(shù)據(jù)庫(kù)3中被修改的數(shù)據(jù)表4的ID。 步驟S38,所述設(shè)置模塊12將所述數(shù)據(jù)結(jié)構(gòu)中對(duì)應(yīng)的被修改的數(shù)據(jù)表4的ID的屬性由
original改為change 。
步驟S40,控制模塊16控制所述應(yīng)用系統(tǒng)2獲取所述數(shù)據(jù)結(jié)構(gòu)中所有屬性為change的ID。 步驟S42,所述設(shè)置模塊12在應(yīng)用系統(tǒng)2獲取了數(shù)據(jù)結(jié)構(gòu)中所有屬性為change的ID后,將
所述數(shù)據(jù)結(jié)構(gòu)中屬性為change的ID的屬性重新設(shè)置為original ,便于下次訪問數(shù)據(jù)結(jié)構(gòu)時(shí)辨
別修改的數(shù)據(jù)表的ID。
步驟S44,所述應(yīng)用系統(tǒng)2訪問數(shù)據(jù)庫(kù)2中的數(shù)據(jù)表,該數(shù)據(jù)表的ID為所獲取的屬性為
change的ID,所述應(yīng)用系統(tǒng)2訪問所述數(shù)據(jù)表,并獲取該數(shù)據(jù)表中的所有數(shù)據(jù)。 步驟S46,顯示模塊16于應(yīng)用系統(tǒng)2的界面上更新顯示所獲取的數(shù)據(jù)。 最后所應(yīng)說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳
實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技術(shù)方
案進(jìn)行修改或等同替換,而不脫離本發(fā)明技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種數(shù)據(jù)庫(kù)主動(dòng)掃描的計(jì)算機(jī)系統(tǒng),其特征在于,所述計(jì)算機(jī)系統(tǒng)包括獲取模塊,用于獲取數(shù)據(jù)庫(kù)中所有數(shù)據(jù)表的ID,并將所獲取的ID存儲(chǔ)于一種數(shù)據(jù)結(jié)構(gòu)中;設(shè)置模塊,用于設(shè)置所述數(shù)據(jù)結(jié)構(gòu)中每個(gè)ID的屬性值,每個(gè)ID包括兩種屬性值第一屬性值和第二屬性值,且所述ID的屬性初始值為第二屬性值,該設(shè)置模塊,還用于將所述數(shù)據(jù)結(jié)構(gòu)中被修改的數(shù)據(jù)表的ID的屬性由第二屬性值改為第一屬性值;接收模塊,用于當(dāng)應(yīng)用系統(tǒng)修改數(shù)據(jù)庫(kù)時(shí),接收所述應(yīng)用系統(tǒng)所發(fā)送的數(shù)據(jù)庫(kù)中被修改的數(shù)據(jù)表的ID;控制模塊,用于控制所述應(yīng)用系統(tǒng)獲取所述數(shù)據(jù)結(jié)構(gòu)中所有屬性為第一屬性值的ID,還用于根據(jù)屬性為第一屬性值的ID,控制所述應(yīng)用系統(tǒng)獲取數(shù)據(jù)庫(kù)中所述ID所對(duì)應(yīng)的數(shù)據(jù)表中的數(shù)據(jù);及所述設(shè)置模塊,還用于當(dāng)所述應(yīng)用系統(tǒng)獲取了所述數(shù)據(jù)結(jié)構(gòu)中所有屬性為第一屬性值的ID后,將所述數(shù)據(jù)結(jié)構(gòu)中所述屬性為第一屬性值的ID的屬性重新設(shè)置為第二屬性值。
2 如權(quán)利要求l所述的數(shù)據(jù)庫(kù)主動(dòng)掃描的計(jì)算機(jī)系統(tǒng),其特征在于, 所述獲取模塊還用于當(dāng)所述應(yīng)用系統(tǒng)發(fā)出修改數(shù)據(jù)庫(kù)中數(shù)據(jù)的命令時(shí),獲取數(shù)據(jù)庫(kù)被修改的 通知。
3 如權(quán)利要求l所述的數(shù)據(jù)庫(kù)主動(dòng)掃描的計(jì)算機(jī)系統(tǒng),其特征在于, 所述計(jì)算機(jī)系統(tǒng)還包括顯示模塊,用于于所述應(yīng)用系統(tǒng)的界面上更新顯示所獲取的數(shù)據(jù)。
4 如權(quán)利要求l所述的數(shù)據(jù)庫(kù)主動(dòng)掃描的計(jì)算機(jī)系統(tǒng),其特征在于, 所述第一屬性值為change,第二屬性值為original 。
5 一種數(shù)據(jù)庫(kù)主動(dòng)掃描方法,其特征在于,該方法包括如下步驟 獲取數(shù)據(jù)庫(kù)中所有數(shù)據(jù)表的ID,并將所獲取的ID存儲(chǔ)于一種數(shù)據(jù)結(jié)構(gòu)中; 設(shè)置所述數(shù)據(jù)結(jié)構(gòu)中每個(gè)ID的屬性值,每個(gè)ID包括兩種屬性值第一屬性值和第二屬性值,且所述ID的屬性初始值為第二屬性值;接收應(yīng)用系統(tǒng)所發(fā)送的數(shù)據(jù)庫(kù)中被修改的數(shù)據(jù)表的ID;將所述數(shù)據(jù)結(jié)構(gòu)中被修改的數(shù)據(jù)表的ID的屬性由第二屬性值改為第一屬性值; 所述應(yīng)用系統(tǒng)獲取所述數(shù)據(jù)結(jié)構(gòu)中所有屬性為第一屬性值的ID;將所述數(shù)據(jù)結(jié)構(gòu)中所述屬性為第一屬性值的ID的屬性重新設(shè)置為第二屬性值;及 所述應(yīng)用系統(tǒng)根據(jù)屬性為第一屬性值的ID獲取數(shù)據(jù)庫(kù)中所述ID所對(duì)應(yīng)的數(shù)據(jù)表中的數(shù)據(jù)。
6.如權(quán)利要求5所述的數(shù)據(jù)庫(kù)主動(dòng)掃描方法,其特征在于,在所述步 驟接收應(yīng)用系統(tǒng)所發(fā)送的數(shù)據(jù)庫(kù)中被修改的數(shù)據(jù)表的ID之前還包括當(dāng)所述應(yīng)用系統(tǒng)發(fā)出修改數(shù)據(jù)庫(kù)中數(shù)據(jù)的命令時(shí),獲取數(shù)據(jù)庫(kù)被修改的通知。
7.如權(quán)利要求5所述的數(shù)據(jù)庫(kù)主動(dòng)掃描方法,其特征在于,該方法還 包括于所述應(yīng)用系統(tǒng)的界面上更新顯示該應(yīng)用系統(tǒng)所獲取的數(shù)據(jù)。
8.如權(quán)利要求5所述的數(shù)據(jù)庫(kù)主動(dòng)掃描方法,其特征在于,所述第一 屬性值為change,第二屬性值為original 。
全文摘要
一種數(shù)據(jù)庫(kù)主動(dòng)掃描方法,包括獲取數(shù)據(jù)庫(kù)中所有數(shù)據(jù)表ID,并將所獲取的ID存儲(chǔ)于一種數(shù)據(jù)結(jié)構(gòu)中;設(shè)置所述數(shù)據(jù)結(jié)構(gòu)中每個(gè)ID的屬性值,每個(gè)ID包括兩種屬性值第一屬性值和第二屬性值,且所述ID的屬性初始值為第二屬性值;接收應(yīng)用系統(tǒng)所發(fā)送的數(shù)據(jù)庫(kù)中被修改的數(shù)據(jù)表的ID;將所述數(shù)據(jù)結(jié)構(gòu)中被修改的數(shù)據(jù)表的ID的屬性由第二屬性值改為第一屬性值;所述應(yīng)用系統(tǒng)獲取所述數(shù)據(jù)結(jié)構(gòu)中所有屬性為第一屬性值的ID;將所述數(shù)據(jù)結(jié)構(gòu)中所述屬性為第一屬性值的ID的屬性重新設(shè)置為第二屬性值;及所述應(yīng)用系統(tǒng)根據(jù)屬性為第一屬性值的ID獲取數(shù)據(jù)庫(kù)中所述ID所對(duì)應(yīng)的數(shù)據(jù)表中的數(shù)據(jù)。另外,本發(fā)明還提供一種數(shù)據(jù)庫(kù)主動(dòng)掃描的計(jì)算機(jī)系統(tǒng)。
文檔編號(hào)G06F17/30GK101609448SQ200810302228
公開日2009年12月23日 申請(qǐng)日期2008年6月19日 優(yōu)先權(quán)日2008年6月19日
發(fā)明者佘玉飛 申請(qǐng)人:鴻富錦精密工業(yè)(深圳)有限公司;鴻海精密工業(yè)股份有限公司