本發(fā)明涉及計(jì)算機(jī)軟件應(yīng)用領(lǐng)域,具體地說是一種實(shí)時(shí)索引數(shù)據(jù)同步的系統(tǒng)及其實(shí)現(xiàn)方法。
背景技術(shù):
隨著云計(jì)算的不斷發(fā)展,各種新技術(shù)以及新興軟件也在不斷產(chǎn)生,倉庫就被我們用來存儲(chǔ)相關(guān)的源碼、程序等資源,例如git倉庫、docker倉庫,maven倉庫等等。由于倉庫的數(shù)據(jù)是實(shí)時(shí)更新的,同時(shí)倉庫數(shù)據(jù)一般都是倉庫名然后對(duì)應(yīng)其具體位置,而且只會(huì)提供所有的倉庫索引而不會(huì)提供太多的接口。如果想查找倉庫的某些特定數(shù)據(jù),就只能先獲取倉庫的所有數(shù)據(jù),然后進(jìn)行遍歷處理,最后才能得到我們想要的結(jié)果。這樣不但會(huì)大大降低性能同時(shí)效率也會(huì)大大降低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是提供一種實(shí)時(shí)索引數(shù)據(jù)同步的系統(tǒng)及其實(shí)現(xiàn)方法,來解決如何能夠把相關(guān)的倉庫索引數(shù)據(jù)同步到結(jié)構(gòu)化數(shù)據(jù)庫中,并保證在一定程度范圍時(shí)間內(nèi)的數(shù)據(jù)實(shí)時(shí)同時(shí),提高索引性能和索引效率的問題。
本發(fā)明的技術(shù)任務(wù)是按以下方式實(shí)現(xiàn)的,一種實(shí)時(shí)索引數(shù)據(jù)同步的系統(tǒng),該系統(tǒng)包括數(shù)據(jù)同步模塊和數(shù)據(jù)處理模塊;
其中,數(shù)據(jù)同步模塊用于從倉庫的索引目錄中輪詢讀取索引數(shù)據(jù),并將索引數(shù)據(jù)保存到數(shù)據(jù)庫中;
數(shù)據(jù)處理模塊用于接受客戶端的業(yè)務(wù)請(qǐng)求,根據(jù)客戶端的業(yè)務(wù)請(qǐng)求從數(shù)據(jù)庫中讀取數(shù)據(jù),并將索引結(jié)果反饋給客戶端。
一種實(shí)時(shí)索引數(shù)據(jù)同步的實(shí)現(xiàn)方法,該方法包括如下步驟:
(1)、數(shù)據(jù)同步模塊輪詢讀取倉庫的索引目錄;
(2)、數(shù)據(jù)同步模塊將讀取索引目錄的數(shù)據(jù)同步到數(shù)據(jù)庫中;
(3)、數(shù)據(jù)庫對(duì)索引目錄中的每一條數(shù)據(jù)做時(shí)間標(biāo)記,并記錄第一條數(shù)據(jù)的時(shí)間FIRST_TIME,當(dāng)更新完最后一條數(shù)據(jù)時(shí),刪除時(shí)間小于第一條數(shù)據(jù)時(shí)間標(biāo)記FIRST_TIME的所有數(shù)據(jù);
(4)、客戶端向數(shù)據(jù)處理模塊發(fā)送業(yè)務(wù)請(qǐng)求,數(shù)據(jù)處理模塊對(duì)數(shù)據(jù)庫中的數(shù)據(jù)作相應(yīng)的數(shù)據(jù)處理操作并將索引結(jié)果反饋給客戶端;
(5)、客戶端獲取到具體倉庫地址,便可去倉庫中獲取資源。
作為優(yōu)選,所述步驟(1)中數(shù)據(jù)同步模塊采用多批次多批量讀取索引目錄的數(shù)據(jù)。
作為優(yōu)選,所述步驟(2)中數(shù)據(jù)同步模塊將索引目錄的數(shù)據(jù)同步到數(shù)據(jù)庫的過程中,查看索引目錄中的每一條數(shù)據(jù)是否存在:
①、若存在,則對(duì)數(shù)據(jù)進(jìn)行更新;
②、若不存在,則新增該條數(shù)據(jù)。
本發(fā)明的實(shí)時(shí)索引數(shù)據(jù)同步的系統(tǒng)及其實(shí)現(xiàn)方法具有以下優(yōu)點(diǎn):
1、本發(fā)明解決了數(shù)據(jù)的實(shí)時(shí)同步問題,通過多批次遍歷數(shù)據(jù)源解決單次獲取所有數(shù)據(jù)帶來的性能問題,通過時(shí)間標(biāo)記解決數(shù)據(jù)的一致性問題,同時(shí)保證了兼容性,在各種應(yīng)用系統(tǒng)中使用簡便、配置難度低,具有很好的推廣使用價(jià)值;
2、本發(fā)明在云計(jì)算場景下索引數(shù)據(jù)同步的實(shí)現(xiàn)方法,把相關(guān)的倉庫索引目錄的數(shù)據(jù)同步到結(jié)構(gòu)化數(shù)據(jù)庫當(dāng)中,并保證在一定程度范圍時(shí)間內(nèi)的數(shù)據(jù)實(shí)時(shí)同步,這樣大大節(jié)省了性能同時(shí)提高了效率;
3、本發(fā)明實(shí)現(xiàn)了數(shù)據(jù)同步與數(shù)據(jù)處理相分離,在同步數(shù)據(jù)時(shí)輪詢讀取索引數(shù)據(jù),采取多批次批量讀取方式,確保了數(shù)據(jù)的實(shí)時(shí)同步,同時(shí)客戶端僅僅與數(shù)據(jù)處理模塊交互,操作簡單易實(shí)現(xiàn),而且大大提高了工作效率。
故本發(fā)明具有設(shè)計(jì)合理、結(jié)構(gòu)簡單、使用方便、一物多用等特點(diǎn),因而,具有很好的推廣使用價(jià)值。
附圖說明
下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說明。
附圖1為實(shí)時(shí)索引數(shù)據(jù)同步系統(tǒng)框圖。
具體實(shí)施方式
參照說明書附圖和具體實(shí)施例對(duì)本發(fā)明的實(shí)時(shí)索引數(shù)據(jù)同步的系統(tǒng)及其實(shí)現(xiàn)方法作以下詳細(xì)地說明。
實(shí)施例1:
如附圖1所示,本發(fā)明的實(shí)時(shí)索引數(shù)據(jù)同步的系統(tǒng)及其實(shí)現(xiàn)方法, 該系統(tǒng)包括數(shù)據(jù)同步模塊和數(shù)據(jù)處理模塊;
其中,數(shù)據(jù)同步模塊用于從倉庫的索引目錄中輪詢讀取索引數(shù)據(jù),并將索引數(shù)據(jù)保存到數(shù)據(jù)庫中;
數(shù)據(jù)處理模塊用于接受客戶端的業(yè)務(wù)請(qǐng)求,根據(jù)客戶端的業(yè)務(wù)請(qǐng)求從數(shù)據(jù)庫中讀取數(shù)據(jù),并將索引結(jié)果反饋給客戶端。
實(shí)施例2:
本發(fā)明的實(shí)時(shí)索引數(shù)據(jù)同步的實(shí)現(xiàn)方法,該方法包括如下步驟:
(1)、數(shù)據(jù)同步模塊輪詢讀取倉庫的索引目錄;數(shù)據(jù)同步模塊采用多批次多批量讀取索引目錄的數(shù)據(jù);
(2)、數(shù)據(jù)同步模塊將讀取索引目錄的數(shù)據(jù)同步到數(shù)據(jù)庫中;數(shù)據(jù)同步模塊將索引目錄的數(shù)據(jù)同步到數(shù)據(jù)庫的過程中,查看索引目錄中的每一條數(shù)據(jù)是否存在:
①、若存在,則對(duì)數(shù)據(jù)進(jìn)行更新;
②、若不存在,則新增該條數(shù)據(jù);
(3)、數(shù)據(jù)庫對(duì)索引目錄中的每一條數(shù)據(jù)做時(shí)間標(biāo)記,并記錄第一條數(shù)據(jù)的時(shí)間FIRST_TIME,當(dāng)更新完最后一條數(shù)據(jù)時(shí),刪除時(shí)間小于第一條數(shù)據(jù)時(shí)間標(biāo)記FIRST_TIME的所有數(shù)據(jù);
(4)、客戶端向數(shù)據(jù)處理模塊發(fā)送業(yè)務(wù)請(qǐng)求,數(shù)據(jù)處理模塊對(duì)數(shù)據(jù)庫中的數(shù)據(jù)作相應(yīng)的數(shù)據(jù)處理操作并將索引結(jié)果反饋給客戶端;
(5)、客戶端獲取到具體倉庫地址,便可去倉庫中獲取資源。
通過上面具體實(shí)施方式,所述技術(shù)領(lǐng)域的技術(shù)人員可容易的實(shí)現(xiàn)本發(fā)明。但是應(yīng)當(dāng)理解,本發(fā)明并不限于上述的兩種具體實(shí)施方式。在公開的實(shí)施方式的基礎(chǔ)上,所述技術(shù)領(lǐng)域的技術(shù)人員可任意組合不同的技術(shù)特征,從而實(shí)現(xiàn)不同的技術(shù)方案。
除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。