本發(fā)明涉及信息處理技術(shù),尤其涉及一種應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法,以及一種應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理裝置。
背景技術(shù):
在互聯(lián)網(wǎng)大數(shù)據(jù)的應(yīng)用場(chǎng)景中,存在一種大數(shù)據(jù)實(shí)時(shí)查詢系統(tǒng),針對(duì)某一查詢請(qǐng)求,需要從上億條數(shù)據(jù)記錄中迅速查詢出符合要求的一條或多條數(shù)據(jù),同時(shí)查詢系統(tǒng)需要滿足高并發(fā)的查詢需求。由于數(shù)據(jù)更新較快,因此需要對(duì)查詢系統(tǒng)的后臺(tái)數(shù)據(jù)庫(kù)做定期更新,為保證查詢結(jié)果的時(shí)效性,要求在盡可能短的時(shí)間內(nèi)完成對(duì)數(shù)據(jù)庫(kù)的更新操作。
數(shù)據(jù)庫(kù)中的每條數(shù)據(jù)設(shè)置有唯一標(biāo)識(shí),在寫入數(shù)據(jù)時(shí),如果數(shù)據(jù)表中存在某一數(shù)據(jù)的標(biāo)識(shí),則支持對(duì)該條數(shù)據(jù)進(jìn)行寫入操作,可見現(xiàn)有更新數(shù)據(jù)庫(kù)的方法滿足了數(shù)據(jù)庫(kù)的更新需求,數(shù)據(jù)庫(kù)的性能得到了一定提升。
但是,現(xiàn)有更新數(shù)據(jù)庫(kù)的方法仍然存以下問題:數(shù)據(jù)庫(kù)中的數(shù)據(jù)一般記錄在數(shù)據(jù)表中,如果對(duì)數(shù)據(jù)表內(nèi)的數(shù)據(jù)進(jìn)行更新,則在數(shù)據(jù)庫(kù)“寫入鎖”機(jī)制的作用下,不允許對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢操作,從而導(dǎo)致數(shù)據(jù)庫(kù)的查詢穩(wěn)定性較差。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的實(shí)施例提供了一種應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法,以及一種應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理裝置,用以解決更新數(shù)據(jù)庫(kù)時(shí)數(shù)據(jù)庫(kù)的查詢穩(wěn)定性較差的問題。
依據(jù)本發(fā)明的一個(gè)方面,提供了一種應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法,所述數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,所述方法包括:
接收對(duì)所述數(shù)據(jù)庫(kù)的更新指示,從所述多個(gè)相同的數(shù)據(jù)集合中選擇第一數(shù)據(jù)集合;
更新所述第一數(shù)據(jù)集合,標(biāo)記所述第一數(shù)據(jù)集合為不可查詢狀態(tài);
接收對(duì)所述數(shù)據(jù)庫(kù)的查詢指示,選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
依據(jù)本發(fā)明的另一個(gè)方面,還提供了一種應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理裝置,所述裝置包括:
更新指示接收模塊,用于接收對(duì)所述數(shù)據(jù)庫(kù)的更新指示,所述數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合;
第一數(shù)據(jù)集合選擇模塊,用于從所述多個(gè)相同的數(shù)據(jù)集合中選擇第一數(shù)據(jù)集合;
第一數(shù)據(jù)集合更新模塊,用于更新所述第一數(shù)據(jù)集合,標(biāo)記所述第一數(shù)據(jù)集合為不可查詢狀態(tài);
查詢指示接收模塊,用于接收對(duì)所述數(shù)據(jù)庫(kù)的查詢指示,選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例中,數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,在接收對(duì)數(shù)據(jù)庫(kù)的更新指示后,從多個(gè)相同的數(shù)據(jù)集合中任選出第一數(shù)據(jù)集合,更新第一數(shù)據(jù)集合,標(biāo)記第一數(shù)據(jù)集合為不可查詢狀態(tài),接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,在識(shí)別到第一數(shù)據(jù)集合為不可查詢狀態(tài)后,不對(duì)第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,而是選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,實(shí)現(xiàn)了同時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢操作和數(shù)據(jù)更新操作,數(shù)據(jù)更新操作不會(huì)對(duì)數(shù)據(jù)查詢操作造成不良影響,有效保證了更新數(shù)據(jù)庫(kù)時(shí)數(shù)據(jù)庫(kù)的查詢穩(wěn)定性。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說明
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明實(shí)施例1的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法的流程圖;
圖2示出了根據(jù)本發(fā)明實(shí)施例2的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法的流程圖;
圖3示出了根據(jù)本發(fā)明實(shí)施例3的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法的流程圖;
圖4示出了根據(jù)本發(fā)明一個(gè)示例的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法的流程圖;
圖5示出了根據(jù)本發(fā)明一個(gè)示例的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法的示意圖;
圖6示出了根據(jù)本發(fā)明一個(gè)示例的第一數(shù)據(jù)集合的第一狀態(tài)表的變化過程示意圖;
圖7示出了根據(jù)本發(fā)明實(shí)施例1的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖;
圖8示出了根據(jù)本發(fā)明實(shí)施例2的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖;
圖9示出了根據(jù)本發(fā)明實(shí)施例3的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
數(shù)據(jù)庫(kù)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù)。由于數(shù)據(jù)庫(kù)中存儲(chǔ)了大量數(shù)據(jù),所以數(shù)據(jù)庫(kù)可以作為數(shù)據(jù)源供數(shù)據(jù)查詢方進(jìn)行數(shù)據(jù)查詢。通常數(shù)據(jù)庫(kù)中的數(shù)據(jù)是變化的,需要定期或不定期進(jìn)行更新,數(shù)據(jù)更新方會(huì)從文件系統(tǒng)中提取數(shù)據(jù)并用提取的數(shù)據(jù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)更新。
本發(fā)明僅對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)處理邏輯進(jìn)行改進(jìn),無需搭建其他硬件,因此具有很強(qiáng)的兼容性,對(duì)Mongo DB數(shù)據(jù)庫(kù)、MSQL數(shù)據(jù)庫(kù)、Redis數(shù)據(jù)庫(kù)、Cassandra數(shù)據(jù)庫(kù)等數(shù)據(jù)庫(kù)均適用。
實(shí)施例1
參考圖1,示出了根據(jù)本發(fā)明實(shí)施例1的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法的流程圖,本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,該方法具體可以包括以下步驟:
步驟101、接收對(duì)所述數(shù)據(jù)庫(kù)的更新指示,從所述多個(gè)相同的數(shù)據(jù)集合中選擇第一數(shù)據(jù)集合。
現(xiàn)有技術(shù)為了保證針對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢結(jié)果的準(zhǔn)確性,通常會(huì)對(duì)數(shù)據(jù)庫(kù)設(shè)置寫入鎖機(jī)制,具體地,如果數(shù)據(jù)庫(kù)處于寫入操作即更新操作時(shí),不允許對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢操作。雖然現(xiàn)有方法保證了數(shù)據(jù)查詢結(jié)果的準(zhǔn)確性,但是針對(duì)同一數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢操作和數(shù)據(jù)更新操作不能同時(shí)進(jìn)行,從而導(dǎo)致數(shù)據(jù)查詢性能大幅度降低。
本發(fā)明實(shí)施例為了克服現(xiàn)有技術(shù)中存在的缺陷,對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)組成進(jìn)行了改進(jìn)。具體地,對(duì)數(shù)據(jù)庫(kù)中的所有業(yè)務(wù)數(shù)據(jù)進(jìn)行了備份,不同業(yè)務(wù)數(shù)據(jù)組合成一個(gè)數(shù)據(jù)集合,因此數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合。相同數(shù)據(jù)集合的個(gè)數(shù)可以根據(jù)實(shí)際進(jìn)行設(shè)定,例如數(shù)據(jù)庫(kù)包括第一數(shù)據(jù)集合、第二數(shù)據(jù)集合和第三數(shù)據(jù)集合。數(shù)據(jù)庫(kù)中存在數(shù)據(jù)查詢池,數(shù)據(jù)查詢池是對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢的場(chǎng)所,在接收對(duì)數(shù)據(jù)庫(kù)的更新指示之前,數(shù)據(jù)庫(kù)中的多個(gè)相同的數(shù)據(jù)集合均位于數(shù)據(jù)查詢池中。
在接收對(duì)數(shù)據(jù)庫(kù)的更新指示后,由于數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,所以首先需要從多個(gè)數(shù)據(jù)集合中選擇出一個(gè)數(shù)據(jù)集合即第一數(shù)據(jù)集合作為數(shù)據(jù)更新對(duì)象。
步驟102、更新第一數(shù)據(jù)集合,標(biāo)記所述第一數(shù)據(jù)集合為不可查詢狀態(tài)。
數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,在更新第一數(shù)據(jù)集合時(shí),為了阻止對(duì)第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,保證數(shù)據(jù)查詢速度,本方法對(duì)數(shù)據(jù)集合進(jìn)行狀態(tài)標(biāo)記,將第一數(shù)據(jù)集合標(biāo)記為不可查詢狀態(tài)。其中,可以使用標(biāo)記符號(hào)對(duì)狀態(tài)進(jìn)行標(biāo)記,標(biāo)記符號(hào)可以包括多種形式,例如使用數(shù)字作為標(biāo)記符號(hào),不同數(shù)字指示數(shù)據(jù)集合處于不同狀態(tài);使用文字作為標(biāo)記符號(hào)等。
當(dāng)數(shù)據(jù)查詢方檢測(cè)到第一數(shù)據(jù)集合標(biāo)記有不可查詢狀態(tài)后,不會(huì)選擇第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,而是選擇標(biāo)記有可查詢狀態(tài)的其他數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,從而實(shí)現(xiàn)了同時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)更新操作和數(shù)據(jù)查詢操作并且兩種操作互不干擾,從而保證了數(shù)據(jù)查詢速度。
數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,在數(shù)據(jù)庫(kù)更新過程中,可以對(duì)多個(gè)數(shù)據(jù)集合進(jìn)行逐個(gè)更新;也可以剩余一個(gè)或幾個(gè)數(shù)據(jù)集合用于數(shù)據(jù)查詢,對(duì)其他多個(gè)數(shù)據(jù)集合同時(shí)進(jìn)行更新。
步驟103、接收對(duì)所述數(shù)據(jù)庫(kù)的查詢指示,選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
在更新第一數(shù)據(jù)集合的過程中,如果接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,則會(huì)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)集合的標(biāo)記狀態(tài)進(jìn)行識(shí)別,在確定第一數(shù)據(jù)集合為不可查詢狀態(tài)后,不在第一數(shù)據(jù)集合中進(jìn)行數(shù)據(jù)查詢,而是選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
相對(duì)于其他硬件搭建的改進(jìn)方法,本發(fā)明實(shí)施例所述的方法僅在數(shù)據(jù)處理邏輯上進(jìn)行改進(jìn),因此實(shí)現(xiàn)成本較低,同時(shí)具有兼容性較強(qiáng)的特點(diǎn),適用于多種數(shù)據(jù)庫(kù)。
由于本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,可以選擇一個(gè)數(shù)據(jù)集合進(jìn)行數(shù)據(jù)庫(kù)索引的建立,選擇其他相同的數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢操作,因此可以有效保證建立數(shù)據(jù)庫(kù)索引時(shí)數(shù)據(jù)庫(kù)的查詢穩(wěn)定性。
依據(jù)本發(fā)明實(shí)施例,數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,在接收對(duì)數(shù)據(jù)庫(kù)的更新指示后,從多個(gè)相同的數(shù)據(jù)集合中任選出第一數(shù)據(jù)集合,更新第一數(shù)據(jù)集合,標(biāo)記第一數(shù)據(jù)集合為不可查詢狀態(tài),接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,在識(shí)別到第一數(shù)據(jù)集合為不可查詢狀態(tài)后,不對(duì)第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,而是選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,實(shí)現(xiàn)了同時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢操作和數(shù)據(jù)更新操作,數(shù)據(jù)更新操作不會(huì)對(duì)數(shù)據(jù)查詢操作造成不良影響,有效保證了更新數(shù)據(jù)庫(kù)時(shí)數(shù)據(jù)庫(kù)的查詢穩(wěn)定性。
實(shí)施例2
參考圖2,示出了根據(jù)本發(fā)明實(shí)施例2的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法的流程圖,數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,該方法具體可以包括以下步驟:
步驟201、接收對(duì)數(shù)據(jù)庫(kù)的更新指示,從多個(gè)相同的數(shù)據(jù)集合中選擇第一數(shù)據(jù)集合。
步驟202、將第一數(shù)據(jù)集合從數(shù)據(jù)查詢池移至數(shù)據(jù)更新池,在將第一數(shù)據(jù)集合從數(shù)據(jù)查詢池移至數(shù)據(jù)更新池之前,第一數(shù)據(jù)集合攜帶第一數(shù)據(jù)集合位于數(shù)據(jù)查詢池的第一位置信息。
數(shù)據(jù)庫(kù)中包括數(shù)據(jù)查詢池和數(shù)據(jù)更新池,數(shù)據(jù)查詢池是對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢的場(chǎng)所,數(shù)據(jù)更新池是對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)更新的場(chǎng)所。在接收到對(duì)數(shù)據(jù)庫(kù)的更新指示之前,數(shù)據(jù)庫(kù)中的多個(gè)相同的數(shù)據(jù)集合位于數(shù)據(jù)查詢池中,在接收到對(duì)數(shù)據(jù)庫(kù)更新指示后,從多個(gè)數(shù)據(jù)集合中任選出第一數(shù)據(jù)集合,并將第一數(shù)據(jù)集合從數(shù)據(jù)查詢池移至數(shù)據(jù)更新池,在數(shù)據(jù)更新池中對(duì)第一數(shù)據(jù)集合進(jìn)行更新。
本發(fā)明實(shí)施例對(duì)數(shù)據(jù)庫(kù)中每個(gè)數(shù)據(jù)集合均設(shè)置了位置信息,某一數(shù)據(jù)集合所攜帶的位置信息可以指示該數(shù)據(jù)集合所處的數(shù)據(jù)池的種類,即該數(shù)據(jù)集合是位于數(shù)據(jù)查詢池中還是數(shù)據(jù)更新池中。確定指示數(shù)據(jù)集合位于數(shù)據(jù)查詢池的位置信息為第一位置信息,確定指示數(shù)據(jù)集合位于數(shù)據(jù)更新池的位置信息為第二位置信息。其中,位置信息可以是文字信息、預(yù)設(shè)編號(hào)等其他適用形式。本方法可以通過識(shí)別和更改數(shù)據(jù)集合所攜帶的位置信息的種類,控制更新數(shù)據(jù)集合的多個(gè)操作步驟有序且準(zhǔn)確進(jìn)行。
由于本發(fā)明實(shí)施例在接收對(duì)數(shù)據(jù)庫(kù)的更新指示之前,多個(gè)數(shù)據(jù)集合位于數(shù)據(jù)查詢池中,因此第一數(shù)據(jù)集合攜帶的位置信息為指示數(shù)據(jù)查詢池的第一位置信息。
步驟203、待第一數(shù)據(jù)集合的當(dāng)前查詢結(jié)束后,更改第一位置信息為第一數(shù)據(jù)集合位于數(shù)據(jù)更新池的第二位置信息。
將第一數(shù)據(jù)集合移至數(shù)據(jù)更新池后,準(zhǔn)備對(duì)第一數(shù)據(jù)集合進(jìn)行更新操作,為了保證第一數(shù)據(jù)集合的當(dāng)前查詢正常完成,限定在當(dāng)前查詢過程中不對(duì)第一數(shù)據(jù)集合進(jìn)行任何操作。待當(dāng)前查詢結(jié)束后,更改第一數(shù)據(jù)集合所攜帶的位置信息,由于這時(shí)第一數(shù)據(jù)集合位于數(shù)據(jù)更新池中,因此將其位置信息更改為指示數(shù)據(jù)更新池的第二位置信息。
實(shí)際中可以根據(jù)實(shí)際設(shè)定當(dāng)前查詢操作所需的查詢時(shí)長(zhǎng),將第一數(shù)據(jù)集合移至數(shù)據(jù)查詢池并間隔預(yù)設(shè)查詢時(shí)長(zhǎng)后,再對(duì)第一數(shù)據(jù)集合的位置信息進(jìn)行更改。例如,將第一數(shù)據(jù)集合移至數(shù)據(jù)查詢池,間隔預(yù)設(shè)10s后,對(duì)第一數(shù)據(jù)集合的位置信息進(jìn)行更改。
步驟204、監(jiān)控到第一數(shù)據(jù)集合攜帶第二位置信息后,在數(shù)據(jù)更新池中對(duì)第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)更新,標(biāo)記第一數(shù)據(jù)集合為不可查詢狀態(tài)。
本發(fā)明實(shí)施例將第二位置信息作為數(shù)據(jù)集合更新操作的開始標(biāo)識(shí)。
數(shù)據(jù)更新方向數(shù)據(jù)庫(kù)發(fā)送更新指示后,會(huì)對(duì)數(shù)據(jù)更新池中新增數(shù)據(jù)集合所攜帶的位置信息進(jìn)行監(jiān)控,如果監(jiān)控到新增的第一數(shù)據(jù)集合攜帶第二位置信息,則開始對(duì)第一數(shù)據(jù)集合進(jìn)行更新操作;如果監(jiān)控到新增的第一數(shù)據(jù)集合,但未監(jiān)控到第一數(shù)據(jù)集合攜帶第二位置信息,則不對(duì)第一數(shù)據(jù)集合進(jìn)行更新操作。
具體操作中,如果在數(shù)據(jù)更新池中未監(jiān)控到第一數(shù)據(jù)集合攜帶第二位置信息,則說明將第一數(shù)據(jù)集合移至數(shù)據(jù)更新池以及更改第一數(shù)據(jù)集合的位置信息為第二位置信息中的一個(gè)或兩個(gè)操作步驟出現(xiàn)問題,這時(shí)可以執(zhí)行報(bào)警操作,在報(bào)警時(shí)段內(nèi)可對(duì)數(shù)據(jù)查詢池中的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。因此本方法在保證數(shù)據(jù)查詢操作正常進(jìn)行的同時(shí),為運(yùn)維人員提供充足時(shí)間解決故障問題。
數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,為了實(shí)現(xiàn)同時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行查找操作和更新操作,并且兩種操作互不干擾,本發(fā)明實(shí)施例在更新第一數(shù)據(jù)集合時(shí),對(duì)第一數(shù)據(jù)集合的狀態(tài)進(jìn)行標(biāo)記,將其標(biāo)記為不可查詢狀態(tài),這樣在更新第一數(shù)據(jù)集合過程中即使接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,也在識(shí)別到第一數(shù)據(jù)集合標(biāo)記有不可查詢狀態(tài)后,不選擇第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,而是選擇其他數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
步驟205、在更新第一數(shù)據(jù)集合過程中,如果接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,則選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
在更新第一數(shù)據(jù)集合過程中,在接收對(duì)數(shù)據(jù)庫(kù)的查詢指示后,由于第一數(shù)據(jù)集合標(biāo)記有不可查詢狀態(tài),因此會(huì)選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
步驟206、在第一數(shù)據(jù)集合更新結(jié)束之后,將第一數(shù)據(jù)集合從數(shù)據(jù)更新池移回至數(shù)據(jù)查詢池中,并且更改第一數(shù)據(jù)集合攜帶的第二位置信息為第一位置信息。
數(shù)據(jù)更新池僅是對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)更新的場(chǎng)所,當(dāng)完成對(duì)第一數(shù)據(jù)集合的更新后,會(huì)將第一數(shù)據(jù)集合移回至數(shù)據(jù)查詢池中。由于第一數(shù)據(jù)集合所處的數(shù)據(jù)池發(fā)生了變化,因此需要對(duì)第一數(shù)據(jù)集合所攜帶的位置信息做更改,將其更改為指示數(shù)據(jù)查詢池的第一位置信息。
具體操作中,當(dāng)完成對(duì)第一數(shù)據(jù)集合的更新后,會(huì)對(duì)第一數(shù)據(jù)集合的標(biāo)記狀態(tài)進(jìn)行調(diào)整,將第一數(shù)據(jù)集合重新標(biāo)記為可查詢狀態(tài),功能模塊在檢測(cè)到位于數(shù)據(jù)更新池中的第一數(shù)據(jù)集合為可查詢狀態(tài)后,將第一數(shù)據(jù)集合移回至數(shù)據(jù)查詢池中,從而完成對(duì)第一數(shù)據(jù)集合的更新操作??梢园凑丈鲜龇椒▽?duì)數(shù)據(jù)庫(kù)中其他數(shù)據(jù)集合進(jìn)行數(shù)據(jù)更新。
本發(fā)明在數(shù)據(jù)集合更新之前,將第一數(shù)據(jù)集合從數(shù)據(jù)查詢池移至數(shù)據(jù)更新池,并且將第一數(shù)據(jù)集合攜帶的第一位置信息更改為第二位置信息,將第二位置信息作為數(shù)據(jù)集合更新操作的開始標(biāo)識(shí),在識(shí)別到第一數(shù)據(jù)集合攜帶有第二位置信息后,開始對(duì)第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)更新操作,待第一數(shù)據(jù)集合更新結(jié)束并將其移回至數(shù)據(jù)查詢池后,將第一數(shù)據(jù)集合攜帶的第二位置信息更改回第一位置信息,本發(fā)明實(shí)施例通過對(duì)數(shù)據(jù)集合的位置信息的識(shí)別和更改操作,有序完成了更新數(shù)據(jù)集合所需的多個(gè)操作步驟,保證了數(shù)據(jù)集合更新操作的準(zhǔn)確性。
本發(fā)明還具有很強(qiáng)的容錯(cuò)性,如果更新第一數(shù)據(jù)集合的操作出現(xiàn)問題,則會(huì)執(zhí)行報(bào)警操作,這時(shí)仍可對(duì)數(shù)據(jù)庫(kù)的其他數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,在保證數(shù)據(jù)查詢操作正常進(jìn)行的同時(shí),為運(yùn)維人員提供充足時(shí)間解決故障問題。
依據(jù)本發(fā)明實(shí)施例,數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,在接收對(duì)數(shù)據(jù)庫(kù)的更新指示后,從多個(gè)相同的數(shù)據(jù)集合中任選出第一數(shù)據(jù)集合,更新第一數(shù)據(jù)集合,標(biāo)記第一數(shù)據(jù)集合為不可查詢狀態(tài),接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,在識(shí)別到第一數(shù)據(jù)集合為不可查詢狀態(tài)后,不對(duì)第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,而是選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,實(shí)現(xiàn)了同時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢操作和數(shù)據(jù)更新操作,數(shù)據(jù)更新操作不會(huì)對(duì)數(shù)據(jù)查詢操作造成不良影響,有效保證了更新數(shù)據(jù)庫(kù)時(shí)數(shù)據(jù)庫(kù)的查詢穩(wěn)定性。
實(shí)施例3
參考圖3,示出了根據(jù)本發(fā)明實(shí)施例3的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法的流程圖,數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,該方法具體可以包括以下步驟:
步驟301、接收對(duì)數(shù)據(jù)庫(kù)的更新指示,從多個(gè)相同的數(shù)據(jù)集合中選擇第一數(shù)據(jù)集合。
步驟302、更改第一數(shù)據(jù)集合的可查詢標(biāo)識(shí)為準(zhǔn)備更新請(qǐng)求標(biāo)識(shí),在接收對(duì)數(shù)據(jù)庫(kù)的更新指示之前,第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)為指示可查詢狀態(tài)的可查詢標(biāo)識(shí)。
為有序且準(zhǔn)確完成數(shù)據(jù)集合更新過程中的多個(gè)操作步驟,本發(fā)明實(shí)施例對(duì)數(shù)據(jù)庫(kù)中每個(gè)數(shù)據(jù)集合均標(biāo)記了狀態(tài)標(biāo)識(shí),在數(shù)據(jù)集合更新過程中,數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)發(fā)生了多次變化。由于狀態(tài)標(biāo)識(shí)可以指示數(shù)據(jù)集合所處的數(shù)據(jù)處理階段,因此可以通過識(shí)別狀態(tài)標(biāo)識(shí)的種類,確定預(yù)執(zhí)行操作的種類和操作起始時(shí)間,從而準(zhǔn)確完成對(duì)數(shù)據(jù)集合的更新操作。
本發(fā)明實(shí)施例中,狀態(tài)標(biāo)識(shí)的變化過程可以包括:可查詢標(biāo)識(shí)—準(zhǔn)備更新請(qǐng)求標(biāo)識(shí)—準(zhǔn)備更新確認(rèn)標(biāo)識(shí)—正在更新標(biāo)識(shí)—可查詢標(biāo)識(shí)。在接收對(duì)數(shù)據(jù)庫(kù)的更新指示之前,第一數(shù)據(jù)集合位于數(shù)據(jù)查詢池內(nèi),這時(shí)第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)為可查詢標(biāo)識(shí),數(shù)據(jù)查詢方在識(shí)別到第一數(shù)據(jù)集合的可查詢標(biāo)識(shí)后,可以選擇第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
在接收對(duì)數(shù)據(jù)庫(kù)的更新指示后,預(yù)對(duì)數(shù)據(jù)庫(kù)中第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)更新,將第一數(shù)據(jù)集合的可查詢標(biāo)識(shí)更改為準(zhǔn)備更新請(qǐng)求標(biāo)識(shí),這時(shí)第一數(shù)據(jù)集合仍位于數(shù)據(jù)查詢池內(nèi)。該準(zhǔn)備更新請(qǐng)求標(biāo)識(shí)指示第一數(shù)據(jù)集合接收到更新指示且位于數(shù)據(jù)查詢池內(nèi)。
步驟303、檢測(cè)到第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)為準(zhǔn)備更新請(qǐng)求標(biāo)識(shí)后,將第一數(shù)據(jù)集合從數(shù)據(jù)查詢池移至數(shù)據(jù)更新池。
在檢測(cè)到第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)為準(zhǔn)備更新請(qǐng)求標(biāo)識(shí)后,確定第一數(shù)據(jù)集合已準(zhǔn)備就緒,等待下一步操作。將準(zhǔn)備更新請(qǐng)求標(biāo)識(shí)作為將數(shù)據(jù)集合從數(shù)據(jù)查詢池移至數(shù)據(jù)更新池的指示標(biāo)識(shí),在檢測(cè)到第一數(shù)據(jù)集合的準(zhǔn)備更新請(qǐng)求標(biāo)識(shí)后,將第一數(shù)據(jù)集合從數(shù)據(jù)查詢池移至數(shù)據(jù)更新池,在數(shù)據(jù)更新池中對(duì)第一數(shù)據(jù)集合中的業(yè)務(wù)數(shù)據(jù)進(jìn)行更新。
步驟304、更改第一數(shù)據(jù)集合的準(zhǔn)備更新請(qǐng)求標(biāo)識(shí)至準(zhǔn)備更新確認(rèn)標(biāo)識(shí)。
檢測(cè)到數(shù)據(jù)更新池中新增第一數(shù)據(jù)集合后,更改第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí),將第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)更改為準(zhǔn)備更新確認(rèn)標(biāo)識(shí)。該準(zhǔn)備更新確認(rèn)標(biāo)識(shí)指示第一數(shù)據(jù)集合位于數(shù)據(jù)更新池內(nèi)且做好更新準(zhǔn)備。
步驟305、檢測(cè)到第一數(shù)據(jù)集合的準(zhǔn)備更新確認(rèn)標(biāo)識(shí)后,更新第一數(shù)據(jù)集合,同時(shí)更改第一數(shù)據(jù)集合的準(zhǔn)備更新確認(rèn)標(biāo)識(shí)為指示不可查詢狀態(tài)的正在更新標(biāo)識(shí)。
將準(zhǔn)備更新確認(rèn)標(biāo)識(shí)作為更新數(shù)據(jù)集合的指示標(biāo)識(shí),在檢測(cè)到第一數(shù)據(jù)集合的準(zhǔn)備更新確認(rèn)標(biāo)識(shí)后,開始對(duì)第一數(shù)據(jù)集合進(jìn)行更新操作,并將第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)更改為正在更新標(biāo)識(shí)??梢栽跀?shù)據(jù)更新的起始階段對(duì)第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)進(jìn)行修改,該正在更新標(biāo)識(shí)指示第一數(shù)據(jù)集合處于更新過程中且不可被查詢。
在第一數(shù)據(jù)集合的更新過程中,第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)為正在更新標(biāo)識(shí),如果檢測(cè)到第一數(shù)據(jù)集合更新結(jié)束,則更改第一數(shù)據(jù)集合的正在更新標(biāo)識(shí)更改為可查詢標(biāo)識(shí)。
對(duì)第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)進(jìn)行檢測(cè),當(dāng)檢測(cè)到第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)為可查詢標(biāo)識(shí)后,確定第一數(shù)據(jù)集合更新結(jié)束,將第一數(shù)據(jù)集合從數(shù)據(jù)更新池移回至數(shù)據(jù)查詢池供數(shù)據(jù)查詢方查詢,從而完成對(duì)第一數(shù)據(jù)集合的更新。采用上述方法對(duì)數(shù)據(jù)庫(kù)中的其他數(shù)據(jù)集合進(jìn)行更新。
步驟306、接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,選擇標(biāo)記有可查詢標(biāo)識(shí)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
在第一數(shù)據(jù)集合更新過程中,如果接收到對(duì)數(shù)據(jù)庫(kù)的查詢指示,則對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)進(jìn)行識(shí)別,當(dāng)識(shí)別到第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)為正在更新標(biāo)識(shí)后,確定第一數(shù)據(jù)集合處于更新中,之后對(duì)第二數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)進(jìn)行識(shí)別,如果識(shí)別到第二數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)為可查詢標(biāo)識(shí),則選擇第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
本發(fā)明實(shí)施例對(duì)每個(gè)數(shù)據(jù)集合設(shè)置了狀態(tài)標(biāo)識(shí),從接收對(duì)數(shù)據(jù)庫(kù)的更新指示到第一數(shù)據(jù)集合更新結(jié)束的過程中,第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)發(fā)生了多次變化,可以通過識(shí)別不同狀態(tài)標(biāo)識(shí),準(zhǔn)確完成對(duì)第一數(shù)據(jù)集合的更新操作。
依據(jù)本發(fā)明實(shí)施例,數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,在接收對(duì)數(shù)據(jù)庫(kù)的更新指示后,從多個(gè)相同的數(shù)據(jù)集合中任選出第一數(shù)據(jù)集合,更新第一數(shù)據(jù)集合,標(biāo)記第一數(shù)據(jù)集合為不可查詢狀態(tài),接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,在識(shí)別到第一數(shù)據(jù)集合為不可查詢狀態(tài)后,不對(duì)第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,而是選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,實(shí)現(xiàn)了同時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢操作和數(shù)據(jù)更新操作,數(shù)據(jù)更新操作不會(huì)對(duì)數(shù)據(jù)查詢操作造成不良影響,有效保證了更新數(shù)據(jù)庫(kù)時(shí)數(shù)據(jù)庫(kù)的查詢穩(wěn)定性。
在實(shí)際操作過程中,可以結(jié)合實(shí)施例2和實(shí)施例3的方法對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)更新,為使本領(lǐng)域技術(shù)人員更加清楚地理解結(jié)合方法,現(xiàn)通過下述示例對(duì)結(jié)合方法進(jìn)行詳細(xì)說明。
示例
本示例采用Mongo DB數(shù)據(jù)庫(kù)作為數(shù)據(jù)源,選擇C++編寫的HTTP(超文本傳送協(xié)議,Hypertext transfer protocol)服務(wù)作為數(shù)據(jù)查詢方;選擇由python語(yǔ)言編寫的程序作為數(shù)據(jù)更新方,定時(shí)從分布式文件系統(tǒng)(HDFS,Hadoop Distributed File System)中提取數(shù)據(jù)并用提取的業(yè)務(wù)數(shù)據(jù)對(duì)數(shù)據(jù)庫(kù)中的業(yè)務(wù)數(shù)據(jù)進(jìn)行更新。
本示例中,Mongo DB數(shù)據(jù)庫(kù)中包括兩個(gè)相同的數(shù)據(jù)集合,每個(gè)數(shù)據(jù)集合中的業(yè)務(wù)數(shù)據(jù)記錄于數(shù)據(jù)表中。在接收對(duì)數(shù)據(jù)庫(kù)的更新指示之前,兩個(gè)相同的數(shù)據(jù)集合位于數(shù)據(jù)查詢池中,在接收對(duì)數(shù)據(jù)庫(kù)的查詢指示之后,從兩個(gè)數(shù)據(jù)集合中任選出一個(gè)數(shù)據(jù)集合作為數(shù)據(jù)查詢對(duì)象進(jìn)行數(shù)據(jù)查詢。
本示例對(duì)每個(gè)數(shù)據(jù)集合設(shè)置了一個(gè)狀態(tài)機(jī),每個(gè)狀態(tài)機(jī)對(duì)應(yīng)一個(gè)狀態(tài)表,狀態(tài)表中存儲(chǔ)的信息包括:1、數(shù)據(jù)集合的讀寫狀態(tài),用狀態(tài)標(biāo)識(shí)表示;2、數(shù)據(jù)集合與數(shù)據(jù)池的連接記號(hào),用位置信息表示。具體地,使用數(shù)字標(biāo)記狀態(tài)標(biāo)識(shí),包括0-可讀狀態(tài)、1-準(zhǔn)備更新請(qǐng)求、2-準(zhǔn)備更新確認(rèn)、3-正在更新四種;使用字母標(biāo)記數(shù)據(jù)集合的位置信息,包括A-數(shù)據(jù)集合位于數(shù)據(jù)查詢池中、B-數(shù)據(jù)集合位于數(shù)據(jù)更新池中。
圖4示出了根據(jù)本發(fā)明一個(gè)示例的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法的流程圖;圖5示出了根據(jù)本發(fā)明一個(gè)示例的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理方法的示意圖;圖6示出了根據(jù)本發(fā)明一個(gè)示例的第一數(shù)據(jù)集合的第一狀態(tài)表的變化過程示意圖。結(jié)合圖5和圖6可以更加清楚地理解圖4所述的方法,圖4所述方法具體可以包括以下步驟:
S1、接收對(duì)數(shù)據(jù)庫(kù)的更新指示,從兩個(gè)數(shù)據(jù)集合中選擇第一數(shù)據(jù)集合,更改第一數(shù)據(jù)集合的第一狀態(tài)表,將狀態(tài)標(biāo)識(shí)從0更改為1。
S2、檢測(cè)到第一數(shù)據(jù)表中的狀態(tài)標(biāo)識(shí)1后,將第一數(shù)據(jù)集合從數(shù)據(jù)查詢池移至數(shù)據(jù)更新池中,間隔預(yù)設(shè)10s后,刪除第一狀態(tài)表中的位置信息A,即刪除第一數(shù)據(jù)集合與數(shù)據(jù)查詢池的連接記號(hào),在第一狀態(tài)表中新增位置信息B,即增加第一數(shù)據(jù)集合與數(shù)據(jù)更新池的連接記號(hào)。
S3、檢測(cè)到第一狀態(tài)表中的位置信息B后,將狀態(tài)標(biāo)識(shí)從1更改為2;進(jìn)一步在檢測(cè)到第一狀態(tài)表中的狀態(tài)標(biāo)識(shí)2后,開始對(duì)第一數(shù)據(jù)集合進(jìn)行更新,將狀態(tài)標(biāo)識(shí)從2更改為3。
在更新第一數(shù)據(jù)集合過程中,數(shù)據(jù)更新方從分布式文件系統(tǒng)獲取新數(shù)據(jù),并使用獲取的新數(shù)據(jù)對(duì)第一數(shù)據(jù)集合中的數(shù)據(jù)進(jìn)行全量更新,將新數(shù)據(jù)寫入第一數(shù)據(jù)集合的數(shù)據(jù)表中。
在更新第一數(shù)據(jù)集合過程中,如果接收到數(shù)據(jù)查詢方對(duì)數(shù)據(jù)庫(kù)發(fā)送的查詢指示,則在識(shí)別到第一狀態(tài)表中的狀態(tài)標(biāo)識(shí)3后,確定第一數(shù)據(jù)集合處于更新狀態(tài),數(shù)據(jù)查詢方會(huì)選擇攜帶有狀態(tài)標(biāo)識(shí)0的數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
更新第一數(shù)據(jù)集合時(shí),如果對(duì)第一數(shù)據(jù)集合中的業(yè)務(wù)數(shù)據(jù)采用傳統(tǒng)的數(shù)據(jù)標(biāo)識(shí)識(shí)別-更新的數(shù)據(jù)更新方法,則需要進(jìn)行大量的數(shù)據(jù)標(biāo)識(shí)識(shí)別操作。由于大量的數(shù)據(jù)標(biāo)識(shí)識(shí)別操作需要耗費(fèi)大量的時(shí)間,因此會(huì)導(dǎo)致數(shù)據(jù)集合更新耗時(shí)較長(zhǎng)、數(shù)據(jù)集合更新效率較低等問題的產(chǎn)生。為了解決上述問題,本示例采用全量更新方法對(duì)第一數(shù)據(jù)集合中的業(yè)務(wù)數(shù)據(jù)進(jìn)行更新,省去了大量的數(shù)據(jù)標(biāo)識(shí)識(shí)別操作,簡(jiǎn)化了數(shù)據(jù)集合更新操作的操作步驟,提高了數(shù)據(jù)集合的更新效率。
同時(shí)全量更新方法可以有效刪除數(shù)據(jù)庫(kù)中的失效數(shù)據(jù),省去查詢數(shù)據(jù)庫(kù)中失效數(shù)據(jù)的時(shí)間,從而提高了數(shù)據(jù)查詢速度。數(shù)據(jù)集合中的大量業(yè)務(wù)數(shù)據(jù)可以記錄于數(shù)據(jù)表中,可以對(duì)第一數(shù)據(jù)集合所對(duì)應(yīng)的數(shù)據(jù)表進(jìn)行全量更新,有效刪除數(shù)據(jù)表中的失效標(biāo)識(shí),從而提高了針對(duì)第一數(shù)據(jù)集合的數(shù)據(jù)查詢速度。
S4、待第一數(shù)據(jù)集合更新結(jié)束,將第一狀態(tài)表中的狀態(tài)標(biāo)識(shí)3更改為0;進(jìn)一步在檢測(cè)到第一狀態(tài)表中的狀態(tài)標(biāo)識(shí)0后,將第一數(shù)據(jù)集合移回至數(shù)據(jù)查詢池中。
S5、在數(shù)據(jù)查詢池中,將第一數(shù)據(jù)集合的第一狀態(tài)表中的位置信息B更改為位置信息A。
S6、按照上述步驟S1-S5的方法對(duì)第二數(shù)據(jù)集合進(jìn)行更新操作。
本示例針對(duì)數(shù)據(jù)集合設(shè)置了狀態(tài)標(biāo)識(shí)和位置信息,可以通過對(duì)狀態(tài)標(biāo)識(shí)和位置信息的識(shí)別和更改操作,實(shí)現(xiàn)對(duì)更新第一數(shù)據(jù)集合的多個(gè)操作步驟的準(zhǔn)確控制,準(zhǔn)確完成了對(duì)第一數(shù)據(jù)集合的更新操作。
實(shí)施例4
參考圖7,示出了根據(jù)本發(fā)明實(shí)施例1的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖,具體可以包括:
更新指示接收模塊401,用于接收對(duì)數(shù)據(jù)庫(kù)的更新指示,數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合。
第一數(shù)據(jù)集合選擇模塊402,用于從所述多個(gè)相同的數(shù)據(jù)集合中選擇第一數(shù)據(jù)集合。
第一數(shù)據(jù)集合更新模塊403,用于更新所述第一數(shù)據(jù)集合,標(biāo)記第一數(shù)據(jù)集合為不可查詢狀態(tài)。
查詢指示接收模塊404,用于接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
依據(jù)本發(fā)明實(shí)施例,數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,在接收對(duì)數(shù)據(jù)庫(kù)的更新指示后,從多個(gè)相同的數(shù)據(jù)集合中任選出第一數(shù)據(jù)集合,更新第一數(shù)據(jù)集合,標(biāo)記第一數(shù)據(jù)集合為不可查詢狀態(tài),接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,在識(shí)別到第一數(shù)據(jù)集合為不可查詢狀態(tài)后,不對(duì)第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,而是選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,實(shí)現(xiàn)了同時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢操作和數(shù)據(jù)更新操作,數(shù)據(jù)更新操作不會(huì)對(duì)數(shù)據(jù)查詢操作造成不良影響,有效保證了更新數(shù)據(jù)庫(kù)時(shí)數(shù)據(jù)庫(kù)的查詢穩(wěn)定性。
實(shí)施例5
參考圖8,示出了根據(jù)本發(fā)明實(shí)施例2的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖,具體可以包括:
更新指示接收模塊501,用于接收對(duì)數(shù)據(jù)庫(kù)的更新指示,數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合。
第一數(shù)據(jù)集合選擇模塊502,用于從所述多個(gè)相同的數(shù)據(jù)集合中選擇第一數(shù)據(jù)集合。
第一數(shù)據(jù)池移動(dòng)模塊503,用于將第一數(shù)據(jù)集合從數(shù)據(jù)查詢池移至數(shù)據(jù)更新池,在將第一數(shù)據(jù)集合從數(shù)據(jù)查詢池移至數(shù)據(jù)更新池之前,第一數(shù)據(jù)集合攜帶第一數(shù)據(jù)集合位于數(shù)據(jù)查詢池的第一位置信息。
第一位置信息更改模塊504,用于待第一數(shù)據(jù)集合的當(dāng)前查詢結(jié)束之后,更改第一位置信息為第一數(shù)據(jù)集合位于數(shù)據(jù)更新池的第二位置信息。
位置信息監(jiān)控模塊505,用于監(jiān)控到第一數(shù)據(jù)集合攜帶第二位置信息。
第一數(shù)據(jù)集合更新模塊506,用于在數(shù)據(jù)更新池中對(duì)第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)更新,標(biāo)記第一數(shù)據(jù)集合為不可查詢狀態(tài)。
查詢指示接收模塊507,用于接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
第二數(shù)據(jù)池移動(dòng)模塊508,用于在第一數(shù)據(jù)集合更新結(jié)束之后,將第一數(shù)據(jù)集合從數(shù)據(jù)更新池移回至數(shù)據(jù)查詢池中。
第二位置信息更改模塊509,用于更改第一數(shù)據(jù)集合攜帶的第二位置信息為第一位置信息。
本發(fā)明實(shí)施例中,優(yōu)選地,所述裝置還包括:
報(bào)警操作執(zhí)行模塊,用于若在所述數(shù)據(jù)更新池中未監(jiān)控到所述第一數(shù)據(jù)集合攜帶有所述第二位置信息,則執(zhí)行報(bào)警操作,在報(bào)警時(shí)段內(nèi)可對(duì)所述數(shù)據(jù)查詢池中的所述第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
依據(jù)本發(fā)明實(shí)施例,數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,在接收對(duì)數(shù)據(jù)庫(kù)的更新指示后,從多個(gè)相同的數(shù)據(jù)集合中任選出第一數(shù)據(jù)集合,更新第一數(shù)據(jù)集合,標(biāo)記第一數(shù)據(jù)集合為不可查詢狀態(tài),接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,在識(shí)別到第一數(shù)據(jù)集合為不可查詢狀態(tài)后,不對(duì)第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,而是選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,實(shí)現(xiàn)了同時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢操作和數(shù)據(jù)更新操作,數(shù)據(jù)更新操作不會(huì)對(duì)數(shù)據(jù)查詢操作造成不良影響,有效保證了更新數(shù)據(jù)庫(kù)時(shí)數(shù)據(jù)庫(kù)的查詢穩(wěn)定性。
并且,在數(shù)據(jù)集合更新之前,將第一數(shù)據(jù)集合從數(shù)據(jù)查詢池移至數(shù)據(jù)更新池,并且將第一數(shù)據(jù)集合攜帶的第一位置信息更改為第二位置信息,將第二位置信息作為數(shù)據(jù)集合更新操作的開始標(biāo)識(shí),在識(shí)別到第一數(shù)據(jù)集合攜帶有第二位置信息后,開始對(duì)第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)更新操作,待第一數(shù)據(jù)集合更新結(jié)束并將其移回至數(shù)據(jù)查詢池后,將第一數(shù)據(jù)集合攜帶的第二位置信息更改回第一位置信息,本發(fā)明基于不同位置信息的更改和識(shí)別操作,確保了對(duì)數(shù)據(jù)集合的多步更新操作的有序進(jìn)行,保證了數(shù)據(jù)更新操作的準(zhǔn)確性。
另外,本發(fā)明還具有很強(qiáng)的容錯(cuò)性,如果更新數(shù)據(jù)庫(kù)的第一數(shù)據(jù)集合的操作出現(xiàn)問題,則會(huì)執(zhí)行報(bào)警操作,這時(shí)仍可對(duì)數(shù)據(jù)庫(kù)的其他數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,在保證數(shù)據(jù)查詢操作正常進(jìn)行的同時(shí),為運(yùn)維人員提供充足時(shí)間解決故障問題。
實(shí)施例6
參考圖9,示出了根據(jù)本發(fā)明實(shí)施例3的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖,具體可以包括:
更新指示接收模塊601,用于接收對(duì)數(shù)據(jù)庫(kù)的更新指示,數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合。
第一數(shù)據(jù)集合選擇模塊602,用于從所述多個(gè)相同的數(shù)據(jù)集合中選擇第一數(shù)據(jù)集合。
第一標(biāo)識(shí)更改模塊603,用于更改第一數(shù)據(jù)集合的可查詢標(biāo)識(shí)為準(zhǔn)備更新請(qǐng)求標(biāo)識(shí),在接收對(duì)數(shù)據(jù)庫(kù)的更新指示之前,第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)為指示可查詢狀態(tài)的可查詢標(biāo)識(shí)。
第一標(biāo)識(shí)檢測(cè)模塊604,用于檢測(cè)到第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)為準(zhǔn)備更新請(qǐng)求標(biāo)識(shí)。
第一數(shù)據(jù)池移動(dòng)模塊605,用于將第一數(shù)據(jù)集合從數(shù)據(jù)查詢池移至數(shù)據(jù)更新池。
第二標(biāo)識(shí)更改模塊606,用于更改第一數(shù)據(jù)集合的準(zhǔn)備更新請(qǐng)求標(biāo)識(shí)至準(zhǔn)備更新確認(rèn)標(biāo)識(shí)。
第二標(biāo)識(shí)檢測(cè)模塊607,用于檢測(cè)到第一數(shù)據(jù)集合的準(zhǔn)備更新確認(rèn)標(biāo)識(shí)。
第一數(shù)據(jù)集合更新模塊608,用于更新第一數(shù)據(jù)集合,同時(shí)更改第一數(shù)據(jù)集合的準(zhǔn)備更新確認(rèn)標(biāo)識(shí)為指示不可查詢狀態(tài)的正在更新標(biāo)識(shí)。
查詢指示接收模塊609,用于接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,選擇標(biāo)記有可查詢標(biāo)識(shí)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢。
依據(jù)本發(fā)明實(shí)施例,數(shù)據(jù)庫(kù)中包括多個(gè)相同的數(shù)據(jù)集合,在接收對(duì)數(shù)據(jù)庫(kù)的更新指示后,從多個(gè)相同的數(shù)據(jù)集合中任選出第一數(shù)據(jù)集合,更新第一數(shù)據(jù)集合,標(biāo)記第一數(shù)據(jù)集合為不可查詢狀態(tài),接收對(duì)數(shù)據(jù)庫(kù)的查詢指示,在識(shí)別到第一數(shù)據(jù)集合為不可查詢狀態(tài)后,不對(duì)第一數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,而是選擇標(biāo)記有可查詢狀態(tài)的第二數(shù)據(jù)集合進(jìn)行數(shù)據(jù)查詢,實(shí)現(xiàn)了同時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢操作和數(shù)據(jù)更新操作,數(shù)據(jù)更新操作不會(huì)對(duì)數(shù)據(jù)查詢操作造成不良影響,有效保證了更新數(shù)據(jù)庫(kù)時(shí)數(shù)據(jù)庫(kù)的查詢穩(wěn)定性。
另外,本發(fā)明還對(duì)每個(gè)數(shù)據(jù)集合設(shè)置了狀態(tài)標(biāo)識(shí),從接收到對(duì)數(shù)據(jù)庫(kù)的更新指示到第一數(shù)據(jù)集合更新結(jié)束的過程中,第一數(shù)據(jù)集合的狀態(tài)標(biāo)識(shí)發(fā)生了多次變化,可以通過識(shí)別不同狀態(tài)標(biāo)識(shí),準(zhǔn)確完成對(duì)第一數(shù)據(jù)集合的更新操作,進(jìn)一步保證了數(shù)據(jù)更新操作的有序性及準(zhǔn)確性。
由于所述裝置實(shí)施例基本相應(yīng)于前述圖1-6所示的方法實(shí)施例,故本實(shí)施例的描述中未詳盡之處,可以參見前述實(shí)施例中的相關(guān)說明,在此就不贅述了。
在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的應(yīng)用于數(shù)據(jù)庫(kù)的數(shù)據(jù)處理裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。